'JSP'에 해당되는 글 3건
- 2008.09.26 로그인, 회원가입, 정보수정, 탈퇴 2
- 2008.09.23 [0923]jspBean, forward, include
- 2008.09.17 Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고? 1
로그인, 회원가입, 정보수정, 탈퇴
MVC 모델을 통한 회원가입에 대한 페이지들입니다.
전체가 참조하게 될 web.xml / MemberBean.java / MemberDAO.java 파일 입니다.
데이터베이스는 MYSQL을 사용하였고 서블릿은 TOMCAT 5.5 버전입니다.
======== web.xml ========================================================
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<display-name>Welcome to Test0922</display-name>
<description>
Welcome to Test0922
</description>
<servlet>
<servlet-name>login.jsp</servlet-name>
<jsp-file>/member/login.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>logout.jsp</servlet-name>
<jsp-file>/member/logout.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>welcome.jsp</servlet-name>
<jsp-file>/member/welcome.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>member.control.LoginServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>JoinMemberServlet</servlet-name>
<servlet-class>member.control.JoinMemberServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>modify.jsp</servlet-name>
<jsp-file>/member/modify.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>ModifyMemberServlet</servlet-name>
<servlet-class>member.control.ModifyMemberServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>modifyok.jsp</servlet-name>
<jsp-file>/member/modifyok.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>modifyfail.jsp</servlet-name>
<jsp-file>/member/modifyfail.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>memberout.jsp</servlet-name>
<jsp-file>/member/memberout.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>OutMemberServlet</servlet-name>
<servlet-class>member.control.OutMemberServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>outmemberok.jsp</servlet-name>
<jsp-file>/member/outmemberok.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>outmemberfail.jsp</servlet-name>
<jsp-file>/member/outmemberfail.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login.jsp</servlet-name>
<url-pattern>/login.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>logout.jsp</servlet-name>
<url-pattern>/logout.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>welcome.jsp</servlet-name>
<url-pattern>/welcome.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>JoinMemberServlet</servlet-name>
<url-pattern>/joinmember.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>modify.jsp</servlet-name>
<url-pattern>/modify.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ModifyMemberServlet</servlet-name>
<url-pattern>/modifymember.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>modifyok.jsp</servlet-name>
<url-pattern>/modifyok.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>modifyfail.jsp</servlet-name>
<url-pattern>/modifyfail.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>memberout.jsp</servlet-name>
<url-pattern>/memberout.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>OutMemberServlet</servlet-name>
<url-pattern>/outmember.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>outmemberok.jsp</servlet-name>
<url-pattern>/outmemberok.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>outmemberfail.jsp</servlet-name>
<url-pattern>/outmemberfail.jsp</url-pattern>
</servlet-mapping>
</web-app>
==========================================================================
회원가입 항목인 필드들을 정의 하였습니다.
======== MemberBean.java ================================================
package member.model;
public class MemberBean {
protected String num;
protected String name;
protected String id;
protected String passwd;
protected String tel;
protected String add;
public String getAddr() {
return add;
}
public void setAddr(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;
}
}
==========================================================================
데이터베이스 연결 및 처리부분에 대한 DAO 파일입니다.
======== MemberDAO.java ================================================
package member.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MemberDAO {
public MemberBean memberInfo(String id){
MemberBean temp=null;
String sql="select * from member where id=?";
PreparedStatement pstmt=null;
ResultSet rest=null;
try{
pstmt=conn.prepareStatement(sql);
pstmt.setString(1,id);
rest=pstmt.executeQuery();
if(rest.next()){
temp=new MemberBean();
temp.setNum(rest.getString(1));
temp.setName(rest.getString(2));
temp.setId(rest.getString(3));
temp.setPasswd(rest.getString(4));
temp.setTel(rest.getString(5));
temp.setAddr(rest.getString(6));
}
}catch (Exception e) {
e.printStackTrace();
}
return temp;
}
public boolean memberJoin(MemberBean mb){
PreparedStatement pstmt=null;
String sql3="insert into member values(?,?,?,?,?,?);";
try {
pstmt=conn.prepareStatement(sql3);
pstmt.setString(1, mb.getNum());
pstmt.setString(2, mb.getName());
pstmt.setString(3, mb.getId());
pstmt.setString(4, mb.getPasswd());
pstmt.setString(5, mb.getTel());
pstmt.setString(6, mb.getAddr());
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public boolean memberModify(MemberBean mb){
PreparedStatement pstmt=null;
String sql4="update member set name=?, id=?, passwd=?, tel=?, addr=? where num=?;";
try {
pstmt=conn.prepareStatement(sql4);
pstmt.setString(1, mb.getName());
pstmt.setString(2, mb.getId());
pstmt.setString(3, mb.getPasswd());
pstmt.setString(4, mb.getTel());
pstmt.setString(5, mb.getAddr());
pstmt.setString(6, mb.getNum());
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public boolean outmember(MemberBean mb){
PreparedStatement pstmt=null;
String sql4="delete from member where num=?;";
try {
pstmt=conn.prepareStatement(sql4);
pstmt.setString(1, mb.getName());
pstmt.setString(2, mb.getId());
pstmt.setString(3, mb.getPasswd());
pstmt.setString(4, mb.getTel());
pstmt.setString(5, mb.getAddr());
pstmt.setString(6, mb.getNum());
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public boolean loginCheck(String id,String passwd){
String sql1="select * from member where id='kim123'";
sql1="select * from member where id='"+id+"' and passwd='"+passwd+"'";
String sql2="select * from member where id=? and passwd=?";
//
PreparedStatement pstmt=null;
ResultSet rest=null;
try {
pstmt=conn.prepareStatement(sql2);
pstmt.setString(1, id);
pstmt.setString(2, passwd);
rest=pstmt.executeQuery();
if(rest.next())
return true;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
Connection conn;
public MemberDAO(){
//DB에 접속하는 부분
//driver load
//connection
try {
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mydb";
String user="root";
String passwd="admin";
conn=DriverManager.getConnection(url, user, passwd);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// properties file에서 선택적으로 가져올수 있도록
// 톰캣의web.xml에 애초에 설정하고 들어가는 방법
// 현재app의 web.xml설정
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
==========================================================================
로그인 페이지입니다.
======== index.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>환영합니다.</title>
</head>
<body>
환영합니다. <%@include file="member/login.jsp" %>
</body>
</html>
======== login.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> Login JSP</title>
</head>
<body>
<form action="login.do" method="post">
아이디:<input type="text" name="id"><br>
암 호:<input type="password" name="passwd"><br>
<input type="submit" value="로그인">
<input type="reset" value="취소" >
<%-- 회원가입 버튼으로 바꾸어야함 --%>
</form>
<form action="member/joinmember.jsp" method="post">
<input type="submit" value="회원가입">
<%-- 회원가입 버튼으로 바꾸어야함 --%>
</form>
</body>
</html>
======== LoginServlet.java =================================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;
public class LoginServlet extends HttpServlet {
public void doPost(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException{
// client로부터 받은 id,passwd가 존재하는지 확인
String id= req.getParameter("id").trim();
String passwd=req.getParameter("passwd").trim();
//id,passwd는 null이 아니라는 전제
// MemberDAO 에 id,passwd를 전달해서 결과를 통보 받은후
MemberDAO dao=new MemberDAO();
//필요할때마다 커넥션을 만드는 것은 좋지 않은 방법
boolean isMember=dao.loginCheck(id, passwd);
if(isMember){
//멤버의 데이타를 받아옴
MemberBean loginMember=dao.memberInfo(id);
if(loginMember==null){
//???
}else{
//로그인상태에서 로그아웃할때까지 멤버데이타 값을 기억시키고
HttpSession session= req.getSession();
//필요하면 언제든지 사용할 수 있도록 유지
session.setAttribute("loginMemberData", loginMember);
// welcome.jsp
//login.do 에의해서 현재서블릿이 호출된 상태
req.getRequestDispatcher("welcome.jsp").forward(req,res);
}
}else {
//loginfaile.jsp
res.sendRedirect("member/loginfail.jsp");
}
}//doPost() end
}//class end
======== loginok.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>loginfail</title>
</head>
<body>
loginfail
</body>
</html>
======== logout.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>logout</title>
</head>
<body>
이용해 주셔서 감사합니다.<br>
<%
if(!session.isNew())session.invalidate();
%>
</body>
</html>
==========================================================================
회원가입 페이지입니다.
======== joinmember.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>JOIN MEMBER JSP</title>
</head>
<body>
JOIN MEMBER<br>
<form action="../joinmember.do" method="post">
번호:<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="addr"><br>
<input type="submit" value="회원가입">
<input type="reset" value="취소" >
</form>
</body>
</html>
======== JoinMemberServlet.jsp ===========================================
package member.control;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;
public class JoinMemberServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
// joinmember.jsp 값을 받는다
MemberDAO dao=new MemberDAO();
MemberBean mb=new MemberBean();
mb.setNum(req.getParameter("num"));
mb.setName(req.getParameter("name"));
mb.setId(req.getParameter("id"));
mb.setPasswd(req.getParameter("passwd"));
mb.setTel(req.getParameter("tel"));
mb.setAddr(req.getParameter("addr"));
boolean isSuccess=dao.memberJoin(mb);
if(isSuccess){
HttpSession session=req.getSession();
session.setAttribute("loginMemberData", mb);
req.getRequestDispatcher("welcome.jsp").forward(req,res);
}
else {
res.sendRedirect("member/loginfail.jsp");
}
}
}
======== welcome.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="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Welcome jsp</title>
<script type="text/javascript" language="javascript">
function logout(){
document.location="logout.jsp";
}
</script>
<script type="text/javascript" language="javascript">
function modify(){
document.location="modify.jsp";
}
</script>
<script type="text/javascript" language="javascript">
function memberout(){
document.location="memberout.jsp";
}
</script>
</head>
<body>
Welcome<br>
<%
MemberBean loginMember = new MemberBean();
session = request.getSession();
loginMember=
(MemberBean)session.getAttribute("loginMemberData");
%>
<%=loginMember.getName() %>님 환영합니다.<br>
<input type="button" value="정보수정" onclick="modify()">
<input type="button" value="로그아웃" onclick="logout()">
<input type="button" value="회원탈퇴" onclick="memberout()">
</body>
</html>
==========================================================================
정보수정 페이지 입니다.
======== modify.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="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Modify JSP</title>
</head>
<body>
정보 수정
<%
session = request.getSession();
MemberBean mb = new MemberBean();
mb = (MemberBean)session.getAttribute("loginMemberData");
%>
<form action="modifymember.do" method="post">
번호:<%=mb.getNum() %><br>
이름:<input type="text" name="name" value = <%=mb.getName() %>><br>
아이디:<input type="text" name="id" value = <%=mb.getId() %>><br>
암 호:<input type="password" name="passwd" value = <%=mb.getPasswd() %>><br>
연락처:<input type="text" name="tel" value = <%=mb.getTel() %>><br>
주소:<input type="text" name="addr" value = <%=mb.getAddr() %>><br>
<input type="submit" value="완료">
<input type="reset" value="취소" >
</form>
</body>
</html>
======== ModifyMemberServlet.java =======================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;
public class ModifyMemberServlet extends HttpServlet{
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
MemberDAO dao=new MemberDAO();
MemberBean mb=new MemberBean();
mb.setNum(req.getParameter("num"));
mb.setName(req.getParameter("name"));
mb.setId(req.getParameter("id"));
mb.setPasswd(req.getParameter("passwd"));
mb.setTel(req.getParameter("tel"));
mb.setAddr(req.getParameter("addr"));
boolean isSuccess=dao.memberModify(mb);
if(isSuccess){
HttpSession session= req.getSession();
session.setAttribute("loginMemberData", mb);
req.getRequestDispatcher("modifyok.jsp").forward(req,res);
}else{
// 센드 리다이렉트로 처리한다.
res.sendRedirect("modifyfail.jsp");
}
}
}
=== modifyok.jsp & modifyfail.jsp 는 텍스트 파일이라 올리지 않습니다. ========
==========================================================================
회원탈퇴페이지입니다.
======== memberout.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="member.model.MemberDAO"%>
<%@page import="member.model.MemberBean"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Memberout JSP</title>
</head>
<body>
아래의 정보를 삭제하시겠습니까?
<%
MemberBean mb=(MemberBean)session.getAttribute("loginMemberData");
%>
<form action="outmember.do" method="post">
번호:<%=mb.getNum() %><br>
이름:<%=mb.getName() %><br>
아이디:<%=mb.getId() %><br>
암 호:<%=mb.getPasswd() %><br>
연락처:<%=mb.getTel() %><br>
주소:<%=mb.getAddr() %><br>
<input type="submit" value="회원탈퇴">
</form>
</body>
</html>
======== OutMemberServlet.jsp ============================================
package member.control;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import member.model.MemberBean;
import member.model.MemberDAO;
public class OutMemberServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
MemberDAO dao=new MemberDAO();
MemberBean mb=new MemberBean();
mb.setNum(req.getParameter("num"));
mb.setName(req.getParameter("name"));
mb.setId(req.getParameter("id"));
mb.setPasswd(req.getParameter("passwd"));
mb.setTel(req.getParameter("tel"));
mb.setAddr(req.getParameter("addr"));
boolean isSuccess=dao.memberModify(mb);
if(isSuccess){
HttpSession session= req.getSession();
session.setAttribute("loginMemberData", mb);
req.getRequestDispatcher("outmemberok.jsp").forward(req,res);
}else{
// 센드 리다이렉트로 처리한다.
res.sendRedirect("outmemberfail.jsp");
}
}
}
==========================================================================
아이디 제한 등 예외처리는 별도의 클래스를 만들어서 처리할 계획입니다.
==========================================================================
'수업 > Head First Servlets & JSP' 카테고리의 다른 글
[0923]jspBean, forward, include (0) | 2008.09.23 |
---|---|
Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고? (1) | 2008.09.17 |
[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 |
Chap 1. 서블릿과 JSP는 어디에 쓰는 물건인고?
GET 는 서버로부터 뭔가를 돌려 받는다고 생각하시면 됩니다.
GET 메소드는 폼 데이터를 URL 뒤에 추가합니다.
POST는 서버에게 자원을 요청할 때 필요한 정보를 함께 넘겨줍니다.
POST 메소드는 요청의 몸체(body)에 폼 데이터를 포함합니다.
MINE 타입은 브라우저에게 어떤 종류의 데이터를 받을 것이라는 정보를 미리 알려주어, 브라우저가 데이터를 어떻게 다룰지 준비하도록 합니다.
'수업 > Head First Servlets & JSP' 카테고리의 다른 글
로그인, 회원가입, 정보수정, 탈퇴 (2) | 2008.09.26 |
---|---|
[0923]jspBean, forward, include (0) | 2008.09.23 |