오늘이라도

[Web] 11. Action Tag : param, include / 시간 출력 : Date, SimpleDateFormat / Scope : 객체 범위 본문

취업성공패키지 SW 개발자 교육/Web

[Web] 11. Action Tag : param, include / 시간 출력 : Date, SimpleDateFormat / Scope : 객체 범위

upcake_ 2020. 5. 21. 09:32
반응형

 - Action Tag : param -

▲jsp11 ~ 12 : IP주소 가져오기

★ JSP Action Tag : 프로그래밍적인 요소 → 태그적인 요소
  - <jsp : useBean ~~ /> : 객체를 생성하는 태그
  - <jsp : setProperty ~~ /> : DTO 객체에 있는 setter Method 호출
  - <jsp : getProperty ~~ /> : DTO 객체에 있는 getter Method 호출
  - <jsp : forward ~~ /> : request.forward() 방식으로 페이지 전환 (동적)
  - <jsp : param ~~ /> : request.sendRedirect() 방식으로 페이지 전환 시 매개 변수 전달 (동적)

 

▼jsp11.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
%>

<jsp:useBean id="dto" class="com.hanul.study.MemberDTO">
	<jsp:setProperty property="*" name="dto"/>
</jsp:useBean>

<!-- dto 객체를 jsp12.jsp로 넘겨서 출력 : 동적 페이지 전환 ▶ request.forward() -->
<%
String ip = request.getRemoteHost();	//클라이언트의 IP 주소를 가져온다.
request.setAttribute("dto", dto);		//바인딩(연결) 객체
//request.setAttribute("ip", ip);
//RequestDispatcher rd = request.getRequestDispatcher("jsp12.jsp");	//페이지 호출
//rd.forward(request, response);		//페이지 전환
%>

<jsp:forward page="jsp12.jsp">
	<jsp:param value="<%=ip %>" name="ip"/>
</jsp:forward>

 

▼jsp12.jsp

<%@page import="com.hanul.study.MemberDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
MemberDTO dto = (MemberDTO) request.getAttribute("dto");	//바인딩 객체를 받는다 ▶ 객체 타입을 MemberDTO 타입으로 캐스팅한다
//String ip = (String) request.getAttribute("ip");
String ip = request.getParameter("ip");	// <jsp : param ~~ />로 보내서 getParameter로 받는다.

pageContext.setAttribute("ip", ip);	//현재 페이지에서 사용할 수 있는 바인딩 객체를 생성
//Scope(공유 범위) : pageContext, request, session, application → EL 문법에 사용
//pageContext : 현재 페이지에서만
//request : 현재 페이지와 요청한 페이지
//session : 브라우저가 종료 될 때까지 (ex: 다른 사이트를 갔다 와도 로그인 상태가 유지되는 것)
//application : 서버가 재시작하거나 종료될때까지
%>

<!-- 식별자가 겹치면 안되므로 dto가 아닌 actionDto로 식별자를 정하였다. -->
<jsp:useBean id="actionDTO" class="com.hanul.study.MemberDTO">
	<jsp:setProperty property="*" name="actionDTO"/>
</jsp:useBean>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 12</title>
</head>
<body>
	이름(JSP) : <%=dto.getIrum() %><br/>
	이름(JSP) : <%=actionDTO.getIrum() %><br/>
	<br />
	
	아이디(Action Tag) : <jsp:getProperty property="id" name="actionDTO"/><br/>
	<!-- 자바로 받은 dto 객체(dto)는 사용할 수 없고 액션 태그로 dto 객체(actionDTO)를 받아야 한다. -->
	<br />
	<!-- jsp:getProperty ~~  Action Tag는 반드시 jsp:useBean ~~ Action Tag로 객체가 생성되어있어야만 사용가능하다. -->
	
	주소(EL) : ${dto.addr }<br/>
	<br />
	
	전화번호(EL) : ${actionDTO.tel }<br/>
	<!-- EL은 자바든 액션태그든 둘 다 사용가능하다. -->
	<br/>
	
	IP주소(JSP) : <%=ip %><br />
	IP주소(EL) : ${ip }
</body>
</html>

 

 

 - Action Tag : include -

▲jsp14

- <jsp : include ~~ /> : 특정 페이지를 포함한다. 
  ○ include 방법 
    # <%@ include file = "~~~" %> : 지시자 ▶ 정적 페이지(예 : 회사 주소, 안 변함) 
    # <jsp : include page = "~~~" /> : Action Tag ▶ 동적 페이지(예 : 현재 시간, 자주 변함)

 

▼jsp13.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
경기도 성남시 분당구

 

▼jsp14.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 14</title>
</head>
<body>
	<div align="center">
		<table border="1">
			<tr align="center">
				<td colspan="2" height="150">회사 로고 / 네비게이션 메뉴</td>
			</tr>
			<tr align="center"> 
				<td height="300" width="30%">로그인이 들어갈 부분</td>
				<td width="70%">본문 영역(Content)이 들어갈 부분</td>
			</tr>
			<tr align="center">
				<td colspan="2"> 
					<!-- 회사 주소가 들어갈 부분(jsp13.jsp) -->
					<%@ include file="jsp13.jsp" %><br />
					<jsp:include page="jsp13.jsp"></jsp:include>
				</td>
			</tr>
		</table>
	</div>
</body>
</html>

 

 

- 시간 출력 : Date, SimpleDateFormat -

▲jsp15 ~ 16 : 시간 출력

 

▼jsp15.jsp

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
Date date = new Date();	//날짜와 시간 정보를 제공하는 클래스
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
//SimpleDateFormat 패턴은 검색해서 참조할 것
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%=date %><br />
	<%=sdf.format(date) %>
</body>
</html>

 

▼jsp16.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 16</title>
<script type="text/javascript">
	function fnTime() {
		var date = new Date();
//		alert(date); // Thu May 21 2020 16:35:11 GMT+0900 (대한민국 표준시) → 오후 04시 34분 31초
		
		var hour = date.getHours();		// 현재 시간의 시 : 16
		var minute = date.getMinutes();	// 현재 시간의 분 : 35
		var second = date.getSeconds();	// 현재 시간의 초 : 11
//		alert(hour + "시 " + minute + "분 " + second + "초");

		var setTime = hour > 12 ? "오후 " : "오전 ";
		setTime += (hour > 12 ? hour - 12 : hour) + "시 ";
		setTime += (minute < 10 ? "0" + minute : minute) + "분 ";
		setTime += (second < 10 ? "0" + second : second) + "초";
//		alert(setTime);

		document.getElementById("time").innerHTML = setTime;
		setTimeout("fnTime()", 1000);
	}
</script>
</head>
<body onload="fnTime()">
<div align="center" id="time">현재 시간</div>
	<div align="center">
		<table border="1">
			<tr align="center">
				<td colspan="2" height="150">회사 로고 / 네비게이션 메뉴</td>
			</tr>
			<tr align="center"> 
				<td height="300" width="30%">로그인이 들어갈 부분</td>
				<td width="70%">본문 영역(Content)이 들어갈 부분</td>
			</tr>
			<tr align="center">
				<td colspan="2"> 
					<!-- 날짜와 시간이 들어갈 부분(jsp15.jsp) -->
					<%@ include file="jsp15.jsp" %><br />	<!-- 정적 -->
					<jsp:include page="jsp15.jsp"></jsp:include> <!-- 동적 -->
				</td>
			</tr>
		</table>
	</div>
</body>
</html>

 

 

 - Scope : 객체 범위 -

▲scope

★ Scope : 공유 범위
  1. page scope
    - pageContext 내장 객체를 이용하여 바인딩(연결) 객체를 공유
    - 객체를 공유한 jsp 페이지(현재 페이지)에서만 사용 가능

  2. request scope
    - request 내장 객체를 이용하여 바인딩(연결) 객체를 공유
    - 객체를 공유한 jsp 페이지(현재 페이지)와 요청한 jsp 페이지에서 사용 가능

  3. session scope
    - session 내장 객체를 이용하여 바인딩(연결) 객체를 공유
    - 모든 jsp 페이지에서 사용 가능
    - 세션 속성 값을 설정하여 지정한 시간 또는 웹 브라우저가 열려 있는 동안 사용 가능

  4. application scope
    - application 내장 객체를 이용하여 바인딩(연결) 객체를 공유
    - 모든 jsp 페이지에서 사용 가능
    - 웹 브라우저가 종료되어도 서버가 중지되기 전까지 사용 가능

 

▼scope.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 
○ scope.jsp 페이지에서 생성한 바인딩(연결) 객체를 scopeUse.jsp 넘기자 : 공유
	- scope 내장 객체(pageContext, request, session, application)를 이용하여 객체를 생성
	- 형식 : 내장객체.setAttribute(name, value); ▶ request.setAttribute("dto", dto);
	- name : 문자열(식별자), value : 공유 객체(값)
 -->
<%
//바인딩(연결) 객체 생성 : setAttribute();
pageContext.setAttribute("pageContextName", "홍길동");
request.setAttribute("requestName", "JAVA");
session.setAttribute("sessionName", "Servlet/JSP");
application.setAttribute("applicationName", "Android");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Scope JSP</title>
</head>
<body>
	<%
	//바인딩(연결) 객체를 받자 : getAttribute();
	String pageContextName = (String) pageContext.getAttribute("pageContextName");
	String requestName = (String) request.getAttribute("requestName");
	String sessionName = (String) session.getAttribute("sessionName");
	String applicationName = (String) application.getAttribute("applicationName");
	%>
	<ul>
		<li>pageContext : <%=pageContextName %></li>
		<li>request : <%=requestName %></li>
		<li>session : <%=sessionName %></li>
		<li>application : <%=applicationName %></li>
	</ul>
	<br />
	<a href="scopeUse.jsp">scopeUse.jsp 페이지로 이동</a>
</body>
</html>

 

▼scopeUse.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
//바인딩(연결) 객체를 받자 : getAttribute();
String pageContextName = (String) pageContext.getAttribute("pageContextName");
String requestName = (String) request.getAttribute("requestName");
String sessionName = (String) session.getAttribute("sessionName");
String applicationName = (String) application.getAttribute("applicationName");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ScopeUse JSP</title>
</head>
<body>
	<ul>
		<li>pageContext : <%=pageContextName %></li>
		<li>request : <%=requestName %></li>
		<li>session : <%=sessionName %></li>
		<li>application : <%=applicationName %></li>
	</ul>
</body>
</html>
반응형