가. 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 스크립트이름 : 홍길동
|
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
|
댓글 ( 4)
댓글 남기기