관리 메뉴

프로그래밍 삽질 중

JSP 내장 객체 (request 등) 본문

카테고리 없음

JSP 내장 객체 (request 등)

평부 2021. 4. 8. 23:46

※ 내장 객체(implicit object)

- JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체

- JSP 페이지서블릿 프로그램 번역 시 JSP컨테이너가 자동으로 내장(각종 참조변수(객체) 포함)

- JSP 페이지에 별도의 impot문 없이 자유롭게 사용 가능

- 스크립틀릿 태그나 표현문 태그에 선언하거나 객체 생성하지 않고도 직접 호출, 사용 가능

 

 

※ 요청 파라미터 관련 메소드

- 요청 파라미터 : 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송 시 전달되는 폼 페이지의 입력된 정보 형태

- 요청 파라미터는 <name=value>형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송

 

 

※ 속성 처리 메소드 종류

1) setAttribute(String name, Object value) <-- void 반환

- 객체 속성 이름이 name인 속성 값을 value로 저장

2) getAttribute(String name) <-- Object 반환

- 속성 이름이 name인 속성 값을 가져옴

3) removeAttribute(String name) <-- void 반환

- 속성 이름이 name인 속성을 삭제

4) getAttributeNames() <-- Java.util.Enumeration 반환

- 모든 속성 이름을 가져옴 단, pageContext 제외

 

 

request 내장 객체

- JSP 페이지에서 가장 많이 사용되는 기본 내장 객체

- 웹 브라우저서버의 JSP 페이지로 전달하는 정보 저장

: 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP 페이지로 가져옴

- JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보 처리를 위해

javax.servlet.http.HttpServletRequest 객체 타입의 request 내장 객체를 사용하여 사용자 요구사항 얻어냄

 

 

request 내장 객체(1)

- 요청 패라미터 관련 메소드 종류(<name=value>형식으로 웹 브라우저에서 JSP 페이지로 전송)

1) getParameter(String name) <-- void 반환

- 요청 패러미터 이름이 name인 값을 전달받음, 해당 패러미터 값이 없으면 null값 반환

2) getParameterValues(String name) <--String[] 반환

- 패러미터 이름이 name인 값을 배열 형태로 전달, 해당 패러미터 값이 없으면 null값 반환

3) getParameterNames() <-- Java.util Enumeration 반환

- 패러미터 이름과 값을 Enumeration 객체 타입으로 전달

4) getParameterMap() <--Java.util.Map 반환

- 모든 요청 패러미터의 이름과 값을 Map 객체 타입으로 반환

 

 

request 내장 객체(2)

- request 객체의 한글 인코딩

= request.setCharacterEncoding("UTF-8");

 

 

request 내장 객체(3)

RequestDispatcher

- 요청 재지정

- 다른 페이지로 이동하는 forward(), include()를 가지고 있는 객체

 

[예시 1] 로그인(공란일 때 loginFrm으로 돌아가게 함)

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
[loginFrm.jsp] - 화면 창
 
<body>
 
<!-- get은 주소창에 아이디, 비번이 보임 / post: 주소창에 아이디, 비번이 보이지 않음 -->
<!-- method=get 예: http://localhost:9090/JSP_global/0408/loginProc.jsp?userId=ddd&userPwd=ddd -->
<!-- method=post 예: http://localhost:9090/JSP_global/0408/loginProc.jsp -->
 
<form action="loginProc.jsp" method="post">
ID:<input type="text" name="userId"/><br>
PW: <input type="password" name="userPwd"><br>        
<input type="submit" value="로그인">
 
</form>
</body>
 
 
 
[loginProc.jsp] - loginFrm의 부가 창
 
<body>
 
<!--한글이 나오게 함-->
<!-- = request.setCharacterEncoding("UTF-8"); -->
 
<%
request.setCharacterEncoding("UTF-8");
String userId = request.getParameter("userId");        
String userPwd = request.getParameter("userPwd");
if(userId.isEmpty() || userPwd.isEmpty()) {
RequestDispatcher rd = request.getRequestDispatcher("loginFrm.jsp"); //공란일  loginFrm으로 돌아감
 
rd.forward(request, response);
return;
}        
%>
 
아이디 : <%=userId %> / 비밀번호 : <%=userPwd %>
</body>
cs

[예시 2] 글자색 따라 배경색 바뀜

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
[background_color_test.jsp]
 
<%@ 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>
<form action="background_color.jsp" method="post">
이름:<input type="text" name="name"/><br>
좋아하는 색깔: <select name="color" size="1" muliple>
        <option value="파랑색" selected>파랑색</option>
        <option value="붉은색">붉은색</option>
        <option value="초록색">초록색</option>
        <option value="오렌지색">오렌지색</option>
        <option value="기타(하얀색)">기타(하얀색)</option>
<input type="submit" value="로그인">
</body>
</html>
 
 
[background_color.jsp]
<%@ 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 name = request.getParameter("name");    
    String color = request.getParameter("color");
    
    
    
    if (color.equals("파랑색")) {
            %> <body bgcolor="blue">
                
            <%         
    }
    %>
    <%
    if (color.equals("붉은색")) {
            %> <body bgcolor="red">
    <%         
    }
    %>
    <%
    if (color.equals("초록색")) {
            %> <body bgcolor="green">
    <%         
    }
    %>
    <%
    if (color.equals("오렌지색")) {
            %> <body bgcolor="orange">            
    <%         
    }
    %>
    <%
    if (color.equals("기타(하얀색)")) {
            %> <body bgcolor="white">
    <%         
    }
    %>
    
    <h1>IF-else Example</h1> 
    이름 : <%=name %> / 좋아하는 색깔 : <%=color %>
</body>
</html>
cs

 

request 내장 객체(4)

- 요청 HTTP 헤더 관련 메소드

= 웹 브라우저는 HTTP헤더에 부가적인 정보를 담아 서버로 전송

 

request 내장 객체(5)

- 요청HTTP 헤더 관련 메소드 종류

1) getHeader(String name) <-- String 반환

- 설정한 name의 헤더값을 반환

2) getHeaders(String name) <-- Enumeration 반환

- 설정한 name의 헤더 목록값을 반환

3) getHeaderNames() <--Enumeration 반환

- 모든 헤더 이름 반환

4) getIntHeader(String name) <-- int 반환

- 설정한 name의 헤더값을 정수로 반환

5) getDateHeader(String name) <-- long 반환

- 설정한 name의 헤더값을 시간 값으로 반환

6) getCookies() <--Javax.servlet.http.Cookie

- 모든 쿠키값을 반환

 

request 내장 객체(6)

- 웹 브라우저/서버 관련 메소드

1) getRemoteAddr() <--String 반환

- 웹 브라우저의 IP 주소를 반환

2) getContentLength() <--long 반환

- 웹 브라우저의 요펑 패러미터 길이를 반환

3) getCharacterEncoding() <--String 반환

- 웹 브라우저의 문자 인코딩을 반환

4) getContentType() <-- String 반환

- 웹 콘텐츠 유형을 반환

5) getProtocol() <-- String 반환

- 웹 브라우저의 요청 프로토콜을 반환

6) getMethod() <-- String 반환

- 웹 브라우저의 요청 메소드를 반환

7) getRequestURI() <--String 반환

- 웹 브라우저가 요청한 URI 경로를 반환

8) getContextPath() <-- String 반환

- 현재 JSP 페이지의 웹 앱 콘텍스트 경로 반환

9) getServerPort() <-- int 반환

- 실행중인 서버 포트 번호 반환

10) getQueryString() <-- String 반환

- 웹 브라우저의 질의 문자열 반환

 

 

request 내장 객체

- 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보 저장,

서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보냅

- JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해

javax.servlet.http.HttpServletResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답

 

 

request 페이지 이동(redirection)

- 사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것

= <%response.sendRedirect("http://www.google.com"); %>

 

request 내장 객체(1)

-응답 HTTP 헤더 관련 메소드

- 서버가 웹 브라우저에 응답하는 정보에 헤더를 추가하는 기능을 제공

- 헤더 정보에는 주로 서버에 대한 정보 저장되어 있음

 

request 내장 객체(2)

- 응답 HTTP 헤더 관련 메소드

1) addCookies(Cookie cookie) <-- void 반환

- 쿠키를 추가

2) addHeader(String name, long value) <-- void 반환

- 설정한 헤더 이름 name value를 추가

3) addIntHeader(String name, int value) <-- void 반환

- 설정한 헤더 이름 name에 정수 value를 추가

4) setHeader(String name) <-- void 반환

- 헤더 이름 name에 문자열 값 value 설정

5) setIntHeader(String name) <-- void 반환

- 헤더 이름 name에 정수 value설정

6) containsHeader(String name) <--boolean 반환

- 헤더 이름 name HTTP 헤더에 포함되었는지 여부 확인

7) getHeader(String name) <-- String 반환

- 설정한 header의 이름을 반환

 

 

[예시 3]

아이디와 비밀번호 둘 다 'admin' 성공 시 로그인에 성공했음!

실패 시 2_loginFrm.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
41
42
43
44
45
46
47
48
49
50
51
52
53
[2_loginFrm.jsp]
<%@ 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>
<form action="./loginProc.jsp" method="post">
    ID: <input type="text" name="userId"><br>
    PW: <input type="password" name="userPwd"><br>
    <input type="submit" value="로그인">
</form>
</body>
</html>
 
[2_loginProc.jsp]
<%@ 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 userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd");
if(userId.equals("admin") && userPwd.equals("admin")) {
    response.sendRedirect("2_loginSuccess.jsp");
} else {
    response.sendRedirect("2_loginFail.jsp");
}
%>
</body>
</html>
 
[2_loginSuccess.jsp]
<body>
로그인에 성공했음!
</body>
 
[2_loginFail.jsp]
<body>
<p>로그인 실패</p>
<p><a href="2_loginFrm.jsp">로그인 하러 가기</a>
</body>
 
cs

 

 

request 내장 객체(3)

- 응답 컨텐츠 관련 메소드

= response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 메시지,

상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메소드 제공

 

 

※ 응답 컨텐츠 관련 메소드

1) setContentType(String type) <-- void 반환

- 웹 브라우저에 응답할 MIME 유형 설정

2) getContentType() <-- String 반환

- 웹 브라우저에 응답할 MIME 유형 반환

3) setCharacterEncoding(String charset) <-- void 반환

- 웹 브라우저에 응답할 문자 인코딩 설정

4) getCharacterEncoding() <--String 반환

- 웹 브라우저에 응답할 문자 인코딩 반환

5) sendError(int status_code, String message) <-- void 반환

- 웹 브라우저에 응답할 오류 설정

6) setStatus(int statuscode) <-- void 반환

- 웹 브라우저에 응답할 HTTP 코드 설정