빅데이터 서비스 교육/JSP Servlet

JSP 내장객체 (Scope) & JDBC & Maven

Manly 2022. 5. 16. 16:49
반응형

JPS 내장객체

 

 

 

Request 를 주로 쓴다

 

JSP 내장객체 공통 메서드

 

각각의 Scope에 데이터 저장하기

ex11scope.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>
	<%
	// 각각의 Scope에 데이터 저장하기

	// Page Scope : 하나의 jsp페이지 안에서만 유지(pageContext)
	pageContext.setAttribute("page", "Page Scope 입니다.");

	//Request Scope : 한번의 요청-응답이 이루어지는 동안(request)
	request.setAttribute("req", "Request Scope 입니다.");

	// Session Scope : 하나의 브라우저 내에서 유지(session)
	session.setAttribute("ses", "Session Scope 입니다.");

	// Application Scope : 프로그램이 동작하는 동안 유지(application)
	application.setAttribute("app", "Application Scope 입니다.");
	%>

	<%
	// Scope 에서 값 꺼내기
	// 꺼낼때는 다운캐스팅 필요
	String page1 = (String) pageContext.getAttribute("page");
	String req = (String) request.getAttribute("req");
	String ses = (String) session.getAttribute("ses");
	String app = (String) application.getAttribute("app");
	out.print(page1 +"<br>");
	out.print(req +"<br>");
	out.print(ses +"<br>");
	out.print(app +"<br>");
	
	// 페이지 이동
	// response.sendRedirect("ex11select.jsp");
	//forward 방식으로 페이지 이동
	// 1. 이동을 도와줄 RequestDispatcher 객체 생성
	// request.getRequestDispatcher("이동할 페이지 주소");
	// 프로젝트 내 파일로만 이동 가능
	RequestDispatcher rd = request.getRequestDispatcher("ex11select.jsp");
	
	// 2. forward이동
	rd.forward(request, response);
	
	%>
	
	<a href="ex11select.jsp">스코프 확인</a>
</body>
</html>

ex11select.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>

<%
	// Scope 에서 값 꺼내기
	// 꺼낼때는 다운캐스팅 필요
	String page1 = (String) pageContext.getAttribute("page");
	String req = (String) request.getAttribute("req");
	String ses = (String) session.getAttribute("ses");
	String app = (String) application.getAttribute("app");
	out.print(page1 +"<br>");
	out.print(req +"<br>");
	out.print(ses +"<br>");
	out.print(app +"<br>");
	%>
	
</body>
</html>

 

 

 

a태그를 통해 ex11select.jsp로 이동해 동일하게 Scope 값을 가져와 보면

다음과같이 page와 request가 null값이 나온다.

 

response.sendRedirect를 이용해 ex11select.jsp로 이동해 동일하게 Scope값을 가져오면

이때도 page와 request가 null값이 나온다.

 

sendRedirect의 경우도 client에게 ~로 이동하라고 명령을 보내면

여기서 1번 req가 데이터를 가지고 있는데 ~로 이동하라는 명령을 보내고 바로 퇴근하고

client가 다시 요청 할 때 2번 req가 나온다

 

 

페이지 이동시에도 request 값을 유지해서 이동할 수 있는

 

 

forward 방식으로 페이지 이동

 

RequestDispatcher rd = request.getRequestDispatcher("ex11select.jsp");

rd.forward(request, response);

null
Request Scope 입니다.
Session Scope 입니다.
Application Scope 입니다.

 

이때는 request값을 가지고 이동

요청과 응답이 1번씩만 일어난다.

 

효율이 request를 이용 할 때가 가장 좋아서 req + forward를 사용한다.

 

Forward 방식으로 이동을 했을때 주소창이 ex11select.jsp가 아니라 ex11scope.jsp인데

sendRedirect의 경우 1번째 응답에서 받은 새로운 주소를 2번째 요청에서 요청하면서 ex11select.jsp로 페이지가 바뀌는데 Forward의 경우는 url변화가 없다.

 

 

JDBC

Data Source Explorer에서 Database Connections -> new -> oracle

Oracle Thin Driver 11 , JAR List -> ojdbc6 지정

properties -> Connection URL -> jdbc:oracle:thin:@localhost:1521:xe -> Database Name -> xe

id / pw : 썼던것 hr/hr 설정

(WorkSpace 바꿀때 마다 설정 해줘야한다)

 

Maven : 프로젝트관리 도구

파일 -> 환경설정, 라이브러리를 파일에 기술하면   -> Maven이 자동으로 프로젝트 업데이트

xtml

 

other -> Maven project ->Catalog -> internal -> maven-archetype-webapp

Group id: kr.smhrd

Artifact id: mavenTest(프로젝트명)

 

만들고 build path -> configure build path

Libraries -> add librarary -> server runtime, web app libraries 2개 추가

 

properties -> Project Facets -> Dynamic Web Module -> 3.1로 변경

                                      -> Java -> 1.8로 변경

 

 

 

 

pom.xml에 https://mvnrepository.com/artifact/javax.servlet/jstl/1.2에서

 

<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

를 dependencies 태그안에 넣고 저장하면 (의존성주입)  jar파일을 자동으로 다운받는다.

 

JDBC (Dynamic web Project)를 우클릭 -> configure -> Convert to Maven Project 로

JDBC를 Maven Project로 변경가능하다.

 

이때 dependencies태그가 없기때문에 pom.xml에서 packaging과 build 태그 사이에

dependencies태그를 따로 만들어줘야한다.

 

Ojdbc6를 https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6에서 

 

<dependency>
    <groupId>com.oracle.database.jdbc</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.4</version>
</dependency>를 복사해서  dependencies태그 안에 넣으면 자동으로 다운 받는다.

 

jstl도 추가

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

 

반응형

'빅데이터 서비스 교육 > JSP Servlet' 카테고리의 다른 글

JSP 복습 (수정)  (0) 2022.06.02
JDBC MVC 패턴  (0) 2022.05.18
JSP Session  (0) 2022.05.13
JSP Cookie  (0) 2022.05.12
JSP request, response  (0) 2022.05.11