
이클립스에서 서버로 톰캣 연결 해줘야 jsp 만들었을 때 오류 안남!
데이터베이스 설계
오라클에있는 c##jane에
CREATE TABLE tblMember (
id char(20) PRIMARY KEY,
pwd char(20),
등등 넣어서 테이블 생성해주고,
CREATE TABLE tblZipcode (
zipcode char(5),
area1 char(10),
이거도 생성 후 커밋.
이 테이블에 insert into tblZipcode values (‘06267’,’서울’,’강남구’,’강남대로 238 ~ 246 ‘);해서 데이터도 넣어주기
기본 셋팅. 오라클(데이터베이스) 연결
라이브러리 폴더에 ojdbc8.jar 파일 넣고, DBConnectionMgr.java 파일도 driver 맞춰주기
DBConnectionMgr.java
package ch14;
/**
* Copyright(c) 2001 iSavvix Corporation (http://www.isavvix.com/)
*
* All rights reserved
*
* Permission to use, copy, modify and distribute this material for
* any purpose and without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies, and that the name of iSavvix Corporation not be used in
* advertising or publicity pertaining to this material without the
* specific, prior written permission of an authorized representative of
* iSavvix Corporation.
*
* ISAVVIX CORPORATION MAKES NO REPRESENTATIONS AND EXTENDS NO WARRANTIES,
* EXPRESS OR IMPLIED, WITH RESPECT TO THE SOFTWARE, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR ANY PARTICULAR PURPOSE, AND THE WARRANTY AGAINST
* INFRINGEMENT OF PATENTS OR OTHER INTELLECTUAL PROPERTY RIGHTS. THE
* SOFTWARE IS PROVIDED "AS IS", AND IN NO EVENT SHALL ISAVVIX CORPORATION OR
* ANY OF ITS AFFILIATES BE LIABLE FOR ANY DAMAGES, INCLUDING ANY
* LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES RELATING
* TO THE SOFTWARE.
*
*/
import java.sql.*;
import java.util.Properties;
import java.util.Vector;
/**
* Manages a java.sql.Connection pool.
*
* @author Anil Hemrajani
*/
public class DBConnectionMgr {
private Vector connections = new Vector(10);
private String _driver = "oracle.jdbc.driver.OracleDriver",
_url = "jdbc:oracle:thin:@localhost:1521:xe",
_user = "c##jane",
_password = "1234";
private boolean _traceOn = false;
private boolean initialized = false;
private int _openConnections = 50;
private static DBConnectionMgr instance = null;
public DBConnectionMgr() {
}
/** Use this method to set the maximum number of open connections before
unused connections are closed.
*/
public static DBConnectionMgr getInstance() {
if (instance == null) {
synchronized (DBConnectionMgr.class) {
if (instance == null) {
instance = new DBConnectionMgr();
}
}
}
return instance;
}
public void setOpenConnectionCount(int count) {
_openConnections = count;
}
public void setEnableTrace(boolean enable) {
_traceOn = enable;
}
/** Returns a Vector of java.sql.Connection objects */
public Vector getConnectionList() {
return connections;
}
/** Opens specified "count" of connections and adds them to the existing pool */
public synchronized void setInitOpenConnections(int count)
throws SQLException {
Connection c = null;
ConnectionObject co = null;
for (int i = 0; i < count; i++) {
c = createConnection();
co = new ConnectionObject(c, false);
connections.addElement(co);
trace("ConnectionPoolManager: Adding new DB connection to pool (" + connections.size() + ")");
}
}
/** Returns a count of open connections */
public int getConnectionCount() {
return connections.size();
}
/** Returns an unused existing or new connection. */
public synchronized Connection getConnection()
throws Exception {
if (!initialized) {
Class c = Class.forName(_driver);
DriverManager.registerDriver((Driver) c.newInstance());
initialized = true;
}
Connection c = null;
ConnectionObject co = null;
boolean badConnection = false;
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
// If connection is not in use, test to ensure it's still valid!
if (!co.inUse) {
try {
badConnection = co.connection.isClosed();
if (!badConnection)
badConnection = (co.connection.getWarnings() != null);
} catch (Exception e) {
badConnection = true;
e.printStackTrace();
}
// Connection is bad, remove from pool
if (badConnection) {
connections.removeElementAt(i);
trace("ConnectionPoolManager: Remove disconnected DB connection #" + i);
continue;
}
c = co.connection;
co.inUse = true;
trace("ConnectionPoolManager: Using existing DB connection #" + (i + 1));
break;
}
}
if (c == null) {
c = createConnection();
co = new ConnectionObject(c, true);
connections.addElement(co);
trace("ConnectionPoolManager: Creating new DB connection #" + connections.size());
}
return c;
}
/** Marks a flag in the ConnectionObject to indicate this connection is no longer in use */
public synchronized void freeConnection(Connection c) {
if (c == null)
return;
ConnectionObject co = null;
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
if (c == co.connection) {
co.inUse = false;
break;
}
}
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
if ((i + 1) > _openConnections && !co.inUse)
removeConnection(co.connection);
}
}
public void freeConnection(Connection c, PreparedStatement p, ResultSet r) {
try {
if (r != null) r.close();
if (p != null) p.close();
freeConnection(c);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void freeConnection(Connection c, Statement s, ResultSet r) {
try {
if (r != null) r.close();
if (s != null) s.close();
freeConnection(c);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void freeConnection(Connection c, PreparedStatement p) {
try {
if (p != null) p.close();
freeConnection(c);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void freeConnection(Connection c, Statement s) {
try {
if (s != null) s.close();
freeConnection(c);
} catch (SQLException e) {
e.printStackTrace();
}
}
/** Marks a flag in the ConnectionObject to indicate this connection is no longer in use */
public synchronized void removeConnection(Connection c) {
if (c == null)
return;
ConnectionObject co = null;
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
if (c == co.connection) {
try {
c.close();
connections.removeElementAt(i);
trace("Removed " + c.toString());
} catch (Exception e) {
e.printStackTrace();
}
break;
}
}
}
private Connection createConnection()
throws SQLException {
Connection con = null;
try {
if (_user == null)
_user = "";
if (_password == null)
_password = "";
Properties props = new Properties();
props.put("user", _user);
props.put("password", _password);
con = DriverManager.getConnection(_url, props);
} catch (Throwable t) {
throw new SQLException(t.getMessage());
}
return con;
}
/** Closes all connections and clears out the connection pool */
public void releaseFreeConnections() {
trace("ConnectionPoolManager.releaseFreeConnections()");
Connection c = null;
ConnectionObject co = null;
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
if (!co.inUse)
removeConnection(co.connection);
}
}
/** Closes all connections and clears out the connection pool */
public void finalize() {
trace("ConnectionPoolManager.finalize()");
Connection c = null;
ConnectionObject co = null;
for (int i = 0; i < connections.size(); i++) {
co = (ConnectionObject) connections.elementAt(i);
try {
co.connection.close();
} catch (Exception e) {
e.printStackTrace();
}
co = null;
}
connections.removeAllElements();
}
private void trace(String s) {
if (_traceOn)
System.err.println(s);
}
}
class ConnectionObject {
public java.sql.Connection connection = null;
public boolean inUse = false;
public ConnectionObject(Connection c, boolean useFlag) {
connection = c;
inUse = useFlag;
}
}
회원가입
member.jsp
<%@ page contentType="text/html; charset=EUC-KR" %>
<html>
<head>
<title>회원가입</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript">
function idCheck(id) {
frm = document.regFrm;
if (id == "") {
alert("아이디를 입력해 주세요.");
frm.id.focus();
return;
}
url = "idCheck.jsp?id=" + id;
window.open(url, "IDCheck", "width=300,height=150");
}
function zipSearch() {
url = "zipSearch.jsp?search=n";
window.open(url, "ZipCodeSearch","width=500,height=300,scrollbars=yes");
}
</script>
</head>
<body bgcolor="#FFFFCC" onLoad="regFrm.id.focus()">
<div align="center">
<br /><br />
<form name="regFrm" method="post" action="memberProc.jsp">
<table cellpadding="5">
<tr>
<td bgcolor="#FFFFCC">
<table border="1" cellspacing="0" cellpadding="2" width="600">
<tr bgcolor="#996600">
<td colspan="3"><font color="#FFFFFF"><b>회원 가입</b></font></td>
</tr>
<tr>
<td width="20%">아이디</td>
<td width="50%">
<input name="id" size="15">
<input type="button" value="ID중복확인" onClick="idCheck(this.form.id.value)">
</td>
<td width="30%">아이디를 적어 주세요.</td>
</tr>
<tr>
<td>패스워드</td>
<td><input type="password" name="pwd" size="15"></td>
<td>패스워드를 적어주세요.</td>
</tr>
<tr>
<td>패스워드 확인</td>
<td><input type="password" name="repwd" size="15"></td>
<td>패스워드를 확인합니다.</td>
</tr>
<tr>
<td>이름</td>
<td><input name="name" size="15">
</td>
<td>이름을 적어주세요.</td>
</tr>
<tr>
<td>성별</td>
<td>
남<input type="radio" name="gender" value="1" checked>
여<input type="radio" name="gender" value="2">
</td>
<td>성별을 선택 하세요.</td>
</tr>
<tr>
<td>생년월일</td>
<td><input name="birthday" size="6">
ex)830815</td>
<td>생년월일를 적어 주세요.</td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" size="30">
</td>
<td>이메일를 적어 주세요.</td>
</tr>
<tr>
<td>우편번호</td>
<td><input name="zipcode" size="5" readonly>
<input type="button" value="우편번호찾기" onClick="zipSearch()">
</td>
<td>우편번호를 검색하세요.</td>
</tr>
<tr>
<td>주소</td>
<td><input name="address" size="45"></td>
<td>주소를 적어 주세요.</td>
</tr>
<tr>
<td>취미</td>
<td>인터넷<input type="checkbox" name="hobby" value="인터넷">
여행<input type="checkbox" name="hobby" value="여행"> 게임<input
type="checkbox" name="hobby" value="게임"> 영화<input
type="checkbox" name="hobby" value="영화"> 운동<input
type="checkbox" name="hobby" value="운동">
</td>
<td>취미를 선택 하세요.</td>
</tr>
<tr>
<td>직업</td>
<td><select name=job>
<option value="0" selected>선택하세요.
<option value="회사원">회사원
<option value="연구전문직">연구전문직
<option value="교수학생">교수학생
<option value="일반자영업">일반자영업
<option value="공무원">공무원
<option value="의료인">의료인
<option value="법조인">법조인
<option value="종교,언론,에술인">종교.언론/예술인
<option value="농,축,수산,광업인">농/축/수산/광업인
<option value="주부">주부
<option value="무직">무직
<option value="기타">기타
</select></td>
<td>직업을 선택 하세요.</td>
</tr>
<tr>
<td colspan="3" align="center">
<input type="button" value="회원가입" onclick="inputCheck()">
<input type="reset" value="다시쓰기">
<input type="button" value="로그인" onClick="javascript:location.href='login.jsp'">
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
idCheck.jsp
<%@ page contentType="text/html; charset=EUC-KR" %>
<jsp:useBean id="mMgr" class="ch14.MemberMgr" />
<%
request.setCharacterEncoding("EUC-KR");
String id = request.getParameter("id");
boolean result = mMgr.checkId(id);
%>
<html>
<head>
<title>ID 중복체크</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body bgcolor="#FFFFCC">
<div align="center">
<br/><b><%=id%></b>
<%
if (result) {
out.println("는 이미 존재한는 ID입니다.<p/>");
} else {
out.println("는 사용 가능 합니다.<p/>");
}
%>
<a href="#" onClick="self.close()">닫기</a>
</div>
</body>
</html>
MemberBean.java
package ch14;
public class MemberBean {
private String id;
private String pwd;
private String name;
private String gender;
private String birthday;
private String email;
private String zipcode;
private String address;
private String hobby[];
private String job;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
}
ZipcodeBean.java
package ch14;
public class ZipcodeBean {
private String zipcode;
private String area1;
private String area2;
private String area3;
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getArea1() {
return area1;
}
public void setArea1(String area1) {
this.area1 = area1;
}
public String getArea2() {
return area2;
}
public void setArea2(String area2) {
this.area2 = area2;
}
public String getArea3() {
return area3;
}
public void setArea3(String area3) {
this.area3 = area3;
}
}
MemberMgr.java
package ch14;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Vector;
public class MemberMgr {
private DBConnectionMgr pool;
public MemberMgr() {
try {
pool = DBConnectionMgr.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
// ID 중복확인
public boolean checkId(String id) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
boolean flag = false;
try {
con = pool.getConnection();
sql = "select id from tblMember where id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
flag = pstmt.executeQuery().next();
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return flag;
}
// 우편번호 검색
public Vector<ZipcodeBean> zipcodeRead(String area3) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
Vector<ZipcodeBean> vlist = new Vector<ZipcodeBean>();
try {
con = pool.getConnection();
sql = "select * from tblZipcode where area3 like ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, "%" + area3 + "%");
rs = pstmt.executeQuery();
while (rs.next()) {
ZipcodeBean bean = new ZipcodeBean();
bean.setZipcode(rs.getString(1));
bean.setArea1(rs.getString(2));
bean.setArea2(rs.getString(3));
bean.setArea3(rs.getString(4));
vlist.addElement(bean);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return vlist;
}
// 회원가입
public boolean insertMember(MemberBean bean) {
Connection con = null;
PreparedStatement pstmt = null;
String sql = null;
boolean flag = false;
try {
con = pool.getConnection();
sql = "insert into tblMember(id,pwd,name,gender,birthday,email,zipcode"
+ ",address,hobby,job)values(?,?,?,?,?,?,?,?,?,?)";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bean.getId());
pstmt.setString(2, bean.getPwd());
pstmt.setString(3, bean.getName());
pstmt.setString(4, bean.getGender());
pstmt.setString(5, bean.getBirthday());
pstmt.setString(6, bean.getEmail());
pstmt.setString(7, bean.getZipcode());
pstmt.setString(8, bean.getAddress());
String hobby[] = bean.getHobby();
char hb[] = { '0', '0', '0', '0', '0' };
String lists[] = { "인터넷", "여행", "게임", "영화", "운동" };
for (int i = 0; i < hobby.length; i++) {
for (int j = 0; j < lists.length; j++) {
if (hobby[i].equals(lists[j]))
hb[j] = '1';
}
}
pstmt.setString(9, new String(hb));
pstmt.setString(10, bean.getJob());
if (pstmt.executeUpdate() == 1)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
return flag;
}
// 로그인
public boolean loginMember(String id, String pwd) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = null;
boolean flag = false;
try {
con = pool.getConnection();
sql = "select id from tblMember where id = ? and pwd = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, pwd);
rs = pstmt.executeQuery();
flag = rs.next();
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt, rs);
}
return flag;
}
/*************
* ch17 필요한 메소드
* ************/
// 회원정보가져오기
public MemberBean getMember(String id) {
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
MemberBean bean = null;
try {
con = pool.getConnection();
String sql = "select * from tblMember where id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
bean = new MemberBean();
bean.setId(rs.getString("id"));
bean.setPwd(rs.getString("pwd"));
bean.setName(rs.getString("name"));
bean.setGender(rs.getString("gender"));
bean.setBirthday(rs.getString("birthday"));
bean.setEmail(rs.getString("email"));
bean.setZipcode(rs.getString("zipcode"));
bean.setAddress(rs.getString("address"));
String hobbys[] = new String[5];
String hobby = rs.getString("hobby");// 01001
for (int i = 0; i < hobbys.length; i++) {
hobbys[i] = hobby.substring(i, i + 1);
}
bean.setHobby(hobbys);
bean.setJob(rs.getString("job"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con);
}
return bean;
}
// 회원정보수정
public boolean updateMember(MemberBean bean) {
Connection con = null;
PreparedStatement pstmt = null;
boolean flag = false;
try {
con = pool.getConnection();
String sql = "update tblMember set pwd=?, name=?, gender=?, birthday=?,"
+ "email=?, zipcode=?, address=?, hobby=?, job=? where id = ?";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, bean.getPwd());
pstmt.setString(2, bean.getName());
pstmt.setString(3, bean.getGender());
pstmt.setString(4, bean.getBirthday());
pstmt.setString(5, bean.getEmail());
pstmt.setString(6, bean.getZipcode());
pstmt.setString(7, bean.getAddress());
char hobby[] = { '0', '0', '0', '0', '0' };
if (bean.getHobby() != null) {
String hobbys[] = bean.getHobby();
String list[] = { "인터넷", "여행", "게임", "영화", "운동" };
for (int i = 0; i < hobbys.length; i++) {
for (int j = 0; j < list.length; j++)
if (hobbys[i].equals(list[j]))
hobby[j] = '1';
}
}
pstmt.setString(8, new String(hobby));
pstmt.setString(9, bean.getJob());
pstmt.setString(10, bean.getId());
int count = pstmt.executeUpdate();
if (count > 0)
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
pool.freeConnection(con, pstmt);
}
return flag;
}
}
zipSearch.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%@page import="ch14.ZipcodeBean"%>
<%@page import="java.util.Vector"%>
<jsp:useBean id="mMgr" class="ch14.MemberMgr" />
<%
request.setCharacterEncoding("EUC-KR");
String search = request.getParameter("search");
String area3 = null;
Vector<ZipcodeBean> vlist = null;
if (search.equals("y")) {
area3 = request.getParameter("area3");
vlist = mMgr.zipcodeRead(area3);
}
%>
<html>
<head>
<title>우편번호 검색</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function loadSearch() {
frm = document.zipFrm;
if (frm.area3.value == "") {
alert("도로명을 입력하세요.");
frm.area3.focus();
return;
}
frm.action = "zipSearch.jsp"
frm.submit();
}
function sendAdd(zipcode, adds) {
opener.document.regFrm.zipcode.value = zipcode;
opener.document.regFrm.address.value = adds;
self.close();
}
</script>
</head>
<body bgcolor="#FFFFCC">
<div align="center">
<br />
<form name="zipFrm" method="post">
<table>
<tr>
<td><br/>도로명 입력 : <input name="area3">
<input type="button" value="검색" onclick="loadSearch();">
</td>
</tr>
<!-- 검색결과 시작 -->
<%
if (search.equals("y")) {
if (vlist.isEmpty()) {
%>
<tr>
<td align="center"><br/>검색된 결과가 없습니다.</td>
</tr>
<%
} else {
%>
<tr>
<td align="center"><br/>※검색 후, 아래 우편번호를 클릭하면 자동으로 입력됩니다.</td>
</tr>
<%
//for(ZipcodeBean bean : vlist) -> 이 방식도 있음
for (int i = 0; i < vlist.size(); i++) {
ZipcodeBean bean = vlist.get(i);
String rZipcode = bean.getZipcode();
String rArea1 = bean.getArea1();
String rArea2 = bean.getArea2();
String rArea3 = bean.getArea3();
String adds = rArea1 + " " + rArea2 + " " + rArea3 + " ";
%>
<tr>
<td><a href="#"
onclick="javascript:sendAdd('<%=rZipcode%>','<%=adds%>')">
<%=rZipcode%> <%=adds%></a></td>
</tr>
<%
}//for
}//if
}//if
%>
<!-- 검색결과 끝 -->
<tr>
<td align="center"><br/>
<a href="#" onClick="self.close()">닫기</a></td>
</tr>
</table>
<input type="hidden" name="search" value="y">
</form>
</div>
</body>
</html>
script.js
function inputCheck(){
if(document.regFrm.id.value==""){
alert("아이디를 입력해 주세요.");
document.regFrm.id.focus();
return;
}
if(document.regFrm.pwd.value==""){
alert("비밀번호를 입력해 주세요.");
document.regFrm.pwd.focus();
return;
}
if(document.regFrm.repwd.value==""){
alert("비밀번호를 확인해 주세요");
document.regFrm.repwd.focus();
return;
}
if(document.regFrm.pwd.value != document.regFrm.repwd.value){
alert("비밀번호가 일치하지 않습니다.");
document.regFrm.repwd.value="";
document.regFrm.repwd.focus();
return;
}
if(document.regFrm.name.value==""){
alert("이름을 입력해 주세요.");
document.regFrm.name.focus();
return;
}
if(document.regFrm.birthday.value==""){
alert("생년월일을 입력해 주세요.");
document.regFrm.birthday.focus();
return;
}
if(document.regFrm.email.value==""){
alert("이메일을 입력해 주세요.");
document.regFrm.email.focus();
return;
}
var str=document.regFrm.email.value;
var atPos = str.indexOf('@');
var atLastPos = str.lastIndexOf('@');
var dotPos = str.indexOf('.');
var spacePos = str.indexOf(' ');
var commaPos = str.indexOf(',');
var eMailSize = str.length;
if (atPos > 1 && atPos == atLastPos &&
dotPos > 3 && spacePos == -1 && commaPos == -1
&& atPos + 1 < dotPos && dotPos + 1 < eMailSize);
else {
alert('E-mail주소 형식이 잘못되었습니다.\n\r다시 입력해 주세요!');
document.regFrm.email.focus();
return;
}
if(document.regFrm.zipcode.value==""){
alert("우편번호를 검색해 주세요.");
return;
}
if(document.regFrm.job.value=="0"){
alert("직업을 선택해 주세요.");
document.regFrm.job.focus();
return;
}
document.regFrm.submit();
}
function win_close(){
self.close();
}
memberProc.jsp
<%@page contentType="text/html; charset=EUC-KR" %>
<%request.setCharacterEncoding("EUC-KR");%>
<jsp:useBean id="mgr" class="ch14.MemberMgr"/>
<jsp:useBean id="bean" class="ch14.MemberBean"/>
<jsp:setProperty property="*" name="bean"/>
<%
boolean result = mgr.insertMember(bean);
String msg = "회원가입에 실패 하였습니다.";
String location = "member.jsp";
if(result){
msg = "회원가입을 하였습니다.";
location = "login.jsp";
}
%>
<script>
alert("<%=msg%>");
location.href = "<%=location%>";
</script>
로그인
login.jsp
<%@ page contentType="text/html; charset=EUC-KR" %>
<%
request.setCharacterEncoding("EUC-KR");
String id = (String)session.getAttribute("idKey");
%>
<html>
<head>
<title>로그인</title>
<link href="style.css" rel="stylesheet" type="text/css">
<script type="text/javascript">
function loginCheck() {
if (document.loginFrm.id.value == "") {
alert("아이디를 입력해 주세요.");
document.loginFrm.id.focus();
return;
}
if (document.loginFrm.pwd.value == "") {
alert("비밀번호를 입력해 주세요.");
document.loginFrm.pwd.focus();
return;
}
document.loginFrm.submit();
}
</script>
</head>
<body bgcolor="#ffffcc">
<div align="center"><br/><br/>
<% if (id != null) { %>
<b> <%= id %> </b> 님 환영 합니다.
<p>제한된 기능을 사용 할 수가 있습니다.</p>
<a href="logout.jsp">로그아웃</a>
<% } else { %>
<form name="loginFrm" method="post" action="loginProc.jsp">
<table>
<tr>
<td align="center" colspan="2"><h4>로그인</h4></td>
</tr>
<tr>
<td>아 이 디</td>
<td><input name="id"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" name="pwd"></td>
</tr>
<tr>
<td colspan="2">
<div align="right">
<input type="button" value="로그인" onclick="loginCheck()">
<input type="button" value="회원가입" onClick="javascript:location.href='member.jsp'">
</div>
</td>
</tr>
</table>
</form>
<% } %>
</div>
</body>
</html>
loginProc.jsp
<%@ page contentType="text/html; charset=EUC-KR" %>
<jsp:useBean id="mMgr" class="ch14.MemberMgr"/>
<%
request.setCharacterEncoding("EUC-KR");
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String url = "login.jsp";
String msg = "로그인에 실패 하였습니다.";
boolean result = mMgr.loginMember(id,pwd);
if(result){
session.setAttribute("idKey",id);
msg = "로그인에 성공 하였습니다.";
}
%>
<script>
alert("<%=msg%>");
location.href="<%=url%>";
</script>
로그아웃
logout.jsp
<%@ page contentType="text/html; charset=EUC-KR"%>
<%
session.invalidate();
%>
<script>
alert('로그아웃 되었습니다.');
location.href="login.jsp";
</script>
Comments