오늘이라도
[Web] 11. Action Tag : param, include / 시간 출력 : Date, SimpleDateFormat / Scope : 객체 범위 본문
[Web] 11. Action Tag : param, include / 시간 출력 : Date, SimpleDateFormat / Scope : 객체 범위
upcake_ 2020. 5. 21. 09:32- Action Tag : param -
★ 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 -
- <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.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 : 공유 범위
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>
'취업성공패키지 SW 개발자 교육 > Web' 카테고리의 다른 글
[Servlet & JSP] 13. EL 문법(표현식) ② : jsp23 ~ 28 (0) | 2020.05.26 |
---|---|
[Web] 12. EL 문법(표현식) ① : jsp17 ~ 22 (0) | 2020.05.25 |
[Web] 10. JSP ④ : jsp09 ~ 12 : 수정 기능 추가 / JSP, Action Tag, EL 문법 출력 비교 (0) | 2020.05.20 |
[Web] 9. JSP ③ : jsp06.jsp ~ jsp08jsp : 삭제 기능 추가, 회원 정보 수정 화면 구성 (0) | 2020.05.19 |
[Web] 8. JSP ② : jsp03.jsp ~ jsp05.jsp (0) | 2020.05.18 |