JSP

 

 

 

 

JSP 내장 객체의 영역

    page 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 하나의 JSP 페이지가 호출된다.
    request 영역은 한 번의 웹 브라우저(클라이언트)의 요청에 대해 같은 요청을 공유하는 페이지가 대응된다.
    session 영역은 하나의 웹 브라우저당 1개의 session 객체가 생성된다. 
    application 영역은 하나의 웹 어플리케이션당 1개의 application 객체가 생성된다. 
    
    1. request 내장 객체

        request 객체는 웹 브라우저에서 JSP 페이지로 전달되는 정보의 모임으로 HTTP 헤더와 HTTP 바디로 구성이 되어 있다. 



    2. response 내장 객체
        response 객체는 웹 브라우저로 응답할 응답 정보를 가지고 있다. 


    3. out 내장 객체
        out 객체는 JSP 페이지가 생성한 결과를 웹 브라우저에 전송해 주는 출력 스트림이며,
        JSP 페이지가 웹 브라우저에게 보내는 모든 정보는 out 객체로 통해서 전송 된다.
        여기서 모든 정보는 스크립트요소 뿐만 아니라 비스트립트 요소인 HTML, 일반텍스트도 모두 포함된다. 

    4. pageContext 내장 객체
        pageContext 객체는 현재 JSP 페이지의 컨텍스트를 나타내며, 주로 다른 내장객체를 구하거나,
        페이지의 프름제어 그리고 에러데이터를 얻어낼 때 사용된다.  



    5. session 내장 객체
        session 객체는 웹 브라우저의 요청시 요청한 웹 브라우저에 관한 정보 저장하고 관리하는
        내장 객체라 할 수 있다. session 객체는 웹 브라우저(클라이언트)당 1개가 할당된다.
        따라서 주로 회원관리에서 사용자 인증에 관련된 작업을 수행할 때 사용된 작업을 수행할 때 사용된다. 



    6. application 내장 객체
        application 객체는 웹 어플리케이션이 실행되는 서버의 설정 정보 및 자원에 대한 정보를 얻어내거나
        어플리케이션이 실행되고 있는 동안에 발생할 수 있는 이벤트 로그 정보와 관련된 기능들을 제공한다. 



    7. config 내장 객체
        config 내장 객체는 서블릿이 초기화되는 동안 참조해야 할 정보를 전달해 주는 역할을 한다.
        config 내장 객체는 컨테이너당 1개의 객체가 생성된다.
        같은 컨테이너에서 서비스되는 모든 페이지는 같은 객체를 공유한다. 



    8. page 내장 객체
        page 내장 객체는 JSP 페이지 그 자체를 나타내는 객체로
        JSP 페이지 내에서 page 객체는 this 키워드로 자기 자신을 참조할 수 있다.


    9. exception 내장 객체 
        exception 내장 객체는 JSP 페이지에서 예외가 발생하였을 경우,
        예외를 처리할 페이지를 지정하였을 때 예외 페이지에 전달되는 객체이다.



■ out 내장 객체 메서드

    isAutoFlush()    : 출력 버퍼가 가득찼을 때 자동으로 밀어낼 것인지 여부 지정 (true/false)
    getBufferSize()  : 출력 버퍼 전체 사이즈를 구함
    getRemaining()   : 출력 버퍼 중 남아 있는 사이즈를 구함
    clearBuffer()    : 출력 버퍼를 비운다.
    println()        : String 을 출력한다.
    flush()          : 출력 버퍼의 내용을 밀어낸다.
    close()          : 출력 버퍼의 내용을 밀어내고, 출력 버퍼를 닫는다.

■ request 내장 객체 메서드

    getMethod()              : 요청 방식 알아내기 (get, post)
    getRequestURI()          : 요청 파일 경로 알아내기 (ex, jsp2/RequestTest.jsp)
    getRequestURL()          : 요청 경로 알아내기 (ex, http://localhost:9000/jsp2/Request.jsp)
    getRemoteHost()          : 클라이언트 호스트 이름 알아내기
    getRemoteAddr()          : 클라이언트 주소 알아내기
    getRemoteUser()          : (인증을 이용한 경우) 이용자 ID 알아내기
    getProtocol()            : 사용중인 프로토콜 알아내기 (ex, HTTP1.1)
    getServerName()          : 서버 도메인 이름 알아내기
    getServerPort()          : 서버 포트 알아내기
    getHeader(name)          : name 에 해당되는 요청 헤더 항목 값 알아내기
    getParameter(name)       : name 에 해당되는 파라미터 값을 얻는다.
    getParameterValues(name) : name 에 해당되는 파라미터 값을 모두 얻는다.
    getParameterNames()      : form 에 있는 모든 파라미터 이름을 얻는다.

■ response 내장 객체 메서드

    setContentType(type)     : 출력 문서의 contentType 설정
    getCharacterEncoding()   : 문자 인코딩 설정 내용 알아내기
    setHeader(name, value)   : 헤더 설정
        (ex, response.setHeader("Refresh", "3;URL=http://www.daum.net"); // 3초후 지정한 URL 로 이동)
    sendRedirect(url)        : 지정 URL 로 요청을 재전송한다.

        ※ forward 액션 태그

            방법1
            방법2
            방법3
                      
                      
                  

        ※ response.sendRedirect 와 forward 액션태그의 차이점

            - sendRedirect() 는 웹브라우저가 다른 페이지로 이동할 때,
              다른 페이지로 가기 위해 웹브라우저는 웹서버에 새로운 Http 요청을 보낸다.
              즉, TCP 네트워크 연결이 다시 만들어지는 것이다.

                response.sendRedirect("로컬URL");     <-- 가능
                respnose.sendRedirect("외부URL");     <-- 가능


            - 이에 비해 forward 액션은 JSP 엔진에서 Http 요청을 다른 페이지로 보낸다.
              즉, Http 요청 처음 만들어진 것 하나만 있는 것이다. 

                          <-- 가능
                          <-- 불가능


            - sendRedirect() 를 사용하면 웹브라우저에서 처음에 전송한 Http 요청과
              이 요청에 포함된 데이터들은 새로 이동된 페이지에서 사용할 수 없게 된다.
              반면, forward 액션을 사용하면 Http 요청은 하나만 사용하기 때문에 새로
              이동된 페이지에서도 클라이언트에서 전송된 데이터를 사용할 수 있다.

        ※ include 지시자

            단순히 문서를 포함시킨다.
            포함시킬 문서는 헤더 부분을 넣지 말아야 한다.

            <%@ include file="파일명.확장자" %>

        ※ include 액션

            포함된 파일이 실행된 결과물을 현재 페이지에 포함시킨다.

            방법1
            방법2
                      
                      ...
                  

■ application 내장 객체 메서드

    application 내장 객체는 서블릿 또는 어플리케이션 외부환경정보(context)의 내부 객체.
    application 은 javax.servlet.ServletContext 의 객체.

    String getServletInfo()       : 서버 정보를 구한다.
    String getMimeType(fileName)  : 지정한 File 에 대한 MIME 타입을 리턴한다.
    String getMajorVersion()      : 서버가 지원하는 서블릿 규약의 Major version 을 리턴.
    String getMinorVersion()      : 서버가 지원하는 서블릿 규약의 Minor version 을 리턴.
    String getRealPath(url)       : 지정한 Url 의 실제 경로를 리턴한다.
    void log("message")           : message 내용을 파일에 기록한다.

■ session 내장 객체 메서드

    session 은 쇼핑몰과 같이 제품을 클릭할 때마다 누가 클릭했는지 기억을 해야 하는
    사이트에서 웹 서버 쪽에서 사용자별 기록을 남기고자할 때 사용.

    String getId()                    : 해당 세션의 고유한 세션 아이디를 리턴
    void setMaxInactiveInterval(time) : 세션 유지시간 설정 (초 : 기본 30분)
    int getMaxInactiveInterval()      : 세선 유지시간이 얼마인지 알아낸다.
    isNew()                           : 새로 생성된 세션이면 true
    invalidate()                      : 세션 제거
    setAttribute(name, value)         : 세션에 name, value 값의 항목을 추가
    getAttribute(name)                : 세션에서 name 에 해당되는 value 값을 얻어냄.


★ Cookie 내장 객체 생성자 & 메서드

    - 생성자
        
        Cookie(name, value) : 이름이 name 이고, 값이 value 인 쿠키 생성
    
    - 메서드

        setValue()  : 쿠키값 설정
        setDomain() : 쿠키에 전달되는 도메인 설정
        setPath()   : 쿠키에 전달되는 경로 설정
        setMaxAge() : 쿠키 유효기간 설정 (초)
        setSecure() : 보안 프로토콜(Https)에서만 쿠키를 전달되도록 설정.

        getName()   : 쿠키 이름 얻기
        getValue()  : 쿠키값 얻기
        getDomain() : 쿠키가 전달되는 도메인 알아내기
        getPath()   : 쿠키가 전달되는 경로 알아내기
        getMaxAge() : 쿠키 유효기간 알아내기
        getSecure() : 보안 프로토콜(Https)에서만 쿠키가 전달되는지 알아내기.

    << 쿠키 심는 방법 >>

 

    Cookie cookie = new Cookie("쿠키이름", URLEncoder.encode("쿠키값"));
    response.addCookie(cookie);

    << 클라이언트가 보내주는 쿠키를 모두 받아서 특정 이름의 쿠키값 알아내기 >>

    Cookie[] cookies = request.getCookies(0);
    if (cookies != null) {
        for (int i = 0; i < cookies.length; i++) {
            if (cookies[i].getName().equals("쿠키이름")) {
                cookieValue = URLDecoder.decode(cookies.getValue());
                out.println("쿠키값:" + cookieValue);
            }
        }
    }


출처: http://imdsoho.tistory.com/entry/JSP-내장객체-정리 [삶은 예배다.]

 

 

 

RequestLogin.jsp

 

강의와 다르게 부트스트랩 모양을 보기 좋게 하기 위해  적용.   자바 jsp 과정이라 html 적 요소는 크게 신경 안써도 됩니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- 위 3개의 메타 태그는 *반드시* head 태그의 처음에 와야합니다; 어떤 다른 콘텐츠들은 반드시 이 태그들 *다음에* 와야 합니다 -->
    <title>동영상 부트스트랩 적용</title>
<!-- 합쳐지고 최소화된 최신 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">

<!-- 부가적인 테마 -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap-theme.min.css">

<!-- 합쳐지고 최소화된 최신 자바스크립트 -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>

    <!-- IE8 에서 HTML5 요소와 미디어 쿼리를 위한 HTML5 shim 와 Respond.js -->
    <!-- WARNING: Respond.js 는 당신이 file:// 을 통해 페이지를 볼 때는 동작하지 않습니다. -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
<title>Insert title here</title>
</head>
<body>
	 <div class="container">
	<div class="row">
	<div class="col-sm-12 text-center" >
	<div class="col-sm-3"></div>
	
	<div class="col-sm-6">
    <h2>로그인 페이지</h2>
	<form action="RequestLoginProc.jsp" method="get">
		<table class="table table-boardered">
			<tr>
				<th>아이디</th>
				<td><input type="text" class="form-control" name="id"></td>		
			</tr>
			<tr>
				<th>패스워드</th>
				<td><input type="password" class="form-control" name="pass"></td>		
			</tr>
			<tr>
				<td colspan="2"><button class="btn btn-primary">전송</button></td>
			</tr>
		</table>
	</form>
	</div>
	
	</div>
	</div>
</div>
</body>
</html>

 

 

 

 

 

 

소스 :  https://github.com/braverokmc79/jsp_sin

 

 

유튜브 동영상 출처 :

소프트캠퍼스

강사 : 신형섭(잭임연구원)

저작권 : (주)소프트캠퍼스 http://www.softcampus.co.kr 더많은 무료 강의는 사이트에서 확인하실수 있습니다.

 

 

 

 

about author

PHRASE

Level 60  라이트

'미녀와 야수'에서와 같이 많은 여성은 잘 생긴 미모의 남자를 좋아하기보다는 남자다움, 힘센 야수를 사랑하는 것이다. 그리고 권력을 가진 단단한 남자를 흠모하는 것이다. -프란체스코 알베로니

댓글 ( 4)

댓글 남기기

작성