jQuery를 이용하지 않아도 쿠키 핸들링은 가능합니다.
하지만 jQuery Cookie 플러그인은 이미 만들어져있고
사용법 또한 간단하기때문에 포스팅 하게되었습니다.
이번 포스팅에서 다룰 내용은
쿠키정보 저장 및 불러오기, 정보 삭제 등에
대한 내용을 작성하도록 하겠습니다.
제일먼저 jQuery Cookie 플러그인 js파일을 다운받아야 겠죠?
https://github.com/carhartl/jquery-cookie
접속하셔서 Download ZIP버튼을 클릭하여 플러그인을 받습니다.
다운로드 받으셨다면 압축해제 후 src 디렉토리 안에 있는 jquery.cookie.js 파일을
해당 프로젝트내에 include해줍니다.
보통 쿠키는 보안이 좋지 않기때문에 간단한 정보를 담는정도로만 사용하셔야합니다.
예를들어 로그인페이지에서 체크박스클릭으로 아이디 저장기능정도(?)로 사용하시면 되겠습니다.
그럼 로그인화면을 예로들어서 쿠키플러그인을 사용해보도록 하겠습니다.
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="jquery.cookie.js"></script>
아이디 : <input type="text" id="login_id" /><br/> 아이디저장 <input type="checkbox" id="rememberid" /><br/> <input type="button" id="login_button" value="로그인" />
$(function(){ //최초 쿠키에 login_id라는 쿠키값이 존재하면 var login_id = $.cookie('login_id'); if(login_id != undefined) { //아이디에 쿠키값을 담는다 $("#login_id").val(login_id); //아이디저장 체크박스 체크를 해놓는다 $("#rememberid").prop("checked",true); } //로그인 버튼 클릭시 $("#login_button").click(function(){ //아이디 미입력시 if($.trim($("#login_id").val()) == "") { alert("아이디를 입력하세요"); return; //아이디 입력시 } else { //아이디저장 체크되어있으면 쿠키저장 if($("#rememberid").prop("checked")) { $.cookie('login_id', $("#login_id").val()); //아이디저장 미체크면 쿠키에 정보가 있던간에 삭제 } else { $.removeCookie("login_id"); } alert("로그인!!"); } }) })
스크립트 코드를 보시면 주석으로 설명을 달아놓았습니다.
쿠키 값을 불러올 경우 $.cookie("저장된쿠키의key값") 으로 값을 불러왔습니다.
이 사용은 get을 의미합니다.
※ 존재하지 않는 쿠키값일경우 undefined값이므로 조건 체크를 해주셔야 하겠습니다.
다음은 로그인 버튼 클릭시 체크박스 유무에 따라서
체크박스 체크시 : $.cookie("저장할쿠키key값","저장할쿠키값") 으로 특정 쿠키명에 값을 저장해주었습니다.
이 부분은 set을 의미합니다.
체크박스 해제시 : $.removeCookie("삭제할쿠키key값") 을 사용하였습니다.
참 심플하지 않은가요? ^^???
추가로 쿠키값 set을 해줄경우 추가적인 몇가지 옵션에 대해서 간단하게 설명을 드리겠습니다.
$.cookie('쿠키명','쿠키값',{ //쿠키보관일 expires : 5 //도메인 ,domain : 'http://hellogk.tistory.com' //https/http 결정 ,secure : false });
위 설정에보시면 쿠키값 저장해주실때 추가로 속성을 정의하실수 있습니다.
1. expires - 생성한후 만료일자를 정해주는것입니다. 값에 5라고 정할경우 5일동안 정보를 저장합니다.
2. domain - 쿠키 저장할 도메인인대 거의 사용되지 않는 옵션일거 같습니다.
3. secure - HTTPS 프로토콜 사용시 true 속성을 되겠습니다.
위 속성외에도 path라고 쿠키 경로를 설정하는 것이 있는데 뭔지 정확하게 몰라서 있다는 정도만 알아두시면 되겠습니다 ^^;;
초기 화면
아무래도 쿠키정보가 전혀없으니 현재는 빈값입니다.
아이디저장체크안하고 아이디입력후 로그인버튼 클릭
확인버튼 클릭후 새로고침
새로고침 결과 쿠키정보를 저장안했으므로 빈값이 Load 되었습니다.
이어서, 쿠키정보를 저장하도록 해보겠습니다.
아이디저장체크후 로그인버튼 클릭
확인버튼 클릭 후 새로고침
새로고침한 다음에 아이디 text태그에 입력값이 들어가고
아이디저장 체크박스에 체크가 되어러 로드된것을 확인할 수 있었습니다.
by 개발로짜
jqGrid 플러그인을 이용하여 그리드 연동 및 목록 출력시켜보기 + ajax 페이징 포함 (7) | 2014.11.10 |
---|---|
jQuery Validation 플러그인을 이용하여 손쉽게 검증하기 (1) | 2014.10.22 |
jQuery blockUI 플러그인을 이용하여 레이어팝업(모달) 만들기 (2) | 2014.10.21 |
jQuery tablednd 플러그인을 사용하여 테이블을 드래그앤드롭으로 순서변경하기 (0) | 2014.10.15 |
jQuery jqPlot를 사용하여 선형,원형(파이형),막대형 그래프 생성하기 (9) | 2014.10.15 |
이번시간에는 opencsv를 이용하여 CSV 파일을 생성해보도록 하겠습니다.
공공기관 사이트를 주로 작업을 하다보니 엑셀다운로드외에
팀버너스리의 데이터 개방 형식(?) 이라고
엑셀다운로드 상위파일인 csv 파일다운로드도 제공해야한다는
클라이언트 요구에 의해 만들어본걸 공유해보고자 포스팅하게되었습니다.
샘플코드이므로 단순히 다운로드 로직은 제외하고 csv 파일쓰는 로직만을 다루도록 하겠습니다.
엑셀파일 쓰기/읽기 및 파일다운로드는 다음 링크를 참조해주세요
2014/10/07 - [코드저장소/java] - 자바 다운로드 유틸을 만들어서 웹서버에 등록되있는 파일을 다운로드 하자
2014/10/07 - [코드저장소/java] - 자바 POI를 이용한 엑셀(xls,xlsx)에 들어있는 데이터들 읽어오기
2014/10/07 - [코드저장소/java] - POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기
제일먼저 Open csv 라이브러리를 다운로드 받도록 하겠습니다.
http://sourceforge.net/projects/opencsv/
opencsv-3.0.jar 파일이 최종버전인거 같네요.
저는 JAVA PROJECT를 생성한후 JAR파일을 INCLUDE 해준다음 진행하였습니다.
아마 보통은 웹프로젝트로 작업을 많이 하시니
Dynamic Web Project 로 진행하시는 분들은 lib
디렉토리 내에 jar 파일을 넣어주시면 되겠고
Maven으로 프로젝트 진행하시는 분들은 pom.xml에
<dependency> <groupId>net.sf.opencsv</groupId> <artifactId>opencsv</artifactId> <version>2.3</version> </dependency>
dependency를 추가해주시면 되실거 같습니다.
Maven에 올라온 최종버전은 2.3이네요;
package opencsv; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import au.com.bytecode.opencsv.CSVWriter; public class Test { public static void main(String ar[]) { //========가상의 DB조회리스트======== Map<String, Object> hmap = null; ArrayList<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); hmap = new HashMap<String, Object>(); hmap.put("one", 1); hmap.put("two", "한글1"); list.add(hmap); hmap = new HashMap<String, Object>(); hmap.put("one", 11); hmap.put("two", "한글22"); list.add(hmap); hmap = new HashMap<String, Object>(); hmap.put("one", 111); hmap.put("two", "한글3"); list.add(hmap); //========가상의 DB조회리스트======== try { /** * csv 파일을 쓰기위한 설정 * 설명 * D:\\test.csv : csv 파일저장할 위치+파일명 * EUC-KR : 한글깨짐설정을 방지하기위한 인코딩설정(UTF-8로 지정해줄경우 한글깨짐) * ',' : 배열을 나눌 문자열 * '"' : 값을 감싸주기위한 문자 **/ CSVWriter cw = new CSVWriter(new OutputStreamWriter(new FileOutputStream("D:\\test.csv"), "EUC-KR"),',', '"'); try { for(Map<String, Object> m : list) { //배열을 이용하여 row를 CSVWriter 객체에 write cw.writeNext(new String[] { String.valueOf(m.get("one")),String.valueOf(m.get("two"))}); } } catch (Exception e) { e.printStackTrace(); } finally { //무조건 CSVWriter 객체 close cw.close(); } } catch (Exception e) { e.printStackTrace(); } } }
샘플 코드를 구현 후 실행해보았습니다.
실행결과 D드라이브의 test.csv란 파일이 생성되었습니다.
엑셀과 메모장으로 확인해보도록 하겠습니다.
메모장 실행
엑셀 실행
실행결과 정상적으로 CSV 파일이 생성되었습니다.
위 코드를 응용하셔서 사용하시면 되겠습니다.
by 개발로짜
JAVA 샘플 - org.w3c.dom을 이용한 XML파일 및 RSS API 파싱하여 데이터 읽어보기 (0) | 2014.11.25 |
---|---|
[JAVA 샘플] 트위터 앱생성 + twitter4j를 이용하여 타임라인(Timeline) 목록 출력하기 (3) | 2014.11.20 |
자바 zxing를 이용하여 QR코드 생성 + 색상코드(hex,rgb,안드로이드그래픽색상) 적용법 (2) | 2014.10.16 |
자바 다운로드 유틸을 만들어서 웹서버에 등록되있는 파일을 다운로드 하자 (5) | 2014.10.07 |
자바 POI를 이용한 엑셀(xls,xlsx)에 들어있는 데이터들 읽어오기 (8) | 2014.10.07 |
보통 웹 프로젝트에서 폼전송을 하기전 필수값 혹은 검증을 하는 절차를 거친다음 DATA SUBMIT을 해줍니다.
보통 ALERT창으로 'XXX값을 입력하세요'라는 형태로 경고창을 띄운 후 return으로 막습니다.
이번에 소개할 jQuery Validation 은 폼 submit 전에 검증을 해주는 플러그인입니다.
jQuery Validation을 사용하면 검증을 통과하지 못할 경우
통과 못한 폼태그 하단에 경고문구를 출력시키고 자동으로 submit을 방지해줍니다.
이 기능을 구현해보기 위해서 연동을 해보도록 하겠습니다.
우선 validation 플러그인제공 URL로 접속을 합니다.
받으셨다면 하단 영역에 Download버튼을 클릭하여 파일을 다운로드 받도록 합니다.
다운로드를 받으셨다면
압축해제후 dist 디렉토리에 존재하는 additional-methods.min.js 와 jquery.validate.min.js
그리고 localization 디렉토리내에 messages_ko.min.js 파일을
웹프로젝트 경로에 INCLUDE 하도록 합니다.
※ min파일말고 일반 js파일들을 include해주셔도 상관없습니다
저는 그냥 용량 적은파일을 선택한것 뿐...
jquery.validate : 검증플러그인 (필수)
additional-methods : 미리 정의된 일부검증 메서드 (선택)
messages_ko : 검증실패시 출력되는 오류에대한 한국어 문구지원(선택)
첫번째로 필수값 체크하는 부분에 대해서 다루어 보도록 하겠습니다.
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> <script type="text/javascript" src="jquery.validate.min.js"></script> <script type="text/javascript" src="additional-methods.min.js"></script> <script type="text/javascript" src="messages_ko.min.js"></script>
다음으로는 폼검증을 위한 HTML파일코드입니다.
<form action=""> <input type="text" name="txt1" required="required"/><br/> <input type="text" name="txt2" /><br/> <input type="text" name="txt3" required="required"/><br/> <input type="text" name="txt4" required="required"/><br/> <input type="submit" value="저장" /> </form>
이어서 자바스크립트 코드입니다.
$(function(){ $("form").validate(); })
위에 대한 사용이 제일 기본코드 양식입니다.
원래 input 태그들의 required="required" 속성은 HTML5의 속성으로 크롬/사파리/파이어폭스 등에는 대부분 지원이 가능하지만
IE의 경우는 10이상에서만 지원이 가능한 속성이므로 모든 브라우저 호환을 위해서 현재는 validation 플러그인을 사용하시면
좋을거 같습니다.
※ validate 함수를 사용하여 form태그안에 들어있는 태그검증을 위해서는 태그들마다 name값은 필수
위 코드 기준으로 실행결과를 확인해 보도록 하겠습니다.
위와같이 태그의 required 속성을 준 태그에 대해서는
빈값으로 submit 전송시 "필수 항목입니다."라는 문구가 출력되는것을
확인하였습니다.
프로젝트에서 검증을 할때는
글자수 체크를 하거나
ajax체크를해서 중복값인지등
다양한 방법도 존재합니다.
validation 플러그인은 규칙까지 별도로 만드는 기능까지 제공해주니 정말 좋은거 같습니다.
그럼 이제 자신만의 규칙을 만들어서 검증하는 코드를 회원가입예를들어 작성해보도록 하겠습니다.
이번코드에서는 INCLUDE한 파일들중 additional-methods, messages_ko JS파일을 제거합니다.
미리 정의되어있는 규칙들을 사용하면 좋지만 영문 + 한국어에 대한 정보가 몇 없어서 직접 규칙을 만들어서 적용을 하겠습니다.
규직작성에 필요한 validate의 속성은
"rules"라는 규칙정의하는 부분과 "
messages"라는 검증실패일 경우 화면에 띄워줄 문구내용의
속성이 필요합니다.
기본적으로 회원가입예제 HTML 코드를 작성해보도록 하겠습니다.
<form action="/test.jsp" id="frm"> 아이디 : <input type="text" name="id" id="id"/><br/> 비밀번호 : <input type="password" name="password" id="password"/><br/> 비밀번호확인 : <input type="password" name="repassword" id="repassword"/><br/> 나이 : <input type="text" name="age" id="age"/><br/> 이름 : <input type="text" name="name" id="name"/><br/> 이메일 : <input type="text" name="email" id="email"/><br/> 홈페이지 : <input type="text" name="homepage" id="homepage"/><br/> <input type="submit" value="회원가입" /> </form>
validate 함수를 사용하시기 위해서는 name값을 설정해주셔야하고
rules라는 규칙정의를 위해서는 id값을 설정해주셔야 하는거 같습니다.
각각의 검증을 위하여 스크립트코드를 다음처럼 작성해보았습니다.
$(function(){ $("form").validate({ //validation이 끝난 이후의 submit 직전 추가 작업할 부분 submitHandler: function() { var f = confirm("회원가입을 완료하겠습니까?"); if(f){ return true; } else { return false; } }, //규칙 rules: { id: { required : true, minlength : 5, remote: "/check_id.jsp" }, password: { required : true, minlength : 3 }, repassword: { required : true, minlength : 3, equalTo : password }, name: { required : true, minlength : 2 }, age: { digits : true }, email: { required : true, minlength : 2, email : true }, homepage: { url : true } }, //규칙체크 실패시 출력될 메시지 messages : { id: { required : "필수로입력하세요", minlength : "최소 {0}글자이상이어야 합니다", remote : "존재하는 아이디입니다" }, password: { required : "필수로입력하세요", minlength : "최소 {0}글자이상이어야 합니다" }, repassword: { required : "필수로입력하세요", minlength : "최소 {0}글자이상이어야 합니다", equalTo : "비밀번호가 일치하지 않습니다." }, name: { required : "필수로입력하세요", minlength : "최소 {0}글자이상이어야 합니다" }, age: { digits : "숫자만입력하세요" }, email: { required : "필수로입력하세요", minlength : "최소 {0}글자이상이어야 합니다", email : "메일규칙에 어긋납니다" }, homepage: { url : "정상적인 URL이 아닙니다" } } }); })
별도로 id 검증부분에 remote라는 속성이 존재합니다.
이 부분은 ajax를 통해서 입력값을 서버페이지로 전달하여
true/false 결과값을 받아서 검증하는 방식입니다.
if(request.getParameter("id").equals("test123")){ out.print(false); } else { out.print(true); }
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 회원가입이 완료되었습니다. </body> </html>
위의 로직흐름을 적어보자면
1. 페이지 로딩
2. 각 입력태그들의 검증절차 진행
id의 경우에는 기본 검증들이 마친 후 다른 입력폼으로 넘어갈경우 remote ajax call이 이루어짐
(false일 경우 messages 속성의 id -> remote 문구 출력)
3. submitHandler 적용하지 않을시 submit 처리 진행
submithandler에서 ajax로 submit로 가능하며 또다른 작업을 진행이 가능합니다.
실행결과를 확인하도록 하겠습니다.
위와같이 간단하게 validation 플러그인을 사용하여 폼 검증을 해보았습니다.
by 개발로짜
jqGrid 플러그인을 이용하여 그리드 연동 및 목록 출력시켜보기 + ajax 페이징 포함 (7) | 2014.11.10 |
---|---|
jQuery Cookie 플러그인을 사용하여 손쉽게 쿠키정보 제어하기 (0) | 2014.10.25 |
jQuery blockUI 플러그인을 이용하여 레이어팝업(모달) 만들기 (2) | 2014.10.21 |
jQuery tablednd 플러그인을 사용하여 테이블을 드래그앤드롭으로 순서변경하기 (0) | 2014.10.15 |
jQuery jqPlot를 사용하여 선형,원형(파이형),막대형 그래프 생성하기 (9) | 2014.10.15 |