Cookie
    http 통신규약에선 서버와 클라이언트가 통신 후 관계를 종료한다. 때문에 페이지 로드시에 반복적인 작업이 있으면 해당 정보를 쿠키로 만들어서 클라이언트 측에 저장한다. 이 정보를 쿠키라 한다. 서버에선 어떤 요청에 응답시 클라이언트가 가지고 있는 쿠키의 속성 값을  참조하거나 변경하면서 이용함.
쿠키는 보안에 취약해 개인정보나 보안이 필요한 정보는 잘 저장하지 않는편.
    
  1.     쿠키생성 - 쿠키 클래스 이용 Cookie cookie = new Cookie("name", "value");
  1.     속성 설정 - setter를 이용해 쿠키의 속성 값 설정 cookie.setValue();
  1.     response객체에 쿠키 탑재 - response.addCookie(cookie)
  2.     쿠키를 불러올땐  Cookie[] cookies = request.getCookies() 로 받음.
                request에 저장되어 있는 모든 쿠키를 배열로 받는다.
        쿠키객체 메서드
        .setMaxAge()        쿠키값 유지 시간 지정, n초 단위로 값 입력
        .setpath()                쿠키사용 유효 디렉토리 설정 (아무 디렉토리에서나 쿠키에 접촉하지 못하도록 함)
        .setValue()            쿠키값 설정
        .setVersion()
        .getMaxAge()
        .getName()
        .getPath()
        .getValue()
        .getVersion()
    쿠기생성하고 response에 보내기
        Cookie cookie = new Cookie("name", "value");
        cookie.setMaxAge(60*60)        60초*60분 = 1시간
        response.addCookie(cookie);
    쿠키 받기
        Cookie[] cookies = resquest.getCookies();
    쿠키 삭제
        cookie.setMaxAge(0);
    
    여러 jsp 를 이동하면서(response.sendRedirect("redirect.jsp")) 이동할 페이지엔 response.addCookie로,
    이동한 페이지에선 request.getCookies 로 쿠키를 주고 받으며 데이터가 이동한다.


     Cookie는 String만 저장, Session은 obj를 저장.

Session
    세션 쿠키와 마찬가지로 서버와 웹브라우저 간 관계를 유지하는 수단. 단 쿠키와 다르게 서버상에 객체로 존재한다.
    때문에 쿠키와 다르게 서버에서만 접근이 가능해 보안이 높고 저장할수 있는 데이터에 한계가 없다.
    세션은 클라이언트가 서버에 요청을 하면 자동으로 생성된다. session의 메서드들을 이용해 속성을 설정 할 수 있다.
    한 클라이언트(브라우저)와 접촉당 하나의 session이 만들어 지기 때문에, 해당 연결에 속하는 어느 페이지에서든 session에 접근할수 있다.
    (페이지 이동시 response, request로 정보를 주고 받을 필요가 없다.)
    Session 호출    HttpSession session = request.getSession();

    setAttribute(name, obj)    세션에 데이터를 저장할때 메서드
    getAttribute(name)    세션에서 데이터를 가져옴 ,    리턴하는 세션의 value타입은 obj 다. (형변환 필수)
    removeAttriute(name)    세션에서 특정(name) 데이터 제거
    getAttributeName()    세션에 저장중인 이름(키값)을 얻음,    리턴은 Enum으로
    getId()    세션의 유니크 아이디를 얻음 (서버에서는 클라이언트의 요청에 따라 여러 session이 생성되기 때문에)
    isNew()     세션이 새로생성된것인지 확인
    
    getMaxInactiveInterval()    세션의 유효시간을 리턴(초 단위), int 타입 n초 디폴트 1800(30분)
    invalidate()    세션의 모든 데이터를 삭제

'JSP+Servlet' 카테고리의 다른 글

7.JSTL (Java Standard Tag Library)  (0) 2020.01.08
6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08

JSTL
    JSP Standard Tag Lib.  
    JSP에서 태그를 이용하는 라이브러리 들로 core, sql, 등이 있지만 core를 주로 사용한다.
    EL 과 같이 사용하여 코드를 단순화 할수 있다.
       
    Core lib    변수선언, if, for문 등의 제어흐름, url 처리 등의 기능을 갖는 라이브러리.

    Tag Lib 선언
        <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>        //Core  Tag lib를 선언
            prefix = " c " 는 접두사로, jsp 상에서 core lib를 사용할때 <c>로 호출하겠다는 의미.

    JSTL 에서도 request 객체를 통해서 값이 이동하기 때문에,
    request.setCharaterEncoding("utf-8"); 엔코딩이 필수이다.

    JSTL을 사용해서 태그에서 값을 호출하거나 저장할때
    직접 값을 넣는 경우는 value="값" 으로 가능하지만
    매개변수를 이용하는 객체일 경우  value="${변수명}"    과 같이 el로 객체에 접근해야 한다.
    value일경우만이다, 변수명인 var="변수명" 일경우 EL이 아니여도 된다.


  Data 처리
    Data 외부(html)로 출력
        <c:out value="value"/>
        <c:out value="${param.name}"/>        parameter에 name으로 저장돼있는 값을 가져와서 출력
           (== <%    out.print(request.getParameter(name));   %>   )

    Data 입력
        <c:set 
                var="변수명" 
                scope="page/request/session/application "                    
                value="값"
                property="자바빈 객체나, map 객체"
                target="자바빈 객체나 map 객체"
        />
            or
        <c:set var="변수명">값</c:set>        값이 변수명으로 저장

        value="" 에는 java의 객체도 저장이 가능하다. (value = " <%= obj %> " )

           request(or scope).setAttribute("변수명", "값");  과 같다.
                request                                       scope="request"
                setAttribute("변수명", "값")        var="변수명" value="값"

            <c:set var="no1" value="${10}"/>    no1 이라는 변수명에 값 10 저장
            <c:out value="${no1}"/>                  no1이라는 변수의 값을 불러와서 화면을 출력(html 범위로 출력)

                그냥 문자면 value="no1"        //no1이라는 문자가 출력
                객체의 명이면 value= "${no1}"

        데이터의 Value가 Map인경우
            맵과, 맵안에 값들 저장
                <c:set var="${map}" value="<%=new HashMap<String, String>() %>" />
//map이라는 이름의 속성에 HashMap을 넣음
                <c:set target="${map}" property="name" value="kim"/>
//map이라는 속성에 name이라는 속성을 찾아서 kim이라는 값을 지정. (name이 key, kim이 맵핑되는 value가 됨)
                <c:set target="${map}" property="age" value="10"/>
                <c:set target="${map}" property="addr" value="seoul"/>

            키값을 각각 name, age, addr로 주고,
            맵핑되는 값을 kim, 10, seoul로 저장.

            아래와같이 출력이 가능
                <c:out value="${map.name}"/>
                ${map.age}
                ${map["addr"]}

target속성
<c:set target="${member}" property="age" value="20"/>                          
member라는 속성(scopre 지정이 없으므로 pageContext)에 인스턴스변수 age에 값 20을 저장
<c:set target="${member}" property="name" value="${requestScope.dto.name}"/>
member라는 속성에 변수name을 찾아서 request에 저장되어 있는 속성 dto의 name이라는 값을 불러와 저장.


      If 문 조건문
            기본형
                <c:if test="조건"> 
                    실행문
                </c:if>

Choose문 (=switch case  문 )
                <c:choose>
                    <c:when test="조건1">
                        실행문
                    </c:when>
                    <c:when test="조건2">
                        실행문
                    </c:when>
                    <c:when test="조건3">
                        실행문
                    </c:when>
                    <c:otherwise>
                        실행문
                    </c:otherwise>
                </c:choose>


       forEach문 반복문
forEach문은 단순 for문 처럼 동작하기도 하고, items="Collection객체" 를 넣어주면 forEach문으로도 동작한다.

             기본형 (단순 for문 형태)
                <c:forEach var="i"  begin="1" end="10"> 
                        실행문                                            // 실행문 실행시 i가 자동으로 1씩 10까지 증가.
                </c:forEach>
begin    시작 index
end    마지막 index
step    증가량

             items = "Collection 객체" 사용시 
  ( forEach문 or 향상된 for문 형태, Collection의 모든 요소를 반복 실행,  ele는 collection안에 element를 의미한다)
                <c:forEach var="ele" items="${collection}">
                        ${ele.key}
                        ${ele.value}
                        <br>
                </c:forEach>

varStatus
varStatus="status"    반복문의 현재 상태를 알려주는 객체 status를 이용함.
${status.index}        index번호 출력 0부터
${status.count}        현재 반복횟수를 출력 1부터
${status.first}          현재가 첫번째면 true 리턴
${status.last}          현재가 마지막이면 true 리턴

forTokens
    StringTokenizer 처럼 문자열을 일정 기준으로 잘라서 반복문을 실행하는 메서드
    forEach와 유사하다. 잘라낸 후 잘라낸 문자를 가지고 반복해서 실행
    기본형
        <c:forTokens var="token_ele" items="str1;str2;str3" delim=";">      //item을 delim으로 잘라서 향상된 for문 실행
                <c:out value="${token_ele}"/>                                        // 잘라낸 items로 실행할 구문
                 // value를 token_ele 로 주면, tokens에서 잘라낸 요소를 하나씩 가지고 반복 실행한다.
        </c:forTokens>


import
    페이지를 삽입하는 기능,삽입한 페이지에서 자료를 가져와 현재 페이지에서 사용도 가능.
   <jsp:include>와 기능상 동일하다 (지시자 include가 아닌 액션태그와 동일)
var="변수명" 으로 받아올 데이터를 저장하지 않으면 화면에 출력하도록 초기값이 정해져 있다.
(출력을 원하지 않고 데이터를 가지고 작업을 수행하려면 var 로 받아서 사용해야한다. )

    기본형
        <c:import url="page_url" charEncoding="utf-8" scope="사용범위" var="읽어올 자료 변수명">
            <c:param name="name" value="value">                //넘겨줄 parameter
            <c:set val="변수명"  value="값">                            //넘겨줄 객체명과 값
        </c:import>        


redirect
    redirect태그를 이용해 JSP 에서도 response.sendRedirect 와 같이 다른 페이지로 가서 새로운 요청을 하도록 페이지 전환을 해줄수 있다.
    ( forward의 기능은 JSP에선 거의 사용하지 않는다.  forward는 요청을 가지고 여러 컴포넌트를 오가며 작업을 하기 위한 것으로 거의 대부분 servlet, java에서 사용하기 때문이다. )

    기본형
        <c:redirect url="page_url">
            <c:param name="name" value="value">                //넘겨줄 parameter
            <c:set val="변수명"  value="값">                            //넘겨줄 객체명과 값
        </c:redirect>


'JSP+Servlet' 카테고리의 다른 글

5.내장객체 session, cookie  (0) 2020.01.09
6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08

EL(Expression Language)
    jsp에서 지시자 태그 대신 템플릿처럼 사용할 수 있는 표현법
    
    기본형
        ${   }    표현식 { } 안에 값을 넣는다.

    연산자
        기본 표현식 안에 여러 연산자를 사용하여 값이나 객체를 연산할수 있다.

        산술연산자            + - * / %     ( /연산은 소수점까지 표현된다.  /0 연산도 가능하다. 값은 무한으로 출력)
                                        정수 실수간 연산이 자연스럽게 가능하다.

        비교연산자            ==(eq), !=(ne), <(lt), >(rt), <=(le), >=(re)
                                        <,  > 는 jsp에서 태그로 인식할수 있다. 
                                        따라서, html 범위에서는 &gt;(>) ,  &lt;(<) 와 같이 표시해줘야 태그로 인식하지 않고 
                                        특수문자인 >, <가 출력된다.

                                        숫자 비교 뿐 아니라, 문자의 크기비교도 가능하다. 'ab' < 'bb'   == true
                                        또한 문자형 숫자 '2'  와 숫자형 숫자도 비교가 가능하다.   '2' = 2  == true
  
                                    a > b ?  true : false        식의 3항 연산자도 사용이 가능하다.

        관계연산자            &&, ||, !
        Null 연산               empty  (값이 null이거나 공백)



    EL Inner Object

        아래 표현식을 사용할때도 당연히 request에 Charset 엔코딩을 맞춰야 한다.

        pageScope                page범위내에 사용하는 하는 내장객체 (객체이름이 pageScope이다.)
        requestScope            request 범위의 객체
        sessionScope            session 범위의 객체
        applicationScope      application 범위의 객체

        *** EL과  java의 중요한 차이점은 만약 배열이 arr[3] 이 없다면  java에선 객체 접근 시도시 예외가 발생하는 반면
            EL에선 없는 값(null)을 그냥 공백처럼 처리한다.

        Parameter
            ${param.name}   parameter name의 값을 가져온다.      == request.getParameter("name");
            ${paramValues.name}  값들을 가져온다. (name이 같은 객체가 여럿일 때 )  == .getParameterValues("name");
                                                                                
        Header 
            ${header.a}        header a 값을 가져옴  == request.getHeader("a");
            ${headerValues.a}    header 정보들을 가져옴  ==  .getHeaderValues("a");

        pageContext
            ${pageContext.request.requestURI}        ==    request.


        EL Inner Object 데이터 호출
EL 에서 ${num} 과 같이 어떤 참조변수에 접근할땐, java코드와 같이 변수나 객체에 직접 접근이 아닌, 내장객체에 저장되어 있는 '속성'에 접근한다.
속성은 내장객체인 pageContext, request, session, application에 Attribute로 저장되어 있는데,
객체명을 생략하고 호출도 가능하지만, 여러 내장객체에 같은 속성명으로 저장되어 있다면
pageScope -> requestScope -> sessionScope -> applicationScope 순으로 우선순위를 갖는다. (좁은범위 우선)

parameter 호출
${param.name}            리턴되는 값은 getParameter() 와 달리 String타입이 아니라 저장된 타입으로 가져와진다.
    form 태그로 넘어오는 값이 int 타입이라면 그대로 연산이 가능.    

            단일 데이터 호출
            ${requestScope.name}       request에서 name이라는 파라미터의 값을 가져온다. == request.getParameter("name");
            ${ sessionScope.name }

            복수(=배열) 데이터 호출
            ${requestScope.arr[0]}        request에 arr이라는 이름으로 저장된 배열의 0번째 값 리턴
                                                                        == request.getParameter("arr")[0]
            ${ sessionScope.list[0] }

            Map type 데이터 호출
                request.setAttribute("data", map) 으로 속성을 저장했다면.
                ${ requestScope.data.key1}    와같이 호출하면 해당 키와 맵핑되어 있는 value가 리턴된다.
                ${ requestScope.data.key2}
                    or
                ${ requestScope.data["key3"] }     [ 키값 ] 과 같이 도 호출이 가능.

 DTO(객체) 변수 접근
request.setAttribute("member", member1) 로 속성을 저장했다면,
${member.name}        인스턴스 변수 name을 가져온다.
or
${member["name"]}    인스턴스 변수 name을 가져온다.

               객체에 필드를 바로 호출하기 위해선 반듯이 객체의 변수(ex name)  에 대한 getter 가 구현되어 있어야한다.
                실제로 호출시에는 객체의 변수에 직접접근이 아닌 변수를 받을 수 있는 getter 메서드를 호출하는 것.

${member}        member에 toString() 메서드를 호출해서 출력한다.

Map-객체 이용
               **  만약 Map에 key와 맵핑되는 value가 객체라면,  속성이름(맵).키값.변수명 으로 연속해서 기입해줘 호출도 가능하다.
                ${ requestScope.data.m1.name }            
                   속성명 data 맵에서 key명이 m1에 맵핑되는 value가 객체member이고.
  member 객체가 갖는 name이라는 변수의 값을 리턴한다.

            

'JSP+Servlet' 카테고리의 다른 글

5.내장객체 session, cookie  (0) 2020.01.09
7.JSTL (Java Standard Tag Library)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08

JSP (Java Server Page)

JSP 파일은 html 문서 안에 java코드를 쉽게 넣기 위한 형태이다.

JSP파일은 jsp 컨테이너(톰캣)에 의해 servlet 파일로 변환되고, class가 메모리(JVM)에 올라가 실행된다. 결국 서블릿으로 변환되는 것.


a.jsp -> a_jsp.java -> a_jsp.class


JSP의 기본틀이 html 문서와 같기 때문에 java 코드를 넣기 위해서는 태그(스크립트릿)가 필요하다.

반대로 java 코드에서 html문서와 같이 화면에 값을 출력하기 위해서도 적절한 태그가 필요하다.


결과적으로 JSP 파일은 기본적인 영역인 html 영역, 보이지 않고 연산작업을 하는 java 영역 으로 나누어 볼 수 있다.

html영역에 있는 태그와 문자들은 사용자 브라우저에 그대로 표현되는 반고,

java 영역에 있는 코드와 문자들은 브라우저에 보이지 않고 연산에만 사용된다.


java영역에서 html영역으로 데이터를 내보내기 위해선

1. out 객체를 이용하거나,

2. 표현식 <%=  %> 을 통해 결과값을 내보내거나,

3. EL을 이용해서 ${ 값 } 으로 내보내거나

4. JSTL에 Core lib를 이용해 <c:out value="값">  등의 방법을 이용해야 사용자측 브라우저에 값을 출력할 수 있다.




JSP태그

<%          %>    스크립트릿,       안에 자바 코드를 넣어 실행할수 있다.

<%=        %>    표현식             태그안에 결과 값을 화면(html)으로 출력한다.

<%@       %>    페이지 지시자,   페이지의 속성을 정하거나, 현재 jsp 페이지에 lib를 적용할 수 있다.

<%--     --%>    주석                 이 태그 안에 코드는 주석처리 되며, html문서로 전송될땐 생략되어 전송된다. 

(jsp 주석과 다르게html주석은 전송되지만 표시만 안된다.)

<%!        %>     선언태그          변수나 메소드를 선언할수 있다.

<jsp:action>      액션태그            <jsp:  뒤에 적어주는 액션을 실행하는 태그.



액션태그

forward  페이지 이동. 사용자 화면에서 url은 변하지않으면서 표현되는 페이지만 변경된다.

기본형

<jsp:forward page="page_url">


include    페이지 삽입. 현재 페이지에 다른 페이지를 삽입한다. 컴파일이 같이 되는게 아니라, 삽입부분에서 페이지를 로드해 넣는다.

기본형

<jsp:include page="page_url">


**  <%@ include file="page_url"%> 은 삽입할 페이지를 같이 컴파일해버린것.


param    forward나 include 시에 Parameter를 넘겨준다.

기본형

<jsp:param name="param_이름" value="param_값">


이동하는 페이지에선 request 객체를 통해 값을 받을 수 있다.











'JSP+Servlet' 카테고리의 다른 글

7.JSTL (Java Standard Tag Library)  (0) 2020.01.08
6.EL (Expression Language)  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08
1.Mapping  (0) 2020.01.08

내장객체 Request, Response


 서버와 클라이언트의 간 정보의 이동은 request, response를 통해 주고 받게 되는데 JSP와 Servlet에선 내장 객체로 request와 response를 기본적으로 제공해준다.

 서버는 request를 통해서 데이터를 받거나, reponse를 통해서 클라이언트 측으로 데이터를 보내고, 페이지이동시에도 request, response에 데이터를 담아 주고 받을 수 있다.

 request와 response는 클라이언트가 요청을 보냈을때 생성되고 요청이 유지되는 동안만 request와 response 객체가 유지된다.

만약 요청과 응답이 끝나고 새로운 요청(새로운 페이지 요청)이 일어나면 request와 response는 새로운 객체가 생성된 것이다.


Encoding

정보를 주고 받을때 문자를 맞춰주는 엔코딩이 필수이다. 엔코딩 방식이 맞지 않으면 문자가 제대로 출력되지 않는다.

Request 엔코딩 설정

request.setCharacterEndoding("utf-8");        request로 받을 데이터의 엔코딩을 설정

Response 엔코딩 설정

response.setContentType("text/html; charset=utf-8");    response로 보낼 데이터의 타입과 엔코딩을 설정


Request

Request 정보호출

Parameter로 저장된 값을 가져온다.    리턴값은 모두 String 이다.

request.getParameter("name");        name="name" key 값이 name의 객체의 value를 가져온다.

request.getParameterValue("list");    name="list" 인 배열을 가져온다.

request.getParameterNames();         request에 저장된 파라미터들의 모든 이름을 배열로 가져온다.


attribute로 저장된 값을 가져온다.    리턴값은 모두 Object 이다. (사용시 형변환 필수)

request.getAttribute("name");


cookie


Request 정보저장

request.setAttribute("name", obj or value);


Request 전송 (request 객체를 가지고 페이지 이동)

RequestDispatcher dis = request.getRequestDispatcher("url");

dis.forward(request,response);

위와같이 리퀘스트 디스패쳐에 이동할 url을 넣어서 객체를 받고,

객체의 forward 메서드에 request, response를 매개값으로 넣어서 메서드를 호출하면,

현재 페이지의 request와 response 객체를 다른페이지로 보낼수 있다. (객체 안에 데이터도 유지된다.)


Response

Response 정보송출

response.getWriter() 로 PrintWriter 객체를 받아서,

printWriter.pirnt(value); 로 값을 내보낸다.


response.Redirect("url")    요청에 대한 응답으로 url 페이지로 이동하도록 응답한다.

리다이렉트는 현재 JSP 페이지가 모두 실행된 후 response를 통해 보내진다.


'JSP+Servlet' 카테고리의 다른 글

6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
2.Servlet  (0) 2020.01.08
1.Mapping  (0) 2020.01.08
0. JSP, Servlet 이란?  (0) 2020.01.08

Servlet

Servlet은 사용자가 요청을 하면 자동으로 실행되며 지정한 방식에 따라 요청을 처리한다.

요청 방식은 post, get 두가지 방식으로 처리된다.


doGet(), doPost()


두 방식의 차이는 get 방식은 url 뒤에 전송할 자료를 입력해서 요청하는 방식으로 url상에 정보가 노출되지만 속도가 빠르다.

post방식은 http통신시 header안에 자료를 넣어서 전송하기 때문에 보안성이 더 높다.


페이지 요청시 방식을 지정하지 않았다면 기본적으론 doGet() 이 호출되게 된다.


Servlet LifeCycle

사용자로부터 요청이 들어오면 서블릿 컨테이너는 서블릿 class 파일을 만들고 이를 메모리에 올려서 실행시킨다.

이때 서블릿이 생성되고 실행된후 종료되는 과정을 LifCycle 이라 부른다.


실행 순서는 

1. init(); 

2. service()  doGet() or doPost();

3. destroy();

순으로 실행이 되며, 서블렛은 한번 생성후 메모리에 올라가 있을땐 재사용 되기 때문에 init() 과 destroy()는 매 요청마다 실행되는 것이 아니라 서블렛이 생성, 제거 될때 한번씩만 실행된다. (서버가 재기동 되거나 servlet파일이 변경될때)


추가적으로 컨테이너에서도 실행 전후 처리가 가능하다.

contextInitiallized();        컨테이너에서 초기화 실행(톰캣)

@PostConstruct

init()


service()


destroy()

@PreDestroy()

contextDestroyed();        컨테이너 단위




초기화 Parameter

ServletContext     모든 Servlet에 적용된다. 컨테이너(톰캣)에서 처리한다.

ServletConfig       특정 Servlet에 적용. 


ServletContext 

선언

project의 web.xml에 선언해놓으면 project(application)모든 servlet 이 사용할 수 있는 값.

web.xml 아래에

<context-param>

<param-name>id</param-name>

<param-value>AAA</param-value>

</context-param>

호출

servlet 상에서

ServletContext context = getServletContext() 메서드로 Context 객체를 호출.

context.getInitParameter(param_name);     name의 값을 가져옴.


ServletConfig

선언 1.

web.xml에 선언

<servlet>

<init-param>

<param-name>init_id</param-name>

<param-value>aaa</param-name>

</init-param>

</servlet>


Servlet.java 에서 호출

getInitParameter("init_id")


선언2.

@WebInitParam 선언

iniParams = {@WebInitParam(name="init_id", value="aaa"), @WebInitParam(name="init_id2", value="bbb"),  ...  }















'JSP+Servlet' 카테고리의 다른 글

6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
1.Mapping  (0) 2020.01.08
0. JSP, Servlet 이란?  (0) 2020.01.08

Mapping

사용자가 서버에 어떤 요청을 하면 그 요청에 따른 servlet 파일이나 jsp 파일을 응답해준다.

이때 사용자는 servlet이나 jsp 파일명을 직접 호출하는 것이 아니라 url을 통해 호출하게 되고 이를 컨테이너가 Mapping 해

요청에 따른 적절한 페이지(servlet or jsp)를 응답으로 보내주게 된다.


이러한 요청에 따른 파일 연결을 Mapping 이라 한다.

Servlet은 Servlet 이름이 아닌 요청에 따른 이임의 url을 맵핑이 가능하다.


Servlet Mapping 방법

1. web.xml 상 정의

project - WebContent - WEB-INF  - web.xml 상에 정의하는 방법.

web.xml 아래에

<servlet>

<servlet-name>servlet임시이름 </servlet-name>

<servlet-class>servlet dir(위치) </servlet-calss>

<servlet>

<servlet-mapping>

<servlet-name>servlet임시이름 </servlet-name>

<url-pattern>/지정할url </url-pattern>

</servlet-mapping>


'JSP+Servlet' 카테고리의 다른 글

6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08
0. JSP, Servlet 이란?  (0) 2020.01.08

JSP와 Servlet 모두 java를 사용하여 서버를 구축하고 사용자와의 통신을 위한 JAVA의 폼이다.


JSP 란

java 파일에서 html 코드를 쉽게 작성할수 있도록 지원해주는 문서.

html 문서가 기본 형식으로 되어 있고, 여러 지시자를 이용하여 html 문서 안에 java 코드를 넣을 수 있다.


JSP파일도 기본적으로 JSP컨테이너(톰캣이처리)가 Servlet 파일로 변환해서 실행된다.


Servlet 이란

사용자(client)와 서버 간의 연결을 관리하기 위한 java의 lib.

java를 이용해 쉽게 서버를 구성할수 있도록 해주며, servlet을 Servlet컨테이너(톰캣)이 사용자측에서 요청을 처리해

servlet을 관리해 요청에 따라 통신, 스레드 생성 등을 자동으로 관리해 준다.


servlet 요청이 들어오면 컨테이너는 servlet이 메모리에 올라가 있지 않으면 servlet.class 파일을 만들어서 메모리에 올린다.

이후 요청은 이미 메모리에 올려놓은 서블릿을 사용하므로 빠르게 동작한다.

'JSP+Servlet' 카테고리의 다른 글

6.EL (Expression Language)  (0) 2020.01.08
3.JSP  (0) 2020.01.08
4.내장객체 Request, Response  (0) 2020.01.08
2.Servlet  (0) 2020.01.08
1.Mapping  (0) 2020.01.08

+ Recent posts