<jsp:setProperty> 액션 태그

자바빈 객체의 프로퍼티 값 설정

구문

<jsp:setProperty name="id" property="이름" value=""  />

name - 자바빈 객체의 이름

property - 값을 설정할 프로퍼티

value - 프로퍼티의

<jsp:setProperty name="id" property="이름"
   
param="파라미터이름"  />

param - 프로퍼티의 값으로 사용할 파라미터 이름.

<jsp:setProperty name="id" property="*" />

프로퍼티와 동일한 이름의 파라미터를 이용해서 값을 설정

폼에 입력한 값을 자바 객체에 저장할 때 유용하게 사용




예제)



회원 정보 저장 폼



























Cookie 를 이용한 login 처리

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>
loginForm.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>
<form action="loginProc.jsp" method="post">
<table>
<tr><th>아이디</th><td><input type="text" name="id"></td></tr>
<tr><th>비	번</th><td><input type="password" name="pwd"></td></tr>
<tr><td colspan="2"><input type="submit" value="로그인"></td></tr>
</table>
</form>
</body>
</html>
loginProc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String id= request.getParameter("id");
	String pwd= request.getParameter("pwd");
	if(id.length()> 0&& pwd.length()>0){
		request.setAttribute("login", "pass");
	%>
		<jsp:forward page="loginSuccess.jsp"/>		
 <%}else{%>
		<jsp:forward page="loginFail.jsp"/>
<%}
%>

loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	if(request.getAttribute("login")!=null){
		Cookie cookie = new Cookie("login","pass");
		response.addCookie(cookie);
	}else{
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>
<!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>
<h1>로그인에 성공했습니다.</h1>
<%=request.getParameter("id") %><br/>
<%=request.getParameter("pwd") %><br/><p/>
<a href="service.jsp">서비스 이용하기</a>
</body>
</html>
service.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ include file="loginCheck.jsp" %>
<!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><p/><p/><p/>
<h1>회원이므로 이 기능을 이용할 수 있습니다.</h1>
</body>
</html>
loginCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
Cookie[] cookies = request.getCookies();
	boolean pass = false;
	if(cookies!=null){
		for(int i=0;i<cookies.length;i++){
			if(cookies[i].getName().equals("login")){
				pass = true;
				break;
			}
		}
	}
	if(!pass){
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>






세션(session)이란

웹 컨테이너에서 클라이언트의 정보를 보관할 때 사용

오직 서버에서만 생성

클라이언트마다 세션이 생성





세션과 session 기본 객체

page 디렉티브의 session 속성 값을 true로 지정

-세션이 존재하지 않을 경우 세션이 생성되고, 세션이 존재할 경우 이미 생성된 세션을 사용

session 기본 객체를 이용해서 세션에 접근

-session의 기본 값은 true이므로 false로 하지 않는 이상 항상 세션 사용

<%@ page contentType = ... %>

<%@ page session = "true" %>

<%

    ...

    session.setAttribute("userInfo", userInfo);

    ...

%>

속성 이용해서 클라이언트 관련 정보 저장



Session을 이용한 login 처리

※위 cookie를 이용한 login 처리 예제와 소스 같고 아래만 소스바꿈

loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	if(request.getAttribute("login")!=null){
		/*상태 정보가 session으로 감  */
		session.setAttribute("login","pass");
	}else{
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>
<!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>
<h1>로그인에 성공했습니다.</h1>
<%=request.getParameter("id") %><br/>
<%=request.getParameter("pwd") %><br/><p/>
<a href="service.jsp">서비스 이용하기</a>
</body>
</html>
loginCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String login = (String)session.getAttribute("login");
	if(login==null){
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>


모든 페이지에서 로그인체크 해서 세션정보(아이디 비번)값이 없으면 경고 창 띄우고 loginForm으로 이동

loginCheck.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String login = (String)session.getAttribute("login");
	boolean pass = false;
	if(login!=null){
		pass = true;
	}
	
%>	
<script type="text/javascript">
	var pass = <%=pass%>;
	if(!pass){
		alert("회원으로 로그인한 경우에만 사용할 수 있습니다.");
		location.href="loginForm.jsp";
	}
</script>




자바빈

Bean

-1.기본 생성자

-2.변수

-3.set,get

-4.public



자바빈(JavaBeans)


-자바빈 - 웹 프로그래밍에서 데이터의 표현을 목적으로 사용

-일반적인 구성

값을 저장하기 위한 필드

값을 수정하기 위한 setter

값을 읽기 위한 getter


public class BeanClassName {
    /* 값을 저장하는 필드 */
    private String value;
    
    /* BeanClassName의 기본 생성자 */
    public BeanClassName() {
    }
    
    /* 필드의 값을 읽어오는 값 */
    public String getValue() {
        return value;
    }

    /* 필드의 값을 변경하는 값 */
    public void setValue(String value) {
        this.value = value;
    }
}

<jsp:useBean> 태그

JSP에서 자바빈 객체를 생성할 때 사용

구문

-<jsp:useBean id="[빈이름]" class="[자바빈클래스이름]"    scope="[범위]" />

id - JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름

class - 패키지 이름을 포함한 자바빈 클래스의 완전한 이름

scope - 자바빈 객체가 저장될 영역을 지정한다. page, request, session, application 중 

하나를 값으로 갖는다. 기본값은 page.

-예

<jsp:useBean id="info" class="chap11.member.MemberInfo" scope="request" />
<%= info.getName() %>







페이지 모듈화



※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