@WebServlet("/hello")
public class Nana extends HttpServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out = resp.getWriter();
for(int i =0; i<100;i++) {
out.println((i+1) +"안녕! <br/>");
}
}
}
위처럼 코드를 작성하고 서버를 돌리면
이것은 decoding 방법을 전해주지 않아서 그런데
resp.setCharacterEncoding("UTF-8");
// utf-8로 인코딩 해서 보내라
resp.setContentType("text/html; charset=UTF-8");
// 받는 쪽은 utf-8로 받아라
를 보내주면 정상적으로 응답 받을 수 있다.

후 시작을 누르면

500상태값을 받는 것을 볼 수 있다.
이유는 url에 쿼리 값이 없기 때문이다.
String cnt_ = req.getParameter("cnt");
int cnt = 100;
if(cnt_!=null && !cnt_.equals("")) {
cnt = Integer.parseInt(cnt_);
}
req.setCharacterEncoding("UTF-8");
String[] num_ = req.getParameterValues("x");
@WebFilter("/*")
public class CharacterEncoidingFilter implements Filter {
@Override
public void doFilter(ServletRequest req,
ServletResponse res,
FilterChain chain)
throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
System.out.println("before filter");
chain.doFilter(req, res);
System.out.println("after filter");
}
}
ServletContext application = req.getServletContext();
application.setAttribute("value", v);
int x = (Integer)application.getAttribute("value");
HttpSession session = req.getSession();
session.setAttribute("value", v);
int x = (Integer)session.getAttribute("value");
범위: 세션범위(사용자 별도로)
생명주기: 세션이 시작해서 종료할 때 까지
저장위치 WAS 서버 메모리
서버 내의 캐비넷 저장소
// 서버에서 클라이언트
Cookie valueCookie = new Cookie("value", String.valueOf(v));
// 특정 url로만 쿠키가 전달 받을 수 있게 설정
valueCookie.setPath("/calc2");
// 소멸 시간 설정(24시간)
valueCookie.setMaxAge(60 * 60 *24);
res.addCookie(valueCookie);
//클라이언트에서 서버
// 쿠키는 배열로 온다.
Cookie[] cookies = req.getCookies();
for(Cookie c : cookies) {
if(c.getName().equals("value")) {
x = Integer.parseInt(c.getValue());
break;
}
}
@WebServlet("/something")
public class Somehhing extends HttpServlet {
// service method
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// do post or do get처리 전 공통으로 처리해야 할 부분 로직처리
super.service(req, resp);
}
// doPost, doGet Overriding시 service method 에 super 불러줘야함.
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("do POST method is called ");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("do get method is called ");
}
}