[0923]jspBean, forward, include
멤버 필드에 있는 값은 초기화 되어 사용된다.
boolean은 false 값으로 상수형은 0값으로 문자형은 null 값으로
아래의 예제는 클라이언트가 페이지를 호출할 때 값이 어떻게 변하는지 보여준다.
init() 메서드의 a 값은 처음에 한번 불려지는데 이 값은 static한 멤버필드가 되어
은행의 이율처럼 인스턴스가 생성되기 전부터 고정적인 상수 값을 가지게 되며,
b값은 클라이언트가 브라우져를 호출할때마다 값이 갱신되며,
c값은 클라이언트가 어떤 값을 입력할때마다 그 값이 변경된다.
======== mem.jsp ========================================================
======== http://localhost:9090/Test0923/mem.jsp?c=10======================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%!
int a;
int b;
%>
<%!
@Override
public void init(){
a++;
}
%>
<%
int c=Integer.parseInt(request.getParameter("c"));
b++;
%>
<%="a = "+a%><br>
<%="b = "+b%><br>
<%="c = "+c%><br>
</body>
</html>
======== foo.MemberFieldTestServlet.java =================================
= http://localhost:9090/Test0923/servlet/foo.MemberFieldTestServlet.jsp?c=50 =
package foo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MemberFieldTestServlet extends HttpServlet{
int a;
int b;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
b++;
int c=0;
c=Integer.parseInt(req.getParameter("c"));
System.err.println("doGet() a :"+a+"<br>");
System.err.println("doGet() b :"+b+"<br>");
System.err.println("doGet() c :"+c+"<br>");
PrintWriter out=res.getWriter();
out.println("doGet() a :"+a+"<br>");
out.println("doGet() b :"+b+"<br>");
out.println("doGet() c :"+c+"<br>");
}// doGet end
@Override
public void init() throws ServletException {
a++;
System.err.println("init :"+a);
}// init() end
}// class end
=========================================================================
아래 예제는 에러가 발생했을때 에러페이지로 이동하라는 소스가 담겨 있다.
======== test1.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page errorPage="errPage.jsp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
int a=4/0;
%>
</body>
</html>
======== errPage.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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
Error Handling Page<br>
<%
out.print("Exception : "+exception.getClass().getName()+"<br>");
%>
</body>
</html>
=========================================================================
useBean을 이용한 예와 그렇지 않은 경우 소스를 비교해 본다.
======== test2.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="mem.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
MemberBean mem1=new MemberBean();
session.setAttribute("mem1",mem1);
mem1.setName("이강국");
out.print(mem1.getName()+"<br>");
%>
<jsp:useBean id="mem2" class="mem.MemberBean" scope="session" />
<jsp:setProperty name="mem2" property="name" value="김강국" />
<jsp:getProperty name="mem2" property="name"/><br>
</body>
</html>
======== mem.MemberBean ===============================================
package mem;
public class MemberBean {
protected String num;
protected String name;
protected String id;
protected String passwd;
protected String tel;
protected String add;
public String getAdd() {
return add;
}
public void setAdd(String add) {
this.add = add;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
=========================================================================
자바빈을 이용한 두번째 예제 폼에서 데이터를 입력 받아 출력
======== test3call.jsp ====================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="test3.jsp">
번호 : <input type="text" name="num"><br>
이름 : <input type="text" name="name"><br>
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="passwd"><br>
연락처 : <input type="text" name="tel"><br>
주소 : <input type="text" name="add"><br>
<input type="submit" value="전송">
<input type="reset" value="취소">
</form>
</body>
</html>
======== test3.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@page import="mem.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
MemberBean mem11=new MemberBean();
mem11.setNum(request.getParameter("num").trim());
mem11.setName(request.getParameter("name").trim());
mem11.setId(request.getParameter("id").trim());
mem11.setPasswd(request.getParameter("passwd").trim());
mem11.setTel(request.getParameter("tel").trim());
mem11.setAdd(request.getParameter("add").trim());
%>
<jsp:useBean id="mem22" class="mem.MemberBean"/>
<jsp:setProperty name="mem22" property="*"/>
<jsp:getProperty name="mem22" property="name"/><br>
mem22.getAdd()==<%=mem22.getAdd()%><br>
mem11.getAdd()==<%=mem11.getAdd()%><br>
</body>
</html>
=========================================================================
include와 forward를 이용한 정적, 동적 데이터 호출에 관한 예
test4include.jsp 와 test4_1include.jsp를 호출했을때의 차이점
include "test4_1include.jsp" 호출이 되지 않는다. ㅡㅡ;
forward를 호출했을 경우 앞의 include는 무시된다.
======== test4.jsp ========================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
test4.jsp start<br>
<%
int c=50;
%>
<%@include file="test4include.jsp" %>
test4.jsp end<br>
동적으로 부를수 있는가?<br>
<jsp:include flush="true" page="test4_1include.jsp" >
<jsp:param name="d" value="이강국" />
</jsp:include>
</body>
</html>
======== test4include.jsp =================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
int a=40;
int b=a*c;
out.print(a+"*"+c+"="+b);
%>
======== test4_1include.jsp ===============================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%
int c=3;
int a=40;
int b=a*c;
request.setCharacterEncoding("EUC=KR");
out.print(a+"*"+c+"="+b+request.getParameter("d"));
%>
======== test4_2.jsp ======================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
forward file
</body>
</html>
======== test4forward.jsp ================================================
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
test4.jsp start<br>
<%
int c=50;
%>
<%@include file="test4include.jsp" %>
test4.jsp end<br>
동적으로 부를수 있는가?<br>
<jsp:forward page="test4forward.jsp"/>
</body>
</html>
=========================================================================
'수업 > Head First Servlets & JSP' 카테고리의 다른 글
로그인, 회원가입, 정보수정, 탈퇴 (2) | 2008.09.26 |
---|---|
Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고? (1) | 2008.09.17 |
개발자의 연봉에 관한 글
'평가,코멘트,하고싶은말' 카테고리의 다른 글
추천서적들 (0) | 2008.08.14 |
---|---|
너네 공부하는 그룹 말이야~ (0) | 2008.08.05 |
글이 안올라오네 ㅋㅋㅋ (0) | 2008.08.02 |
7월17일자 KBS TV 아침마당을 다시보기로 보세요. - 포스팅 진행중 (0) | 2008.07.21 |
훔 글이 없네. (0) | 2008.07.15 |
참고할 만한 공부 관련 블로그
어려운 블로그들은 다음에 소개할께
지금은 너처럼 공부하는 사람들의 블로그들 소개..
http://blog.naver.com/rainbow8830
http://micropilot.tistory.com
http://blog.naver.com/dalbong97
블로그 구독은
Google Reader 나 HanRss 를 사용하면 편하다.
그리고 브라우저는 Firefox 를 사용하면 HanRSS 사용해서 읽기 편해.
'Java' 카테고리의 다른 글
자바 로드맵 두개~ (0) | 2008.08.24 |
---|