20.03 ~ 20.08 국비교육/JSP

내부객체2. session, application, pageContext

찹키리 2020. 4. 24. 12:15

<session★★★>

예전엔 쿠키를 사용했으나 보안이 약하다는 단점이 있었음

===> 세션

 

-id: 식별자. 처음 접근한 클라이언트에게 식별자 발급

-변수: 데이터 저장 in 서버의 메모리(언제 어디서나, 단, 나의 데이터만 접근 가능. 개별 변수)


-> id와 데이터(id, 비밀번호 등)를 통해 인증한다.

*default: 30분간 서버에 데이터 저장

 

 

 

<예제>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h1>Session Example1</h1>
    <form method = "post" action = "session1.jsp">
    아이디: <input name = "id"><p/>
    비밀번호: <input type = "password" name = "pwd">
    <input type = "submit" value = "로그인">
    </form>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

id와 비밀번호를 입력하는 html 페이지 생성

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    session = "true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    request.setCharacterEncoding("UTF-8");
    
    String id = request.getParameter("id");
    String pwd = request.getParameter("pwd");
    
    session.setAttribute("idkey", id);
    session.setMaxInactiveInterval(60 * 5);
    %>
    
    <h1>Session Example1</h1>
    <form method = "post" action = "session1_1.jsp">
    1. 가장 좋아하는 계절은?<br/>
    <input type = "radio" name = "season" value = "봄">
    <input type = "radio" name = "season" value = "여름">여름
    <input type = "radio" name = "season" value = "가을">가을
    <input type = "radio" name = "season" value = "겨울">겨울<p/>
    
    2. 가장 좋아하는 과일은?<br/>
    <input type = "radio" name = "fruit" value = "watermelon">수박
    <input type = "radio" name = "fruit" value = "melon">멜론
    <input type = "radio" name = "fruit" value = "apple">사과
    <input type = "radio" name = "fruit" value = "orange">오렌지<p/>
    <input type = "submit" value = "결과보기">
    </form>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

로그인 뒤 또다른 데이터를 전송하는 jsp 페이지

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    request.setCharacterEncoding("UTF-8");
    
    String season = request.getParameter("season");
    String fruit = request.getParameter("fruit");
    String id = (String)session.getAttribute("idkey");
    
    String sessionId = session.getId();
    
    int intervalTime = session.getMaxInactiveInterval();
    
    if(id != null) {
    %>
    
    <h1>Session Example1</h1>
    <b><%= id %></b>님이 좋아하는 계절과 과일은<p/>
    <b><%= season %></b>과 <b><%=fruit %></b> 입니다.<p/>
    
    세션 ID: <%= sessionId %>
    세션 유지 시간: <%= intervalTime %><p/>
    
    <%
    session.invalidate();
    }
    else {
    out.println("세션의 시간이 경과했거나 다른 이유로 연결을 할 수가 없습니다.");
 
    }
    %>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

입력된 데이터와 결과값을 보여주는 페이지

 

 

 

 

 

<application>

 

: application 객체는 서블릿 또는 어플리케이션 외부 환경 정보(Context)를 나타내는 내부 객체이다. 어플리케이션이 실행되는 서버의 정보와 서버 측 자원에 대한 정보를 얻어내거나, 이벤트 로그와 관련된 기능을 제공한다.

 

 

-메소드

String getServerInfo()

: 서블릿 컨테이너의 이름과 버전 반환

 

String getMimeType(fileName)

:지정한 파일의 mime 타입(코딩 타입) 반환

 

String getRealPath(url)

: URL을 로컬 파일 시스템으로 변경해 반환

 

void log(message)

: 로크 파일에 message를 기록

 

 

<예제>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    String serverInfo = application.getServerInfo();
    String mimeType = application.getMimeType("request1.html");
    
    String realPath = application.getRealPath("/");
    application.log("application 내부 객체 로그 테스트");
    %>
    <h1>Application Example1</h1>
    서블릿 컨테이너.의 이름과 버전: <%= serverInfo %><p/>
    RequestExample.html의 Mime Type: <%= mimeType %><p/>
    로컬 파일 시스템 경로: <%= realPath %>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

 

 

-실행

 

 

 

 

 

 

 

 

 

<pageContext>

 

: pageContext객체는 현재 jsp의 Context를 나타내며, pageContext 내부 객체를 통해 다른 내부 객체에 접근할 수 있다.

 

 

ex. out 내부 객체를 구하고자 할 경우

JspWriter pageOut = pageContext.getOut();

 

'20.03 ~ 20.08 국비교육 > JSP' 카테고리의 다른 글

자바빈즈(JavaBeans)  (0) 2020.04.27
내부객체3. page, config, exception  (0) 2020.04.24
내부객체1. request, response, out  (0) 2020.04.23
내부 객체(Implicit Object)  (0) 2020.04.23
액션(Action)  (0) 2020.04.23