일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- pytthon
- 서브쿼리
- foreignkey
- live server
- visual studio code
- date_add
- 생성
- 입력
- 삭제
- 테이블
- 리눅스 명령어
- now()
- java
- 줄바꿈
- primarykey
- 조인
- cmd
- EQUI
- select
- substring
- word wrap
- 데이터베이스
- Linux
- 집계 함수
- groupby
- MySQL
- 데이터타입
- DISTINCT
- DB접속
- 3306
Archives
- Today
- Total
재유's
[JSP] 웹 페이지 상태유지 기법 - GET & POST 본문
JSP 웹 페이지 상태유지 기법
하나의 JSP페이지에서 정의한 변수는 링크를 통해 페이지가 이동된 후에는 유실된다.
페이지가 이동되는 과정에서 변수의 값을 그대로 다음 페이지에서 인식할 수 있도록 처리하는 기법을 상태유지 기법이라고 한다.
주요 상태유지 기법
- get
- post
- cookie
- session
HTTP GET방식의 데이터 전송
데이터를 URL에 포함하여 링크를 통해 값을 전달하는 방식
- URL의 총 길이가 1024byte로 제한되기 때문에 전송할 수있는 데이터에 한계가 있다.
- 모든 데이터가 URL에 그대로 노출되기 때문에 보안이 필요한 경우 적용하지 않는 것이 좋다.
- 한글이나 공백은 URLEncoding 처리를 해야만 정송할 수 있다.
데이터 전송방법
URL뒤에 ?를 명시하고 이름=값&이름=값의 형태로 설정한다.
1 2 3 4 5 6 7 | <% String name= "개발자"; int w = 72; int h = 175; %> <a href="hello.jsp?name<%=URLEncoder.encode(name)%>&width=<%=w%>&height=<%=h%>">click</a> |
데이터 수신 방법
- 데이터가 전송된 페이지에서는 request 내장객체에 이전 페이지로부터 전송된 변수가 저장된다.
- URL에 명시한 변수이름을 getParameter()메서드에 전달하여 값을 리턴받는다.
1 2 3 4 5 6 7 8 9 | <% // 모든 페이지에서 파라미터 수신 전 1회 수행해야 함. request.setCharacterEncoding("UTF-8"); // 전달한 값의 형식에 상관 없이 모두 String으로 리턴된다. String name = request.getParameter("name"); String w = request.getParameter("width"); String h = request.getParameter("height"); %> |
HTTP POST 방식의 데이터 전송
- HTML의 <form>태그 내에 포함되어 있는 <input> 태그에 입력한 내용을 전송하기 위한 방법
- 전송할 수 있는 데이터에 한계가 없다.
- 보통 20MB(백과사전정보를 보내고도 남는 용량)로 설정되어 있기때문에 GET방식에 비해서 상대적으로 한계가 없다.
- 전송하는 내용이 URL에 노출되지 않기 때문에 GET방식에 비해서 상대적으로 보안에 유리하다. (절대적으로 안전하지는 않당!)
- 한글이나 공백에 대한 URLEncoding 처리가 필요 없다.
데이터 전송 방법
- <form> 태그의 method 속성에 post라고 명시
- action속성에 데이터를 수신할 jsp페이지의 URL(경로)를 지정
- 이 <form> 내의 submit버튼이 눌러졌을때 모든 input 요소에 대한 입력값(value속성 값)이 전송된다.
1 2 3 4 5 | <form method="post" action="post.jsp"> <input type="text" name="hello" /> <input type="text" name="world" /> <button type="submit">click</button> </form> |
데이터 수신방법
- 데이터가 전송된 페이지에서는 get방식과 동일하게 처리한다.
- <input>태그에 명시한 name속성의 값을 request.getParameter()에 파라미터로 전달하여 입력값을 리턴받는다.
1 2 3 4 5 6 7 8 | <% // 모든 페이지에서 파라미터 수신 전 1회 수행해야 함. request.setCharacterEncoding("UTF-8"); // 전달한 값의 형식에 상관 없이 모두 String으로 리턴된다. String hello = request.getParameter("hello"); String world = request.getParameter("world"); %> |
GET/POST 파라미터 수신시 주의사항
- 전송된 값이 null일 수 있다.
- null이 아니더라도 빈 문자열("")일 수 있다.
위의 두 가지 상황에 대한 예외처리를 if문으로 먼저 처리한 후 필요한 로직을 구현한다.
ex)원하는 형태의 값이 전달되는 않은 경우 임의의 기본값으로 처리하기.
1 2 3 4 5 6 7 | <% String hello = request.getParameter("hello"); if(hello == null || hello.equal("")){ hello = "안녕하세요"; } %> |
페이지 상태 유지
GET방식의 경우
이전 페이지에서 전달된 파라미터를 URL에 누적시켜 전달한다.
1 2 3 4 5 | <% String w = request.getParameter("w"); String h = request.getParameter("h"); %> <a href="hello.jsp?w=<%=w%>&h=<%=h%>&name=helloworld">click</a> |
POST방식의 경우
이전페이지에서 전달된 파라미터를 hidden field에 포함시켜 submit 처리한다.
1 2 3 4 5 6 7 8 | <% String w = request.getParameter("w"); String h = request.getParameter("h"); %> <form method="post" action="foo.jsp"> <input type="hidden" name="w" value="<%=w%>" /> <input type="hidden" name="h" value="<%=h%>" /> </form> |
'IT Story > JSP' 카테고리의 다른 글
[JSP] 웹 페이지 상태유지 기법 - Cookie & Session, 쿠키&세션 (0) | 2019.03.12 |
---|---|
[JSP] 웹 페이지 강제 이동처리 (0) | 2019.03.12 |
Comments