JSP


가. jsp의 내장객체

request : 사용자의 요청을 처리
response: 서버의 응답
out : 웹브라우저에 출력 처리
session:  사용자의 인증 정보(로그인 ~로그아웃) 저장
application: 서버의 정보 저장
exception :에러 처리
config : jsp의 환경정보
page : 현재 페이지

 

가) model1 방식

JSP page 안에 자바 코드 작성

 

나) model2(MVC pattern) 방식 : jsp page 와 java code 분리

Model: 데이터 처리 클래스 (DAO, DTO), back end
 
Data Access Object(DAO) : 실제적인 비즈니스 로직을 처리
Data Transfer Object(DTO) : 데이터를 저장, 전달
 
 bean(빈), VO(Vector Object), TO(Table Object)

View : 화면 처리(jsp), front end

Controller : 프로그램의 흐름을 제어(servlet class)

 

 

1. requestTest.jsp  

<%@ 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">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>
<!-- 
request.getContextPath() : 
컨텍스트 패스(웹프로젝트의 이름)
 -->
<form action="<%=request.getContextPath() %>/ch04_servlet/request.do">
이름 : <input name="name"><br>
나이 : <input type="number" name="age" min="20" max="99" >
<br>
성별: <input type="radio" name="gender" value="m" >남
<input type="radio" name="gender" value="f"  checked>여
<br>

취미 : 
<select name="hobby">
	<option value="등산">등산</option>
	<option value="낚시">낚시</option>
	<option value="운동" selected>운동</option>
	<option value="요리">요리</option>
</select>
<input type="submit" value="확인">

</form>




</body>
</html>


 

 

class RequestController

package ch04;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/ch04_servlet/request.do")
public class RequestController extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//post 방식 한글 인코딩
		request.setCharacterEncoding("utf-8"); 
		
		//폼에 입력한 값들
		String name =request.getParameter("name");
		int age=Integer.parseInt(request.getParameter("age"));
		String gender =request.getParameter("gender");
		String hobby =request.getParameter("hobby");
		//맵에 저장 (여러개의 자료를 한꺼번에 전달할때 유횽
		Map<String,Object> map =new HashMap<>();
		map.put("name", name); //key, value
		map.put("age", age);
		gender =gender.equals("m")? "남" : "여";
		map.put("gender", gender);
		map.put("hobby", hobby);
		//request 영역에 저장( 요청페이지 + 응답페이지 자료공유)
		request.setAttribute("map", map);
		String page="/ch04/request_result.jsp";
		RequestDispatcher rd
				=request.getRequestDispatcher(page);
		rd.forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}
;

 

 

 

request_result.jsp

<%@page import="java.util.Map"%>
<%@ 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">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>
<!-- 
EL(Expression Language, 표현언어) 방식
내부적으로 자바 코드로 변환됨


<h2>EL</h2>
이름 :  ${map.name}<br>  <!-- map.get("name") -->
나이 : ${map.age} <br>
성별 : ${map.gender} <br>
취미 : ${map.hobby}<br>


<hr style="border:1px solid red">


<h2>스크립트</h2>
<%
Map<String, Object> map =(Map<String, Object>)request.getAttribute("map");

//map.get("변수명");
String name=(String)map.get("name");
int age=(Integer)map.get("age");
String gender=(String)map.get("gender");
String hobby=(String)map.get("hobby");

%>

이름 : <%= name %> <br>
나이 : <%= age %> <br>
성별 : <%= gender %> <br>
취미 : <%= hobby %> <br>


</body>
</html>

 

나이 : 35 
성별 : 여 
취미 : 운동


스크립트

이름 : 홍길동 
나이 : 35 
성별 : 여 
취미 : 운동 

 

 

 

 

 

 

 

 2. requestTest2.jsp

<%@page import="java.util.Enumeration"%>
<%@ 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">
<title>Insert title here</title>
<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>

</head>
<body>

<%

String[] names={"프로토콜", "서버이름","method",
		"컨텍스트", "uri","url", "ip"};

String[] values={request.getProtocol(),
		request.getServerName(),
		request.getMethod(),
		request.getContextPath(),
		request.getRequestURI(),
		request.getRequestURL().toString(),
		request.getRemoteAddr() };

String headerName="";
String headerValue="";
for(int i=0; i<names.length; i++){
	out.println(names[i]+":" +values[i]+"<br>");
}



out.println("<hr style='border:1px solid red' ;>");
out.println("<h2>헤더 정보</h2>");
//request header의 정보 확인
//헤더 변수
Enumeration<String> en=request.getHeaderNames();
while(en.hasMoreElements()){//다음요소가 있으면
	//다음 요소 조회
	headerName=en.nextElement();
	//request.getHeader(헤더 변수)
	headerValue=request.getHeader(headerName);
	out.println(headerName+":" + headerValue+"<br>");
}



%>
</body>
</html>

 

=>출력

 

프로토콜:HTTP/1.1
서버이름:192.168.0.2
method:GET
컨텍스트:/web03_jsp
uri:/web03_jsp/ch04/requestTest2.jsp
url:http://192.168.0.2:1112/web03_jsp/ch04/requestTest2.jsp
ip:192.168.0.2

헤더 정보

host:192.168.0.2:1112
connection:keep-alive
upgrade-insecure-requests:1
user-agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
dnt:1
accept-encoding:gzip, deflate
accept-language:ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

어떤 문제에도 반드시 자신의 힘으로 해결할 수 있다는 시념을 가져라. -로버트 H. 슐러

댓글 ( 4)

댓글 남기기

작성