국비 45일차 서블릿 파라미터 처리(values, names, map)
2021. 3. 12. 20:19
2021.03.12 국비교육 45일차
[TOC]
요청 파라미터 처리 메서드
- doPost 방식으로 보내면 한글이 깨짐 --> 한글처리 해줘야함
getParameter
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//post 한글처리
request.setCharacterEncoding("utf-8");
//요청작업 처리
System.out.println("LoginServlet.doGet() 실행 ==");
String userid = request.getParameter("userid");//html name = "userid"의 value를 String 리턴
String passwd = request.getParameter("passwd");
System.out.println(userid);
System.out.println(passwd);
//응답처리
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("<html><body>");
out.print("이름은" + userid);
out.print("암호는" + passwd);
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("doPost 호출 ===");
doGet(request, response);
}
}
getParameterValues
- name이 같은것들 value찾아옴
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); // 한글인코딩
String [] fruits = request.getParameterValues("fruit");//스트링 배열 리턴
for(String s : fruits) {
System.out.println(s);
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
getParameterNames
- enumerate 활용하여 출력하기
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//post 한글처리
request.setCharacterEncoding("utf-8");
Enumeration<String> keys=request.getParameterNames(); //key값만 Enumeration으로 리턴
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//응답처리
out.print("<html><body>");
while(keys.hasMoreElements()) { //다음키 여부 확인
String key = keys.nextElement();//키값 하나 받기
String value = request.getParameter(key);//키에 해당하는 값 파싱
System.out.println(key + "\t" + value);
out.print(key+ " : " +value + "<br>");
}
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
getParameterMap
package com.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import java.util.Set;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//post 한글처리
request.setCharacterEncoding("utf-8");
Map<String, String[]> map = request.getParameterMap();//String key, String[] value
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
//응답처리
out.print("<html><body>");
Set<String> keys = map.keySet(); // Keyset 얻기
for(String key : keys) {
String[] values =map.get(key);
String mesg = "";
for(String s: values) {
mesg += s;
}
out.print(key + "========" + mesg + "<br>");
}
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
IntiParam
- Web.xml에서 value값 지정해서 넘겨줄수 있음
'ETC > 국비교육' 카테고리의 다른 글
국비 47일차 Servlet scope (0) | 2021.03.16 |
---|---|
국비 46일차 Servlet DB 연동 절차 (0) | 2021.03.15 |
국비 44일차 Servlet (라이프사이클, thread unsafe, 응답처리, 요청처리, 파라미터 처리) (0) | 2021.03.12 |
국비 42일차 Javascript DOM level 0, DOM level 2 이벤트 처리 (0) | 2021.03.09 |
국비 41일차 Javascript ( onload, onclick, onchange, onkeyup 활용) (0) | 2021.03.08 |