7. 주석
- JSP: <%-- --%>
- HTML:
jspComment.jsp
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head><title>JSP 주석</title></head>
<body>
<%-- JSP 주석입니다. --%>
<!-- HTML 주석입니다. -->
주석은 출력 결과에 포함되지 않습니다.
</body>
</html>
8. JSP 웹어플리케이션 폴더 구조와 URL 매핑
8.1. 웹어플리케이션 폴더와 URL 관계
- webapps/chap01,chap02,ROOT 등 ==> 컨텍스트 경로(Context path)
- [Tomcat]\webapps/chap01 --> http://localhost:8080:/chap01
8.1.1 컨텍스트 경로(Context path) 리턴 메소드
- request.getContextPath()
getContextPath.jsp
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head><title>웹 어플리케이션 경로 구하기</title></head>
<body>
웹 어플리케이션 컨텍스트 경로: "<%= request.getContextPath() %>"
</body>
</html>
8.1.2. 웹어플리케이션 그외 폴더(Tomcat)
- WEB-INF : 설정정보를 담고 있는 web.xml 위치
- WEB-INF\classes : 클래스파일 위치
- WEB-INF\lib : 라이브러리 jar 파일 위치
8.1.3 웹어플리케이션 배포
- 대상 폴더에 파일 직접 복사(FTP)
- war 파일로 묶어서 배포
9. JSP 기본 객체 SCOPE
- scope : page, reqeust, session, application
9.1 page scope
- 한 번의 클라이언트 요청이 오면, 하나의 JSP 페이지가 응답
- 하나의 JSP 페이지 내에서만 객체 값 공유
- 값 set : pageContext.setAttribute("name", "value");
- 값 get : pageContext.getAttribute("name");
page_scope_set.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>
<h1>Page Scope Set</h1>
<%
pageContext.setAttribute("scope", "Page");
String scope = (String)pageContext.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="page_scope_use.jsp">Scope Use</a>
</body>
</html>
page_scope_use.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>
<h1>Request Scope Use</h1>
<%
String scope = (String)request.getAttribute("scope");
%>
Scope : <%=scope %> <br>
</body>
</html>
9.2 request scope
- 요청을 받아서 응답하기까지 객체가 유효한 영역
- forward 사용 시 값 공유 가능
- MVC 패턴 시 화면(View)로 값 forward 시 사용
- 값 set : request.setAttribute("name", "value");
- 값 get : request.getAttribute("name");
request_scope_set.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>
<h1>Request Scope Set</h1>
<%
request.setAttribute("scope", "Request");
String scope = (String)request.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="request_scope_use.jsp">Scope Use</a>
<jsp:forward page="request_scope_use.jsp"></jsp:forward>
</body>
</html>
request_scope_use.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>
<h1>Request Scope Use</h1>
<%
String scope = (String)request.getAttribute("scope");
%>
Scope : <%=scope %> <br>
</body>
</html>
9.3 session scope
- 브라우저 당 1개의 session 객체가 생성 됨
- 같은 브라우저 내에서 모든 페이지들이 값을 공유
- 로그인 처리 등에 사용
- 서버메모리에 생성됨(쿠키 Cookie는 사용자 PC에 생성)
- WAS 마다 소멸 시간이 설정되어 있음(IIS 20분, Tomcat 30분)
- 브라우저 종료시 사라짐
- 값 set : session.setAttribute("name", "value");
- 값 get : session.getAttribute("name");
- 삭제 : session.invalidate()
session_scope_set.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>
<h1>Session Scope Set</h1>
<%
session.setAttribute("scope", "Session");
String scope = (String)session.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="session_scope_use1.jsp">Scope Use</a>
</body>
</html>
session_scope_use1.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>
<h1>Session Scope Use1</h1>
<%
String scope = (String)session.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="session_scope_use2.jsp">Scope Use</a>
</body>
</html>
session_scope_use2.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>
<h1>Session Scope Use2</h1>
<%
String scope = (String)session.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="session_scope_use1.jsp">Scope Use</a>
</body>
</html>
9.4 application scope
- 하나의 애플리케이션 당 1개의 application 객체가 생성 됨
- 같은 애플리케이션 내에서 모든 페이지들이 값을 공유
- 전체적으로 공유 해야 하는 값에 사용
- 애플리케이션 중지 시 사라짐
- 값 set : application.setAttribute("name", "value");
- 값 get : application.getAttribute("name");
application_scope_set.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>
<h1>Application Scope Set</h1>
<%
application.setAttribute("scope", "Application");
String scope = (String)application.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="application_scope_use1.jsp">Scope Use</a>
</body>
</html>
application_scope_use1.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>
<h1>Application Scope Use1</h1>
<%
application.setAttribute("scope", "Application");
String scope = (String)application.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="application_scope_use2.jsp">Scope Use</a>
</body>
</html>
application_scope_use2.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>
<h1>Application Scope Use1</h1>
<%
application.setAttribute("scope", "Application");
String scope = (String)application.getAttribute("scope");
%>
Scope : <%=scope %> <br>
<hr>
<a href="application_scope_use1.jsp">Scope Use</a>
</body>
</html>
9.5 scope 활용
- application을 이용한 총 페이지호출수 처리
- index 페이지에 접속하면 application 값 생성
- session을 이용한 현재 로그인수 처리
- 로그인하면 session 값과 application 증가 값 생성
- 로그아웃하면 session 값 소멸과 application 감소 값 생성
total_num.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Object oVisit = application.getAttribute("visit");
int iVisit = 0;
if(oVisit != null){
iVisit = (int)oVisit;
}
iVisit = iVisit + 1;
application.setAttribute("visit", iVisit);
%>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ include file="total_num.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
총 페이지호출 수 : <%=application.getAttribute("visit"); %> <br>
현재 로그인 수 : <%=application.getAttribute("login"); %>
<hr>
<% if(session.getAttribute("id") == null){ %>
<form action="login_ok.jsp" method="post">
i d : <input type="text" name="id" > <br>
pwd : <input type="text" name="pwd" > <br>
<input type="submit" value="LOGIN">
</form>
<%} else { %>
로그인 ID : <%=session.getAttribute("id") %> |
<a href="logout_ok.jsp">LOGOUT</a>
<%} %>
</body>
</html>
login_ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
if(id.equals("test")){
if(pwd.equals("1234")){
// ok
session.setAttribute("id", id);
int iLogin = 0;
Object oLogin = application.getAttribute("login");
if(oLogin != null){
iLogin = (int)oLogin;
}
iLogin = iLogin + 1;
application.setAttribute("login", iLogin);
}
}
response.sendRedirect("index.jsp");
%>
logout_ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
session.invalidate();
int iLogin = 0;
Object oLogin = application.getAttribute("login");
if(oLogin != null){
iLogin = (int)oLogin;
}
iLogin = iLogin - 1;
application.setAttribute("login", iLogin);
response.sendRedirect("index.jsp");
%>