JSP&Servlet) request, response, cookie, session

  • request 객체의 이해
  1. 웹브라우저를 통해 서버에 어떤 정보를 요청하는 것을 request라고 합니다. 그리고 이러한 요청 정보는 request객체가 관리 합니다.
  2. Request객체 관련 메소드
getContextPath() : 웹어플리케이션의 컨텍스트 패스를 얻습니다.
getMehod() : get방식과 post방식을 구분할 수 있습니다.
getSession() : 세션 객체를 얻습니다.
getProtocol() : 해당 프로토콜을 얻습니다.
getRequestURL() : 요청 URL을 얻습니다.
getRequestURI() : 요청 URI를 얻습니다.
getQueryString() : 쿼리스트림을 얻습니다.

  1. Parameter 메소드 : 실제 많이 쓰이는 메소드는 parameter와 관련된 메소드들 입니다.
  2. jsp페이지를 제작하는 목적이 데이터 값을 전송하기 위해서 이므로 ,parameter 관련 메소드는 중요합니다.
getParameter(String name) : name에 해당하는 파라미터 값을 구합니다.
getParameterNames() : 모든 파라미터 이름을 구합니다.
getParameterValues(String name) : name에 해당하는 파라미터값들을 구합니다.

  • response 객체의 이해
  1. 웹브라우저의 요청에 응답하는 것을 response라고 하며, 이러한 응답의 정보를 가지고 있는 객체를 response객체라고 합니다.
  2. response객체 관련 메소드
getCharacterEncoding() : 응답할때 문자의 인코딩 형태를 구합니다.
addCookie(Cookie) : 쿠키를 지정 합니다.
sendRedict(URL) : 지정한 URL로 이동합니다.

requestex.html -> request_send.jsp -(sendRedirect())->pass.jsp or ng.jsp

<requestex.html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="EUC-KR">
    <title>Title</title>
</head>
<body>
    <form action = "request_send.jsp">
        "당신의 나이는 : "
        <input type="text" name="age" size="5">
        <input type="submit" value="전송">
    </form>
</body>
</html>

<request_send.jsp>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        int age;
    %>
    <%
        String str = request.getParameter("age");
        age = Integer.parseInt(str);
    
        if(age >= 20){
            response.sendRedirect("pass.jsp?age="+age);
        }
        else {
            response.sendRedirect("ng.jsp?age="+age);
        }
    %>
    
    <%= age %>
</body>
</html>

<pass.jsp>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        int age;
    %>

    <%
        String str = request.getParameter("age");
        age = Integer.parseInt(str);
    %>

    성인입니다.
<a href="requestex.html">처음으로 이동</a>
</body>
</html>

<ng.jsp>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%!
        int age;
    %>

    <%
        String str = request.getParameter("age");
        age = Integer.parseInt(str);
    %>

    미성년자입니다.
<a href="requestex.html">처음으로 이동</a>
</body>

  • 액션태그 : JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그입니다. 예를 들어 페이지 이동, 페이지 include 등등 입니다.
1. forward : 현재의 페이지에서 다른 특정페이지로 전환할 때 사용합니다.
 <jsp:forward page="sub.jsp"/>
- url은 바뀌지 않고 sub.jsp 내용을 보여준다.
2. include : 현재 페이지에 다른 페이지를 삽입할 때 사용합니다.
<h1> include01.jsp 페이지 입니다. </h1>
<jsp:include page = "include02.jsp" flush="true"/>
<h1> 다시 include01.jsp 페이지 입니다. </h1>
3. param : forward 및 include 태그에 데이터 전달을 목적으로 사용되는 태그입니다. 이름과 값으로 이루어져 있습니다.
<jsp:forward page="forward_param.jsp">
   <jsp:param name="id" value="abcdef" />
   <jsp:param name="pw" value="1234 />
</jsp:forward>

  • 쿠키
- 웹브라우저에서 서버로 어떤 데이터를 요청하면, 서버측에서는 알맞은 로직을 수행한 후 데이터를 웹브라우저에 응답합니다. 그리고, 서버는 웹브라우저와의 관계를 종료합니다. 이렇게 웹브라우저에 응답 후 관계를 끊는 것은 http프로토콜의 특징입니다.
- 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용합니다.
- 쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트 속에 특정 정보를 저장합니다. 그리고 서버에 요청 할 때마다 쿠키의 속성값을 참조 또는 변경 할 수 있습니다.
- 쿠키는 4kb로 용량이 제한적이며, 300개까지 데이터 정보를 가질 수 있습니다.

  • 쿠키 문법
  1. 쿠키 생성( 쿠키 클래스를 이용합니다.) -> 속성 설정(setter를 이용합니다) -> response객체에 쿠키 탑재( response.addCooke()를 이용합니다.)

- setMaxAge() : 쿠키 유효기간을 설정 합니다.
- setpath() : 쿠키사용의 유효 디렉토리를 설정 합니다.
- setValue() : 쿠키의 값을 설정 합니다.
- setVersion() : 쿠키 버전을 설정 합니다.
- getMaxAge() : 쿠키 유효기간 정보를 얻습니다.
- getName() : 쿠키 이름을 얻습니다.
- getPath() : 쿠키사용의 유효 디렉토리 정보를 얻습니다.
- getValue() : 쿠키의 값을 얻습니다.
- getVersion() : 쿠키 버전을 얻습니다.

  • 세션

- 세션도 쿠키와 마찬가지로 서버와의 관계를 유지하기 위한 수단입니다.
- 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재 합니다.
- 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없습니다.

  • 세션 문법
  1. 세션은 클라이언트의 요청이 발생하면 자동 생성 됩니다. 그리고 session이라는 내부 객체를 지원하여 세션의 속성을 설정 할 수 있습니다.
  2. 클라이언트 요청(웹브라우저) -> session 자동 생성 -> session 속성 설정(session 내 객체의 메소드 이용)

- setAttribute() : 세션에 데이터를 저장 합니다.
- getAttribute() : 세션에서 데이터를 얻습니다.
- getAttributeNames() : 세션에 저장되어 있는 모든 데이터의 이름(유니크한 키값)을 얻습니다.
- getId() : 자동 생성된 세션의 유니크한 아이디를 얻습니다.
- isNew() : 세션이 최초 생성되었는지, 이전에 생성된 세션인지를 구분 합니다.
- getMaxInactiveInterval() : 세션의 유효시간을 얻습니다. 가장 최근 요청시점을 기준으로 카운트 됩니다. (C:\javalec\apache-tomcat-7.0.57\apache-tomcat-7.0.57\conf\web.xml 참조)
- removeAttribute() : 세션에서 특정 데이터 제거 합니다.
- Invalidate() : 세션의 모든 데이터를 삭제 합니다.


  • 예외 페이지

- JSP, Servlet에서 예외적인 상황이 발생했을 경우 웹컨테이너(톰캣)에서 제공되는 기본적인 예외 페이지가 아닌 지정된 페이지를 유도할 수 있습니다.

  1. 페이지 지시자를 이용한 예외처리
  2. <%@ page language="java" contentType="text/html; charset=EUC-KR"
        pageEncoding="EUC-KR"%>
    <%@ page isErrorPage="true"%>
    <% response.setStatus(200); %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
    <title>Insert title here</title>
    </head>
    <body>
        에러 발생<br />
        <%= exception.getMessage() %>
    </body>
    </html>
    

  3. web.xml파일을 이용한 예외 처리
  4. <error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>
    </error-page>
    <error-page>
    <error-code>500</error-code>
    <location>/error500.jsp</location>
    </error-page>
    

source : https://www.inflearn.com(신입SW인력을 위한 실전 JSP&Servlet)

댓글 없음:

Powered by Blogger.