Post
Servlet Get,Post 동작
Get, Post방식
- Client가 요청할 때 Get, Post 방식이 있다.
- Get방식은 URL 값으로 정보가 전송되어 보안에 약함
- Post방식은 header를 이용해 정보가 전송되어 보안에 강함.
Get방식
- html내 form 태그의 method 속성이 get일 경우 호출됨.
- HttpServletRequest 요청 처리 객체
- HttpServletResponse 응답 처리 객체
- response.setContentType("text/html") text/html로 응답을 보내겠다는 의미
- html문법을 쓸 수 없기 때문에 PrintWriter class로 html 문법 사용 가능
Post방식
- jsp파일에 method가 post인 form을 생성한다.
- form action은 이동할 url 값으로 설정한다.
<form action="hw" method="post">
<input type="submit" value="post">
</form>
Context Path
- WSA에서 웹 어플리케이션을 구분하기 위한 Path.
- 이클립스에서 프로젝트를 생성하면, 자동으로 server.xml에 추가됨.
- http://localhost:8090/ex/hw
<Context docBase="ex" path="/ex" reloadable="true" source="org.eclipse.jst.jee.server:ex"/></Host>
Servlet 작동순서
- 클라이언트에서 servlet 요청이 들어오면 서버에서는 servlet 컨테이너를 만들고 요청이 있을 때마다 스레드 생성.
- 보통 web Server는 요청이 많을수록 객체를 생성해서 느려진다.
- Servlet은 JVM 위에 MultiThread로 처리할 수 있어서 부하가 적다.
- Servlet 객체 생성(최초)->Init() 호출(최초)->service(), doGet(), doPost() 호출(요청시)->destroy() 호출(마지막 한번, 서버 재가동 등..)
- Init()호출 전 선처리 @PostConstruct 가 호출됨.
- destory()호출 후 후처리 @PreDestroy가 호출됨.
form 태그
- 서버쪽으로 정보를 전달할 때 사용.
- ex) <form action = "Form" method="post">
- action : 요청하는 컴포넌트 이름(join.jsp , info.gtml)
- post : 요청을 처리하는 방식(get, post)
- Get : local:8090/컨텍스트/path/MemberJoin?id="abcd"&name="ww"
- Post : local:8090/컨텍스트/path/MemberJoin
- 아래는 jsp, servlet 예제
jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="FormEx" method="post">
이름:<input type="text" name="name" size="10"><br/>
아이디:<input type="text" name="id" size="10"><br/>
비밀번호:<input type="password" name="pw" size="10"><br/>
취미:<input type="checkbox" name="hobby" value="read">독서
<input type="checkbox" nam="hobbpy" value="cook">요리
<input type="checkbox" nam="hobbpy" value="run">조깅
<input type="checkbox" nam="hobbpy" value="swim">수영
<input type="checkbox" nam="hobbpy" value="sleep">취침<br/>
<input type="radio" name="major" value="kor">국어
<input type="radio" name="major" value="checked">영어
<input type="radio" name="major" value="mat">수학
<input type="radio" name="major" value="des">디자인<br/>
<select name="protocol">
<option value="http">http</option>
<option value="ftp" selected="selected">ftp</option>
<option value="smtp">smtp</option>
<option value="pop">pop</option>
</select><br/>
<input type="submit" value="전송">
<input type="reset" value="초기화">
</form>
</body>
</html>
servlet
package com.java.w; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class FormEx */ @WebServlet("/FormEx") public class FormEx extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public FormEx() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); System.out.println("doPost"); String id = request.getParameter("id"); String pw = request.getParameter("pw"); String[] hobbys = request.getParameterValues("hobby"); String major = request.getParameter("major"); String protocol = request.getParameter("protocol"); response.setContentType("text/html; charset=EUC-KR"); PrintWriter writer = response.getWriter(); writer.println(""); writer.println("아이디:"+id+"
"); writer.println("비밀번호:"+pw+"
"); writer.println("취미:"+Arrays.toString(hobbys)+"
"); writer.println("전공:"+major+"
"); writer.println("프로토콜:"+protocol); writer.println(""); writer.close(); } }
한글처리
- Tomcat 서버의 기본 문자 처리 방식은 IOS-8859-1 방식.
- 별도의 인코딩을 하지 않으면 한글이 깨져보임
- server.xml 수정
- <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443"/>
- servlet 인코딩 세팅 추가
- request.setCharacterEncoding("UTF-8");
'이전게시판 > JSP' 카테고리의 다른 글
JDBC로 OLACLE 접속 (0) | 2018.10.22 |
---|---|
JSP 쿠키, Session, 예외 페이지, 자바빈 (0) | 2018.10.21 |
JSP 태그, request, response, 지시자, 액션태그 (0) | 2018.10.20 |
Servlet 값 초기화, 리스너 (0) | 2018.10.20 |
Servlet 설정, 예제 (0) | 2018.10.18 |
JSP 설치, 설정, 실행 (0) | 2018.10.18 |