페이지 모듈화



※JSP 주석(TomCat에 의해서 컨버젼 할때 문장 무시) : <%--  문장  --%>


<jsp:include> 액션 태그

-다른 JSP 페이지의 '실행' 결과를 현재 위치에 삽입

-동작 방식


<jsp:include> 액션 태그

구문
<jsp:include page="포함할페이지" flush="true" />
-page 속성 : 포함할 JSP 페이지
-flush 속성 : 지정한 JSP 페이지를 실행하기 전에 출력 버퍼를 플러시 할 지의 여부를 지정한다.
 true이면 출력 버퍼를 플러시하고, false이면 하지 않는다.

중복 영역을 모듈화 하는 데 유용



<jsp:param> 액션 태그
신규 파라미터를 추가하는 데 사용
<jsp:param name="파라미터이름" value="값" />

<jsp:include page="/module/top.jsp" flush="false">
    <jsp:param name="param1" value="value1" />
    <jsp:param name="param2" value="value2" />
</jsp:include>



<jsp:param> 액션 태그의 동작 방식

기존 파라미터는 유지하고 파라미터를 새로 추가
  <jsp:include>로 포함되는 페이지에서만 유효


main.jsp(위와 동일한 결과값 출력)

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>메인 페이지</title>
</head>
<body>
<jsp:include page="top.jsp"/>
</body>
</html>

top.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<div style="border:1px solid red; background-color:#999999; height:100px;">
여기는 Top.jsp
</div>

보고있나






include 디렉티브

코드 차원에서 포함
구문 : <%@ include file="포함할파일" %>
활용
-모든 JSP 페이지에서 사용되는 변수 지정
-저작권 표시와 같은 간단하면서도 모든 페이지에서 중복되는 문장

main.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>메인 페이지</title>
</head>
<body>
<%-- <jsp:include page="top.jsp"/> --%>
<%@include file="top.jsp" %>
</body>
</html>


※설정파일은 점차 사라지고 있다~~



<jsp:include> 액션 태그와 include 디렉티브




<jsp:forward> 액션 태그
하나의 JSP 페이지에서 다른 JSP 페이지로 요청 처리를 전달할 때 사용
동작 방식





<jsp:forward> 액션 태그의 전형적 사용법
<%@ page contentType = "text/html; charset=euc-kr" %>
<%
    String forwardPage = null;
    
    // 조건에 따라 이동할 페이지를 지정
    if (조건판단1) {
        forwardPage = "페이지URI1";
    } else if (조건판단2) {
        forwardPage = "페이지URI2";
    } else if (조건판단3) {
        forwardPage = "페이지URI3";
    }
%>
<jsp:forward page="<%= forwardPage %>" />


기본 객체의 속성을 이용한 값 전달
속성을 이용해서 JSP 페이지 간 값 전달
 - <jsp:include>나 <jsp:forward>에서 사용



include와 forword의 차이
gugu.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String sDan = request.getParameter("dan");
	int dan = 0;
	if(sDan==null || sDan.equals("")){
		dan =2;
	}else{
	dan = Integer.valueOf(sDan);
	}
	String str = "";
	for(int i=1;i<=9;i++){
		str += dan + "*" + i+ "="+dan*i +"<br/>";
	}
	request.setAttribute("data", str);
%>
<jsp:forward page="guguView.jsp"/>
guguView.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String str = (String)request.getAttribute("data");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>구구단 보기(guguView.jsp)</title>
</head>
<body style="text-align:center;">
<%=str %>
</body>
</html>




01




에러 페이지 지정 & 에러 페이지 작성

에러 페이지 지정

- <%@ page errorPage = "예외발생시보여질JSP지정" %>


에러 페이지 작성

- <%@ page isErrorPage = "true" %>

isErrorPage 속성이 true인 경우 에러 페이지로 지정

- exception 기본 객체 : 발생한 예외 객체

exception.getMessage() : 예외 메시지

exception.printStackTrace() : 예외 추적 메시지 출력

- IE에서 예외가 올바르게 보여지려면 에러 페이지가 출력한 응답 데이터 크기가 513 바이트보다 커야 함

- <% response.setStatus(HttpServletResponse.SC_OK);%>


※요즘은 web.xml이용하지 않는게 추세




gugu.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page errorPage="error.jsp" %>    
<%
	String sDan = request.getParameter("dan");
	int dan =  Integer.valueOf(sDan);	
	String str = "";
	for(int i=1;i<=9;i++){
		str += dan + "*" + i+ "="+dan*i +"<br/>";
	}
	request.setAttribute("data", str);
%>
<jsp:forward page="guguView.jsp"/>

error.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>오류발생!!</title>
</head>
<body style="text-align:center;">
<h1>요청을 처리하는 중에 요류가 발생했습니다.</h1>
발생한 예외의 내용<p/><%=exception %>
</body>
</html>






Cookie

이용자의 상태정보를 클라이언트에 저장 할려고 하는 수단, 화면 출력용이 아님


JSP에서 쿠키 생성 / 읽기




쿠키 값의 인코딩/디코딩 처리

쿠키는 값으로 한글과 같은 문자를 가질 수 없음

-쿠키의 값을 인코딩해서 지정할 필요 있음


쿠키 값의 처리

 -값 설정시 : URLEncoder.encode("값", "euc-kr")

예, new Cookie("name", URLEncoder.encode("값", "euc-kr"));



     -값 조회시 : URLDecoder.decode("값", "euc-kr")

Cookie cookie = …; String value = URLDecoder.decode(cookie.getValue(), "euc-kr");



쿠키 값 변경
기존에 존재하는 지 확인 후, 쿠키 값 새로 설정
Cookie[] cookies = request.getCookies();
if (cookies != null && cookies.length > 0) {
    for (int i = 0 ; i < cookies.length ; i++) {
        if (cookies[i].getName().equals(name)) {
        	Cookie cookie = new Cookie(name, value);
        	response.addCookie(cookie);
        }
    }
}


cookie01.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	Cookie[] cookies = request.getCookies();
	boolean found = false;
	if(cookies==null){
		found=false;
	}else{
	for(int i=0;i<cookies.length;i++){
		if(cookies[i].getName().equals("sampleCookie")){
			found = true;
			}
		}
	}
	String msg = null;
	if( ! found){
		Cookie cookie = new Cookie("sampleCookie","This is Sample Cookie");
		response.addCookie(cookie);
		msg = "발견된 쿠키가 없었기 때문에 새로 설정했습니다.";
	}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>쿠키 테스트</title>
</head>
<body>
<script type="text/javascript">
	var found = <%=found%>;
	if(!found){
		alert("<%=msg%>");
	}
</script>
</body>
</html>




+ Recent posts