Servlet/JSP 5일차

0

쿠키 삭제하기

Cookie expCookie = new Cookie("exp", exp);
response.addCookie(expCookie);
  • 위와 같이 "exp"를 key 값으로 exp를 value 값으로 쿠키를 저장하고 있다.
  • 쿠키를 삭제하려면 단순히 exp 키값에 대한 value 값을 "" 빈 문자열로 만들면 삭제하는 것이다.
  • 하지만 위에 방법은 완전 삭제가 아닌 단순히 빈 문자열을 쿠키로 저장하는 것과 같다. 따라서 삭제는 아닌 것이다.
  • 삭제를 하려면 아래의 코드를 삽입해야한다.
expCookie.setMaxAge(0);
  • 쿠키의 유효기간을 0으로 만들어 해당 빈문자열이 전송되자 마자 삭제되게 하는 것이다.

GET/POST에 특화된 서비스 함수

init() --> service(...) -> doGet() / doPost()

  • service를 오버라이드 하면 super.service(req, resp) 코드가 있다.
  • 이는 요청에 따른 do함수(doGet(), doPost())를 실행한다.
  • 만약 GET, POST 요청을 따로 처리한다면 아래와 같이 doPost, doGet 함수를 따로 만들어 실행해주는 것이 바람직하다.
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doPOST 메소드가 호출 되었습니다.");
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("doGET 메소드가 호출 되었습니다.");
	}
  • 만약 GET과 POST를 한꺼번에 처리하는 로직을 구성한다면
    super.service(req, resp)는 없에는게 맞다.

GET와 POST를 하나의 서블릿으로 합치기

  • 위에서 한거처럼 doGet(), doPost() 함수를 따로 생성해주면서 이에대한 처리를 각각 해줌으로서 하나의 url로 처리할 수 있게 되었다.
  • 쿠키의 경로또한 root가 아닌 하나의 경로로 설정할 수 있게되었다.
    expcookie.setpath("/calculator")
    --> 쿠키의 경로는 하나밖에 설정 못함

JSP 시작하기

  • 이전에는 html 한줄한줄 out.write()를 하여 출력을 해줬는데 이를 jsp확장자로 저장하면 자동으로 html을 출력하게 한다.
  • Jasper를 이용한 코드 작성 방법
<%
	int x = 3;
    int y = 4;
%> // 코드블럭
<html>
 .....
</html>

JSP의 코드 블록

  • <% out.print(y) %> --> y의 값을 출력하기 위한 코드블록
  • <%=y%>
  • 선언부(Declaration)
<%
	public int sum(int a, int b)
    {
    	return a+b;
    }
%>
  • 위와 같이 코드블록을 사용하면 에러가 난다.
  • 왜냐하면 코드블록을 사용하면 지역변수 앍고리즘 부분에 저장이 코드가 작성되기 때문이다.
  • 그러면 함수안에 함수를 정의하는 형태가 되기에 에러가 난다.
<% !
	public int sum(int a, int b)
    {
    	return a+b;
    }
%>
  • 에러를 방지하기 위해서는 !(느낌표)를 붙인다.

  • 초기 설정을 위한 Page 지시자

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

JSP 내장객체

  • jsp 파일을 만들때 Jasper가 변수를 생성하는데 이와 변수이름이 겹치지 않게 잘 확인해야한다.
  • request, response, pageContext, session, application, config, out, page
  • 내장 객체 request : HttpServletRequest
  • 내장 객체 response : HttpServletResponse
  • 내장 객체 session : javax.servlet.http.HttpSession
  • 내장 객체 application

JSP로 만드는 간단한 서블릿

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
String cnt_ = request.getParameter("cnt");

int cnt=100;
if(cnt_ != null && !cnt_.equals(""))
	cnt=Integer.parseInt(cnt_);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%  for(int i = 0; i < cnt; i++){ %>
	안녕 Servlet!!!!!!<br >
	<%} %>
</body>
</html>

스파게티 코드를 만드는 JSP

37 ~ 44강까지

0개의 댓글