본문 바로가기
JSP/JSP & Servlet

내장 객체(implict object)

by avvin 2019. 4. 29.

내장 객체란?


JSP컨테이너가 제공하는 특정 객체(변수)

이러한 객체들은 JSP문법 요소들과 함께 동작해 사용자의 요청을 적절히 처리하여 동적으로 HTML 생성



내장 객체

 리턴 타입

 설명

 request

javax.servlet.http.HttpServletRequest 

웹 브라우저의 요청 정보를 저장하고 있는 객체 

 response

 javax.servlet.http.HttpServletResponse

웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 

 out

javax.servlet.jsp.jsp.jspWriter 

JSP페이지에 출력할 내용을 가지고 있는 출력 스트림 객체 

 session

javax.servlet.http.HttpSession 

하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장하고있는 객체 

application 

javax.servlet.ServletContext 

웹 어플리케이션 Context의 정보를 저장하고 있는 객체 

pageContext 

javax.servlet.jsp.PageContext 

JSP페이지에 대한 정보를 저장하고 있는 객체 

page 

javax.lang.Object 

JSP 페이지를 구현한 자바 클래스 객체 

config 

javax.servlet.ServletConfig 

JSP 페이지에 대한 설정 정보를 저장하고 있는 객체 

exception 

java.lang.Throwable 

JSP페이지에서 예외가 발생한 경우에 사용되는 객체 



 request

사용자에게서 넘어온 정보를 걸러주는 객체


//sumit 누르면 action=" "이 실행됨


get방식과 post방식 차이 비교




Request 객체가 정보를 저장한 채로 유지되는건 submit -> action이 참조하는 페이지까지 

다른 페이지에서 null로 초기화되는것 확인







회원가입 페이지 만들기 (최종)


회원가입 페이지, 입력 정보 확인 페이지



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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<%@ 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>
    <h2 align="center">회원가입</h2>
    <form align="center" action="RequestJoinProc.jsp" method="post">
        <table align="center" width="500" border="1">
            <tr height="50">
                <td width="150" align="center">아이디</td>
                <td width="350" align="center" ><input type="text" name="id"
                    placeholder="id를 입력하세요" size="40"></td>
            <tr height="50">
                <td width="150" align="center">패스워드</td>
                <td width="350" align="center"><input type="password"
                    name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="40"></td>
            <tr height="50">
                <td width="150" align="center">패스워드 확인</td>
                <td width="350" align="center"><input type="password"
                    name="password2" size="40"></td>
            <tr height="50">
                <td width="150" align="center">이메일</td>
                <td width="350" align="center"><input type="email" name="email" size="40"></td>
            <tr height="50">
                <td width="150" align="center">전화번호</td>
                <td width="350" align="center"><input type="tel" name="tel" size="40"></td>
            <tr height="50">
                <td width="150" align="center">당신의 관심분야</td>
                <td width="350" align="center">
                <input type="checkbox"
                    name="hobby" value="캠핑"> 캠핑 &nbsp;&nbsp; 
                    <input type="checkbox" name="hobby" value="독서"> 독서 &nbsp;&nbsp; 
                    <input type="checkbox" name="hobby" value="영화"> 영화 &nbsp;&nbsp; 
                    <input type="checkbox" name="hobby" value="등산"> 등산 &nbsp;&nbsp;
                    </td>
            <tr height="50">
                <td width="150" align="center">당신의 직업</td>
                <td width="350" align="center"><select name="job">
                        <option value="교사">교사</option>
                        <option value="개발자">개발자</option>
                        <option value="의사">의사</option>
                        <option value="상담사">상담사</option>
                </select></td>
            <tr height="50">
                <td width="150" align="center">당신의 연령</td>
                <td width="350" align="center"><input type="radio" name="age"
                    value="10">10대 &nbsp; &nbsp; <input type="radio" name="age"
                    value="20">20대 &nbsp; &nbsp; <input type="radio" name="age"
                    value="30">30대 &nbsp; &nbsp; <input type="radio" name="age"
                    value="40">40대 &nbsp; &nbsp;</td>
            <tr height="50">
                <td width="150" align="center">남기고 싶은 말</td>
                <td width="350" align="center"><textarea rows="5" cols="40"
                        name="info">
                </textarea></td>
            </tr>
            <tr height="50">
                <td align="center" colspan="2"><input type="submit"
                    value="회원가입"> &nbsp; &nbsp; &nbsp; &nbsp; <input
                    type="reset" value="다시 입력"></td>
            </tr>
        </table>
    </form>
    <!--</tr>닫는 태그는 테이블 끝나는 마지막에 한번만 붙여주면 된다<tr>로만 구분. -->
    <!--textarea cols는 한줄 당 글자 수 (너비로 나타남) -->
    <!--input은 닫아줄 필요 X-->
</body>
</html>
cs


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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<%@ 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>
<div style="text-align:center;">
    <h2>회원 정보 보기</h2>
    <%
        //post방식으로 데이터가 넘어 올 때 한글이 깨질 수 있으므로
        request.setCharacterEncoding("UTF-8");
        //각종 사용자로부터 넘어온 데이터를 저장해줌
        String id = request.getParameter("id");
        String password = request.getParameter("password");
        String password2 = request.getParameter("password2");
        String email = request.getParameter("email");
        String tel = request.getParameter("tel");
 
        //복수 선택 가능(checkbox)으로 항목이 여러가지인 데이터는 
        //[] 배열 타입으로 받아서 리턴
        String[] hobby = request.getParameterValues("hobby");
        
        String job = request.getParameter("job");
        String age = request.getParameter("age");
        String info = request.getParameter("info");
 
        if (!password.equals(password2)) {
    %>
    <script type="text/javascript">
        alert("비밀번호가 틀립니다.");
        history.go(-1//이동하시오. 이전페이지로 이동
    </script>
    <%
        }
    %>
    <!-- 데이터 넘길거 아니니까 form으로 묶어줄 필요가 없다 ??-->
    <table align="center" width=400  border="1">
    <tr height="50">
                <td width="150" align="center">아이디</td>
                <td width="350" align="center"<%=id%>
                </td>
            <tr height="50">
                <td width="150" align="center">이메일</td>
                <td width="350" align="center"><%=email%></td>
            <tr height="50">
                <td width="150" align="center">전화번호</td>
                <td width="350" align="center"><%=tel%></td>
                
                
            <tr height="50">
                <td width="150" align="center">관심 분야</td>
                <td width="350" align="center">
                
                <%
                for (String hob : hobby){
                    out.write(hob);
                }
                %>            
                <!-- 배열 요소를 출력하지 않고 배열 변수를 그대로 출력하면 배열 주소가 출력된다 -->
                </td>        
        
            <tr height="50">
                <td width="150" align="center">직업</td>
                <td width="350" align="center"><%=job%></td>                    
            <tr height="50">
                <td width="150" align="center">나이</td>
                <td width="350" align="center"><%=age%></td>    
            <tr height="50">
                <td width="150" align="center">남긴 말</td>
                <td width="350" align="center"><%=info%></td>                                    
                        
    </table>
</div>
</body>
</html>
cs








response 


response 객체를 이용하여 로그인페이지 만들기


ResponseSendRedirect.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
<%@ 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>
<!-- 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체 -->
<!-- ex)로그인 제대로되면 메인페이지로 가야함. 서버측에서 다른 페이지로 떠넘겨 줘야할 때 -->
<center>
<h2>로그인페이지</h2>
<form action="ResponseLoginProc.jsp" method="post">
        <table align="center" width="350" border="1">
            <tr height="50">
                <td width="150" align="center">아이디</td>
                <td width="350" align="center" ><input type="text" name="id"
                    placeholder="id를 입력하세요" size="25"></td>
            <tr height="50">
                <td width="150" align="center">패스워드</td>
                <td width="350" align="center"><input type="password"
                    name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="25"></td>
            <tr height="50">
                <td width="150" align="center" colspan="2">
                <input type="submit" value="login" > </td>
                </tr>
</center>
</body>
</html>
cs


ResponseLoginProc.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
<%@ 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>
 
<!-- jsp페이지에서 response.sendRedirect가 실행되는 순간 
    해당 페이지에 있던 내용들은 버퍼에서 사라진다★★★ -->
    <%
        request.setCharacterEncoding("UTF-8");
        //사용하고있는 데이터베이스 없으므르 임의로 id와 password 설정
        String dbid = "aaa";
        String dbpassword = "1234";
 
        //사용자로부터 넘어온 데이터 입력 받아줌
        String id = request.getParameter("id");
        String password = request.getParameter("password");
        if (dbid.equals(id) && dbpassword.equals(password)) {
 
            //아이디와 패스워드가 일치하면 메인페이지를 보여주어야함
            response.sendRedirect("ResponseMain.jsp?id=" + id);
            //넘어가는 페이지에 변수를 파라미터로 넘겨줄 수 있다.★ get방식
 
        } else {
    %>
    <script>
        alert("아이디와 패스워드가 일치하지 않습니다.");
        history.go(-1);
    </script>
 
    <%
        }
    %>
 
</html>
cs


ResponseMain.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ 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>
<center>
    <%
        request.setCharacterEncoding("UTF-8");
    %>
<h2><%= request.getParameter("id")%>님 반갑습니다. </h2>
</center>
</body>
</html>
cs








out 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%@ 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>
    <!-- jsp페이지 내에서 사용하는 내장객체, 데이터에 있는 내용을 화면에 출력하기위한 객체 -->
 
    <%
        String name = "변수의 값";
    %>
    스크립트로 표현 시
    <%=name%>이 화면에 출력
    <p>
        <%
            out.println(name + "이 화면에 출력");
        %>
        
</body>
</html>
cs



session


http 프로토콜은 컨넥션을 계속 유지하지 않기때문에 클라이언트와 서버 통신의 연속성을 유지하기 위해 사용되는 기술


복잡한 활용예제는 이 후에 진행



SessionTest.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
<%@ 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>
    <!-- 내장 객체는 스크립트릿 안에서만 사용가능!! -->
    <h2>세션 연습</h2>
    <%
    //세션을 이용하여 데이터를 유지
        String name = "shin";
 
    session.setAttribute("name1", name); // name값의 키를 name1으로 설정해준다.
    //세션 유지 시간
    session.setMaxInactiveInterval(3); // 세션 유지시간 3초
    
    %>
    
    <a href="SessionName.jsp"> 세션네임 페이지로 이동 </a>
<!-- ""안에서는 띄어쓰기 주의하기. 문자열 그대로 읽어서 띄어쓰면 오류나는 것 같다. -->
 
</body>
</html>
cs


SessionAnme.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ 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>
<h2> 세션네임 페이지 입니다.</h2>
<% String name = (String)session.getAttribute("name1");%>
 
<%=name %>님 반갑습니다.
 
</body>
</html>
cs
session.getAttribute(String)은 리턴타입이 Object이므로 변수에 저장시 타입캐스팅 필요


3초 지난 후 새로고침하면 name이 받아온 데이터가 초기화되면서 null이 출력된다.




application


session이 브라우저 범위 내에사 정보를 유지해주는 객체라면 application은 어플리케이션 범위에서 정보를 유지해주는 객체

쓸 일이 많진 않다.



나머지 객체도 크게 중요하진 않다. exception은 자바 exception






용어정리

URI / URL

https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=URI+URL+%EC%B0%A8%EC%9D%B4

=> URL

     => URL

루프백 주소(p.178) ( 0:0:0:0:0:0:0:1 또는 :1 )

: 루프백 인터페이스를 식별하는데 사용되고 노드가 자신에게 패킷을 보낼 수 있도록 한다.


'JSP > JSP & Servlet ' 카테고리의 다른 글

액션 태그 jsp: include  (0) 2019.04.29
JSP의 지시자(Directive)  (0) 2019.04.29
JSP 기초문법  (0) 2019.04.28
서블릿 코드로 변환된 파일(.java)  (0) 2019.04.26
(이클립스 없이) 톰캣 서버 구동  (0) 2019.04.26