서블릿 기본
HTTP (Hyper Text Transfer Protocol)
1) 단순하고 읽기 쉬움
2) 상태를 유지하지 않음 ( stateless )
3) 확장 가능함
서블릿 요청과 응답 API
1) HTTPServletRequest
2) HTTPServletReponse
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
System.out.println("doGet(로그인) 메서드 호출");
}
1) String getParameter(String name)
- name의 값을 알고 있을 때, 그리고 name에 대한 전송된 값을 받아오는 데 사용함.
/* getParameter()을 이용해 <input>태그의 name속성 값으로
전송된 value를 받아옴 */
String userId = request.getParameter("user_id");
String userPw = request.getParameter("user_pw");
2) String[] getParameterValues
- 같은 name에 대해 여러 개의 값을 얻을 때 사용함.
//하나의 name으로 여러 값을 전송하는 경우 getParameterValues()를 이용해 배열 형태로 반환됨
String subject[] = request.getParameterValues("subject");
for(String str : subject) {
System.out.println("선택한 과목 : "+str);
}
3) Enumeration getParameterNames()
- 전송되는 데이터가 많은 경우 name 값을 일일이 기억할 필요없이 이용해서 name
을 얻음
// 전송되어 온 name 속성들만 Enumeration타입으로 받아옴
Enumeration<String> enu = request.getParameterNames();
// 각 name을 하나씩 가져와 대응해서 전송되어 온 값을 출력함
while(enu.hasMoreElements()) {
String name = enu.nextElement();
String[] values = request.getParameterValues(name);
for(String value : values) {
System.out.println("name : "+name+" , value = "+value);
}
}
서블릿의 응답 처리
- doGet() 이나 doPost() 메서드 안에서 처리함.
- HttpServletResponse 객체를 이용함.
- 클라이언트에게 전송할 데이터 종류 (MIME-TYPE)를 지정함.
- 미리 지정해 놓은 데이터 종류로 서블릿에서 브라우저로 전송시 설정해 사용함
- HTML로 전송시 : text/html
- 일반 텍스트로 전송 시 : text/plain
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// 웹 브라우저에서 전송된 데이터의 인토딩 설정
request.setCharacterEncoding("utf-8");
// 응답할 데이터 종류가 html임 설정
response.setContentType("text/html;charset=utf-8");
String userId = request.getParameter("user_id");
String userPw = request.getParameter("user_pw");
// 출력 스트림 PrintWriter 객체
PrintWriter out = response.getWriter();
// 브라우저로 출력할 데이터를 문자열로 연결해서 html태그로 만듦
String data = "<html>";
data += "<body>";
data += "아이디 : "+ userId;
data += "<br>";
data += "패스워드 : "+userPw;
data += "</body>";
data += "</html>";
// html 태그 문자열을 웹브라우저로 출력함
out.print(data);
}
웹 브라우저에서 서블릿으로 데이터 전송 방식
GET 방식 & POST 방식
GET 방식 |
POST 방식 |
-서블릿에 데이터를 전송할 때 데이터가 URL뒤에 name=value 형태로 전송됨 |
- 데이터를 요청 메세지의 body에 담아 전송함. |
- 여러개의 데이터를 전송 할 때는 ‘&’로 구분해서 전송됨 |
|
- URL에 데이터가 노출되므로 보안이 취약함 |
- 보안에 유리함 (암호화,HTTPS) |
- 전송할 수 있는 데이터는 최대 255자임 |
- 전송데이터 용량이 무제한임 (대용량) |
- 기본 전송 방식, 사용이 쉬움 |
- 처리 속도가 GET방식보다 느림. |
- 서블릿에서는 doGet()으로 전송된 데이터를 처리 |
- 서블릿에서는 doPost()를 이용해 데이터를 처리함. |
- 서버의 리소스를 가져오기 위해 설계 |
- 서버에 데이터를 올리기 위해 설계됨. |
- Query String을 통해 데이터를 전달 (소용량) |
|
- 데이터 공유에 유리 |
- 데이터 공유에는 불리 |
- 예)검색엔진에서 검색단어 전송에 이용 |
- 예) 게시판 글쓰기 , 로그인, 회원가입 |
POST 방식으로 서블릿에 요청
// post 방식으로 전송된 데이터를 처리하기 위해 doPost()를 이용함
protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String userId = request.getParameter("user_id");
String userPw = request.getParameter("user_pw");
System.out.println("아이디 : "+userId);
System.out.println("패스워드 : "+userPw);
}
댓글남기기