Back-end/JSP

JSP) 내장 객체(1) - request

luana_eun 2022. 3. 1. 11:59
728x90

1. request 객체 

request객체는 HTTP요청정보를 담고있다. 


동작 순서
웹 브라우저가 HTTP메시지(헤더 + 바디)를 웹 서버에 보냄.

 서버가 받은 HTTP요청이 서블릿/JSP요청이면?

→ 해당 컨테이너는 HTTP메시지를 통해 HttpServletRequest객체를 생성하고 서블릿 인스턴스에 넘김.

→ 서블릿이 요청데이터를 얻을 수 있음.

→ JSP페이지는 HttpServletRequest객체를 request이름으로 사용한다.

 

 

 

2. request객체 메소드

<%-- 헤더 - 사용자 정보: 사용자가 이 페이지에 뭐로 접근하고 있는지. --%>
http헤더 (user-agent) : <%=request.getHeader("user-agent") %><br>
http헤더 (accept-language) : <%=request.getHeader("accept-language") %><br>
http헤더 (host) : <%=request.getHeader("host") %> <br>
	
<%-- 사용자가 지금 연결되있는지 --%>
http헤더 (connection) : <%=request.getHeader("connection") %><br>

 

 

 

3. Form과 연결해서 파라미터 값 가져오기

주의!! form 태그로 파라미터 전달시 데이터는 자동으로 String타입으로 변환된다.

<from 페이지>

    	<!-- form페이지 -->
	<form action="TestResult.jsp" method="get">
		이름: <input type="text" name="name"><br>
		
		나이: <input type="text" name="age"><br>
		
		성별: <input type="radio" name="gender" value="남">남 
		      <input type="radio" name="gender" value="여">여 <br>
			 
		강의장<br>
		<select name="room">
			<option value="1">1 강의장</option>
			<option value="2">2 강의장</option>
		</select> <br>
		
		취미: 
		<input type="checkbox" name="hobby" value="운동">운동 
		<input type="checkbox" name="hobby" value="악기연주">악기연주 
		<input type="checkbox" name="hobby" value="노래">노래 <br>
			
		<input type="submit" value="전송">
	</form>

 

<result 페이지>

 request객체 안의 정보를 getParameter()메서드를 사용해서 가져온다. 

 파라미터 데이터는 String형태로 전달되므로 연산을 하려면 int형으로 변환해야한다. 

 checkbox같이 여러 파라미터를 같은 이름으로 전달하는 경우, getParameterValues()를 사용해서 배열로 받는다.

// TestResult.jsp
// Form페이지가 result페이지를 요청한거!

<%
	// 한글처리
	request.setCharacterEncoding("UTF-8");
	
    	// request객체 안에 잇는 getParameter를 사용하여 number를 가져온다. 
	String name = request.getParameter("name");
	String age = request.getParameter("age");
	int age2 = Integer.parseInt(age);	//String -> int로 바꾸기
    
	String gender = request.getParameter("gender");
	String classRoom = request.getParameter("room");
    
	String [] hobbys = request.getParameterValues("hobby");	// 배열형태로 받기
%>

	이름: <%=name %>
	나이: <%=age2 %>
	성별: <%=gender %><br>
	강의장: <%=classRoom %><br>
    
    // 취미 배열 출력
    <%
		if(hobbys != null) {
			for(String s: hobbys) {
				%> 취미: <%= s %><br> <%
			}
		}
	%>
    
    
    <h3>전달된 사용자 정보를 활용해서 사용자가 성인인지 판단.</h3>
	<%
		if(age2<20) {
			out.print(name + "님은 미성년자입니다.");
		} else {
			%>
				"<%=name %>님은 성인입니다."
			<%
		}
	%>
	
	**근데 나이가 없는채로 전달받으면 500오류가 나타난다.

 

728x90