MYSQL Gate를 열어 아래를 작성 해서 프로시져 생성.
CREATE PROCEDURE getZipcode
(IN keyword VARCHAR(100))
BEGIN
SELECT zipcode, sido, gugun,dong, bunji
FROM zipcode
WHERE dong LIKE CONCAT('%',keyword,'%');
END
그러면 왼쪽 Procedures에 추가되면 우측버튼을 눌러 excute해서 들어가지면
value에 값을 입력해서 ok하면, DELIMITER가 작성되어있고 run하면 value 값에 쓴 것을 검색한다.
-----
어제 우편번호 검색을 스토드 프로시져로 바꿔보면
SelectService.java
package kr.co.javaexpert.libs.model;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Vector;
public class SelectService {
public Vector<ZipcodeBean> select(String keyword){
Vector<ZipcodeBean> vector = null;
Connection conn = null;
try {
conn = DBConnection.getConnection("pool");
vector = ZipcodeDAO.select(conn, keyword);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return vector;
}
}
ZipcodeDAO.java
package kr.co.javaexpert.libs.model;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class ZipcodeDAO {
public static Vector<ZipcodeBean> select(Connection conn, String keyword)
throws SQLException {
String sql = "{call getZipcode(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, keyword);
ResultSet rs = cstmt.executeQuery();
Vector<ZipcodeBean> vector = new Vector<ZipcodeBean>(1,1);
while(rs.next()){
ZipcodeBean zip = new ZipcodeBean();
zip.setZipcode(rs.getString("zipcode"));
zip.setSido(rs.getString("sido"));
zip.setGugun(rs.getString("gugun"));
zip.setDong(rs.getString("dong"));
zip.setBunji(rs.getString("bunji"));
vector.addElement(zip);
}
if(rs != null) rs.close();
if(cstmt != null) cstmt.close();
return vector;
}
}
위 두개만 바꾸면 된다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
========================================
회원가입
erwin 켜서 테이블 만들고 Database - Database connection 해주고,
Tools - Forward Enginner - Schema Generation 누르고 preview 눌러서 디스크모양 눌러 저장함.
CentOS의 바탕화면으로 옮겨서
su
mysql -u root -p
use test;
source /home/mino/Desktop/Member.sql
desc Member; 로 잘 구워졌나 확인.
C:\Windows\System32\drivers\etc폴더의 hosts파일을
192.168.89.151 localhost
192.168.89.151 www.javasoft.com
윈도우즈 아이피 추가 후 저장.
프로젝트 할 때는 웹 서버의 아이피를 적으면 됨.
그리고 브라우저에서 www.javasoft.com 으로 접속하면 나의 WebHome의 파일을 볼 수 있음.
Server 프로젝트에서 server.xml에
<Context docBase="Project" path="/Project" reloadable="true" source="org.eclipse.jst.jee.server:Project">
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver"
maxActive="10"
maxIdle="10"
maxWait="10000"
name="jdbc/project"
password="javamysql"
type="javax.sql.DataSource"
url="jdbc:mysql://192.168.228.133:3306/test"
username="root"/>
</Context>
추가해주고,
작업 프로젝트의 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Project</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Project JNDI</description>
<res-ref-name>jdbc/project</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
com.javasoft.libs.model 패키지의
DBConnection.java
package com.javasoft.libs.model;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBConnection {
public static Connection getConnection(){
Connection conn = null;
try{
Context context = new InitialContext();
Context other = (Context)context.lookup("java:comp/env");
DataSource ds = (DataSource)other.lookup("jdbc/project");
conn = ds.getConnection();
}catch(NamingException ex){
System.out.println(ex.toString());
}catch(SQLException ex){
System.out.println(ex.toString());
}
return conn;
}
}
DBClose.java
package com.javasoft.libs.model;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBClose {
public static void close(Connection conn){
try {
if(conn != null) conn.close();
} catch (SQLException e) {
System.out.println(e.toString());
}
}
}
연결이 잘되었는지 EclipseEE에 Data Source Explorer 에 My Mysql을 접속.
회원정보 하나 넣어주고
INSERT INTO Member
VALUES('javaexpert','1234556','조성모','446-769','경기도 용인시 기흥구 상하동','aaa@aaaa.com');
프로시져 하나 만들어주고,
CREATE PROCEDURE `test`.`isMember`(IN param_userid VARCHAR(12))
BEGIN
SELECT userid FROM Member
WHERE userid = param_userid;
END
프로시져 하나 더 만들어주고
CREATE PROCEDURE insertMember
(
IN v_userid VARCHAR(12),
IN v_passwd VARCHAR(12),
IN v_name VARCHAR(20),
IN v_zipcode CHAR(7),
IN v_address VARCHAR(200),
IN v_email VARCHAR(20)
)
BEGIN
INSERT INTO Member(userid, passwd, name, zipcode, address, email)
VALUES(v_userid, v_passwd, v_name, v_zipcode, v_address, v_email);
END
프로시져 추가.
CREATE PROCEDURE checkMember
(
IN v_userid VARCHAR(12)
)
BEGIN
SELECT passwd
FROM Member
Where userid = v_userid;
END
프로시져 추가.
CREATE PROCEDURE `test`.`getUserName`(
IN v_userid VARCHAR(12)
)
BEGIN
SELECT name
FROM Member
WHERE userid = v_userid;
END
프로시져 추가.
CREATE PROCEDURE `test`.`loginMember`(
IN v_userid VARCHAR(12),
IN v_passwd VARCHAR(12)
)
BEGIN
SELECT userid, passwd
FROM Member
WHERE userid = v_userid AND passwd = v_passwd;
END
프로시져 추가.
CREATE PROCEDURE `test`.`checkUserid`(
IN v_userid VARCHAR(12)
)
BEGIN
SELECT userid
FROM Member
WHERE userid = v_userid;
END
-----
com.javasoft.libs.controller 패키지
InsertService.java
package com.javasoft.libs.controller;
import java.sql.Connection;
import java.sql.SQLException;
import com.javasoft.libs.model.DBClose;
import com.javasoft.libs.model.DBConnection;
import com.javasoft.libs.model.MemberDAO;
import com.javasoft.libs.model.MemberDTO;
public class InsertService {
public boolean insert(MemberDTO member){
boolean flag = false;
Connection conn = null;
try {
conn = DBConnection.getConnection();
flag = MemberDAO.insert(conn, member);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return flag;
}
}
SelectService.java
package com.javasoft.libs.controller;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Vector;
import com.javasoft.libs.model.DBClose;
import com.javasoft.libs.model.DBConnection;
import com.javasoft.libs.model.MemberDAO;
import com.javasoft.libs.model.ZipcodeDAO;
import com.javasoft.libs.model.ZipcodeDTO;
public class SelectService {
public String getUserName(String userid){
String name = null;
Connection conn = null;
try {
conn = DBConnection.getConnection();
name = MemberDAO.getUserName(conn, userid);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return name;
}
public int checkMember(String userid, String passwd) {
int number = 0;
Connection conn = null;
try {
conn = DBConnection.getConnection();
number = MemberDAO.memberLogin(conn, userid, passwd);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return number;
}
public boolean isMember(String userid){
boolean isExists = true; //사용할 수 없음.
Connection conn = null;
try {
conn = DBConnection.getConnection();
isExists = MemberDAO.isMember(conn, userid);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return isExists;
}
public Vector<ZipcodeDTO> select(String keyword){
Vector<ZipcodeDTO> vector = null;
Connection conn = null;
try {
conn = DBConnection.getConnection();
vector = ZipcodeDAO.select(conn, keyword);
} catch (SQLException e) {
System.out.println(e.toString());
} finally{
DBClose.close(conn);
}
return vector;
}
}
com.javasoft.libs.model 패키지
DBConnection.java
package com.javasoft.libs.model;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class DBConnection {
public static Connection getConnection(){
Connection conn = null;
try{
Context context = new InitialContext();
Context other = (Context)context.lookup("java:comp/env");
DataSource ds = (DataSource)other.lookup("jdbc/project");
conn = ds.getConnection();
}catch(NamingException ex){
System.out.println(ex.toString());
}catch(SQLException ex){
System.out.println(ex.toString());
}
return conn;
}
}
DBCloses.java
package com.javasoft.libs.model;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBClose {
public static void close(Connection conn){
try {
if(conn != null) conn.close();
} catch (SQLException e) {
System.out.println(e.toString());
}
}
}
MemberDTO,java
package com.javasoft.libs.model;
public class MemberDTO {
private String userid;
private String passwd;
private String name;
private String zipcode;
private String address;
private String email;
public MemberDTO(){}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
MemberDAO.java
package com.javasoft.libs.model;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
public class MemberDAO {
public static String getUserName(Connection conn, String userid)
throws SQLException{
String name = null;
String sql = "{call getUserName(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, userid);
ResultSet rs = cstmt.executeQuery();
rs.next();
name = rs.getString("name");
return name;
}
//0:아이디가 없을 때, 1: 아이디는 있는데, 패스워드가 틀릴 때, 2:둘다 맞을 때
public static int memberLogin(Connection conn, String userid, String passwd)
throws SQLException {
int number = 0;
String sql = "{call checkMember(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, userid.trim());
ResultSet rs = cstmt.executeQuery();
if(rs.next()){
String dbpwd = rs.getString("passwd").trim();
if(dbpwd.equals(passwd)) number = 2;
else number = 1;
}else
number = 0;
return number;
}
public static boolean insert(Connection conn, MemberDTO member)
throws SQLException{
boolean flag = false;
String sql = "{call insertMember(?,?,?,?,?,?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, member.getUserid());
cstmt.setString(2, member.getPasswd());
cstmt.setString(3, member.getName());
cstmt.setString(4, member.getZipcode());
cstmt.setString(5, member.getAddress());
cstmt.setString(6, member.getEmail());
int cnt = cstmt.executeUpdate();
if(cnt > 0) flag = true;
if(cstmt != null) cstmt.close();
return flag;
}
public static boolean isMember(Connection conn, String userid)
throws SQLException {
String sql = "{call isMember(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, userid);
ResultSet rs = cstmt.executeQuery();
boolean isExists = rs.next();
//isExists 가 true이면 사용할 수 없는 아이디, false 이면 사용할 수 있다.
if(rs != null) rs.close();
if(cstmt != null) cstmt.close();
return isExists;
}
}
ZipcodeDTO.java
package com.javasoft.libs.model;
public class ZipcodeDTO {
private String zipcode;
private String sido;
private String gugun;
private String dong;
private String bunji;
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public String getSido() {
return sido;
}
public void setSido(String sido) {
this.sido = sido;
}
public String getGugun() {
return gugun;
}
public void setGugun(String gugun) {
this.gugun = gugun;
}
public String getDong() {
return dong;
}
public void setDong(String dong) {
this.dong = dong;
}
public String getBunji() {
return bunji;
}
public void setBunji(String bunji) {
this.bunji = bunji;
}
@Override
public String toString(){
return String.format("(%s) %s %s %s", zipcode, sido, gugun, dong);
}
}
ZipcodeDAO.java
package com.javasoft.libs.model;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
public class ZipcodeDAO {
public static Vector<ZipcodeDTO> select(Connection conn, String keyword)
throws SQLException {
String sql = "{call getZipcode(?)}";
CallableStatement cstmt = conn.prepareCall(sql);
cstmt.setString(1, keyword);
ResultSet rs = cstmt.executeQuery();
Vector<ZipcodeDTO> vector = new Vector<ZipcodeDTO>(1,1);
while(rs.next()){
ZipcodeDTO zip = new ZipcodeDTO();
zip.setZipcode(rs.getString("zipcode"));
zip.setSido(rs.getString("sido"));
zip.setGugun(rs.getString("gugun"));
zip.setDong(rs.getString("dong"));
zip.setBunji(rs.getString("bunji"));
vector.addElement(zip);
}
if(rs != null) rs.close();
if(cstmt != null) cstmt.close();
return vector;
}
}
com.javasoft.libs.util 패키지
CharConversion.java
package com.javasoft.libs.util;
public class CharConversion {
public static String entoutf8(String en){
String utf8 = null;
try{
utf8 = new String(en.getBytes("ISO8859_1"), "utf-8");
}catch(java.io.UnsupportedEncodingException ex){}
return utf8;
}
public static String utf8toen(String utf8){
String en = null;
try{
en = new String(utf8.getBytes("utf-8"), "ISO8859_1");
}catch(java.io.UnsupportedEncodingException ex){}
return en;
}
}
WebContent 폴더의
common 폴더
style.css
@CHARSET "UTF-8";
/* 스크롤바 설정 */
body {
scrollbar-face-color: #ffffff;
scrollbar-shadow-color: #003366;
scrollbar-highlight-color: #003366;
scrollbar-3dlight-color: #ffffff;
scrollbar-darkshadow-color: #dddddd;
scrollbar-track-color: #003366;
scrollbar-arrow-color: #003366;
}
/* 링크 설정 */
a:link {color:#003399;text-decoration:none}
a:visited {color:midnightblue;text-decoration:none}
a:hover {color:black;text-decoration:underline}
/* Input 설정 */
.input
{font:10pt tahoma; color:#444444; border:solid 1 #d6d3ce; background-color:white}
.inputb
{font:9pt tahoma; color:#444444; border:solid 1px #888888 #d6d3ce; background-color:#ffffff}
.inputa
{font:10pt tahoma; color:#444444; width:70px; height:20px; border:solid 1px #888888;background-color:#eeeeef}
/* Top Menu 설정 */
.menu
{font:bold 9pt 굴림;color:#adc7de; text-align:right;background-color:#4a79a5}
.menu1
{font:bold 18pt 굴림; color:#ffffff; background-color:#003366}
/* Left 설정 */
.left
{Font:bold 14pt 굴림; color:#444444; border:1px; border-style:solid; border-color:#ffffff; background-color:#ffffff}
.left1
{border:1px; border-style:none solid solid solid; border-color:#a5bece}
.left2
{border:1px; border-style:none solid none solid; border-color:#a5bece}
/* Main 설정 */
.main
{font:bold 10pt 굴림; color:#444444; border:1px; border-style:solid; border-color:silver;background-color:#ffffff}
.main1
{left:180px}
/* Font 설정 */
.fonta
{font:bold 16pt 굴림; color:#222222}
.fontb
{font:bold 8pt 굴림; color:#000099}
.fontc
{font:bold 9pt 굴림; color:#ffffff;background-color:#004080;padding-left:15}
.fontd
{font:bold 8pt tahoma; color:#444444}
.fonte
{font:bold 9pt tahoma; color:#444444}
/* Member 설정 */
.boarda
{font:bold 12pt tahoma; text-align:center; color:#ffffff; border:1px; border-style:solid; border-color:silver;background-color:#1065b5}
.boardb
{font:bold 9pt tahoma; text-align:center; color:#444444; border:1px; border-style:solid none; border-color:silver;background-color:#f7f3f7}
.boardc
{font:bold 8pt tahoma;color:#444444; border:1px; border-style:none none dashed; border-color:silver;padding-left:28}
.boardd
{font:bold 9pt 굴림; color:#222222; border:1px; border-style:solid none; border-color:silver}
/* 게시판 설정 */
.bo1
{font:bold 14pt tahoma ; color:#ffffff; text-align:center; background-color:#006F9B}
.bo2
{font:bold 10pt 굴림;text-align:center;color:#444444; border:1px; border-style:solid none; border-color:silver; background-color:#dddddd}
.bo3
{font:bold 9pt 굴림;text-align:center;color:#444444; border:1px; border-style:none none solid; border-color:silver;background-color:#efefef}
.bo3-1
{font:9pt 굴림;text-align:center;color:#444444; border:1px; border-style:none none solid; border-color:silver}
.bo4
{font:9pt 굴림; color:#444444; border:1px; border-style:none none solid;padding-left:15}
.bo5
{font:9pt 굴림; color:#444444; border:solid 1 #d6d3ce; background-color:white}
.bo6
{padding-left:30; padding-right:30; padding-top:10; padding-bottom:10}
.bo6-1
{font:bold 9pt 굴림; color:#444444; padding-left:30; padding-right:30; padding-top:30; padding-bottom:30}
.bo7
{font:bold 9pt tahoma; text-align:center; color:#444444; border:2px; border-style:solid none; border-color:silver}
.bo8
{font:bold 9pt 굴림;text-align:center;color:#444444; border:1px; border-style:none none dashed; border-color:silver;background-color:#efefef}
.bo9
{font:9pt 굴림; color:#444444; border:1px; border-style:none none dashed;padding-left:20}
.bo
{font:bold 9pt tahoma; text-align:center; color:#444444; border:1px; border-style:solid none dashed none; border-color:silver;background-color:#f7f3f7}
/* 공백 설정 */
.nbsp
{font:bold 5pt tahoma}
.nbspa
{font:bold 5pt 굴림; color:#222222; border:2px; border-style:none none solid}
style1.css
a:active { font-size: 9pt; text-decoration: none; color: #000000}
a:link { font-size: 9pt; text-decoration: none; color: #000000}
a:visited { font-size: 9pt; text-decoration: none; color: #000000}
a:hover { font-size: 9pt; text-decoration: underline; color: #000000}
td, div, body { font-size: 9pt}
textarea{
font-family:굴림체; font-size:9pt; color:#555555;
background:#FFFFFF; BORDER: 1px solid;
PADDING:4px;
scrollbar-track-color:#FFFFFF;
scrollbar-face-color:#FFFFFF;
scrollbar-3dlight-color:#FFFFFF;
scrollbar-highlight-color:#FFFFFF;
scrollbar-shadow-color:#FFFFFF;
scrollbar-darkshadow-color:#FFFFFF;
scrollbar-arrow-color:#DDDDDD;
}
input { font-size: 9pt; border: 1px solid;
background: #FFFFFF; height:18px
}
td { font-size:10pt; font-color:#ffffff }
top_menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<table width="760" height="114" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="752" height="76">
<img src="../images/top_main.gif" border="0" />
</td>
<td rowspan="3" width="8" height="114">
<img src="../images/top_right.gif" border="0" />
</td>
</tr>
<tr height="30">
<td>
<table cellspacing="0" cellpadding="0" border="0" width="752">
<tr>
<td width="500" class="menu" valign="middle">
<font size="5" color="white"><b>
<%
if(session.getAttribute("username") == null)
out.println("방문자");
else
out.println((String)session.getAttribute("username"));
%>
</b></font>
</td>
<td >
<img src="../images/wel.gif" border="0" width="250">
</td>
<td width="10" class="menu"> </td>
</tr>
</table>
</td>
</tr>
<tr height="8">
<td width="752">
<img src="../images/top_down.gif" border="0" />
</td>
</tr>
</table>
left_menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<table width="132" border="0" bordercolor='orange' cellpadding="0" cellspacing="0">
<tr>
<td>
<table width="132" border="0" cellpadding="0" cellspacing="0" bordercolor='red'>
<tr>
<td><img src="../images/left_maintop.gif" border="0"></td>
</tr>
<tr>
<td><img src="../images/left_main3.gif" border="0"></td>
</tr>
<tr>
<td height="35" class="left2">
<!-- 총 방문자 수 들어갈 공간 -->
</td>
</tr>
<tr>
<td colspan="2"><img src="../images/left_main4.gif" border="0"></td>
</tr>
<tr>
<td height="35" class="left1">
<!-- 현재 방문자 수 들어갈 공간 -->
</td>
</tr>
</table>
</td>
</tr>
<tr height="10" width="132">
<td> </td>
</tr>
<tr class="left">
<td>
<table width="132" border="0" bordercolor='green' cellpadding="0" cellspacing="0">
<tr>
<td align="right">
<% if(session.getAttribute("userid") == null){ %>
<a href="../member/login.jsp"><img src="../images/login.gif" border="0"></a>
<% }else{ %>
<img src="../images/logout.gif" border="0">
<% } %>
</td>
</tr>
</table>
</td>
</tr>
</table>
member 폴더
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String userid = request.getParameter("userid");
if(userid == null) userid = "";
%>
<!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=UTF-8">
<title>Welcome to Javasoft.com, inc.</title>
<link rel="stylesheet" type="text/css" href="../common/style.css">
<script>
function confirm(){
var f = document.forms[0];
if(!f.userid.value){
alert("아이디를 넣어주세요");
f.userid.focus();
return false;
}
if(!f.passwd.value){
alert("패스워드를 넣어주세요");
f.passwd.focus();
return false;
}
f.submit();
}
</script>
</head>
<body topmargin="0">
<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td colspan="3">
<jsp:include page="../common/top_menu.jsp" />
</td>
</tr>
<tr>
<td width="132" height="520" valign="top">
<jsp:include page="../common/left_menu.jsp" flush="false" />
</td>
<td width="8" height="520"> </td>
<td height="520">
<!-- main 영역 -->
<table width="620" cellpadding="0" cellspacing="0" border="0" bordercolor="red">
<tr>
<td>
<!-- main영역은 좌로부터 40px 더 들여서 한다. -->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="40"> </td>
<td>
<!-- main 시작 -->
<form action="login_ok.jsp" method="post">
<table cellspacing="5" style="width:260px;margin:5% 50% 50% 50%;border:1px solid black">
<tr>
<th>아이디</th>
<td><input type="text" name="userid" value="<%=userid%>" required></td>
</tr>
<tr>
<th>패스워드</th>
<td><input type="password" name="passwd" required></td>
</tr>
<tr>
<td colspan="2" align="center">
<a href="#" onclick="javascript:confirm()"><img src="../images/btn_login2.gif" border="0" /></a>
<a href="member.jsp"><img src="../images/bt_join.gif" border="0" /></a>
</td>
</tr>
</table>
</form>
<!-- main 끝 -->
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
member.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Welcome to Javasoft.com, inc.</title>
<link rel="stylesheet" type="text/css" href="../common/style.css">
<script>
function confirm(){
var f = document.forms[0];
if(!f.userid.value){
alert("아이디가 빠졌습니다.");
f.userid.focus();
return false;
}
if(!f.passwd.value){
alert("패스워드가 빠졌습니다.");
f.passwd.focus();
return false;
}
if(!f.name.value){
alert("이름이 빠졌습니다.");
f.name.focus();
return false;
}
if(!f.email.value){
alert("Email이 빠졌습니다.");
f.email.focus();
return false;
}
f.submit();
}
function zipopen(){
window.open("zipsearch.jsp", "",
"left=500,top=400,width=600,height=300,menubar=0,resizable=0,scrollbars=0");
}
function idcheck(){
var str = document.getElementById("userid").value;
window.open("idCheck.jsp?userid=" + str, "",
"left=500,top=400,width=400,height=150,menubar=0,resizable=0,scrollbars=0");
}
</script>
</head>
<body topmargin="0">
<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td colspan="3">
<jsp:include page="../common/top_menu.jsp" />
</td>
</tr>
<tr>
<td width="132" height="520" valign="top">
<jsp:include page="../common/left_menu.jsp" />
</td>
<td width="8" height="520">
</td>
<td width="620" height="520" valign="top">
<!-- main 영역 -->
<table width="620" cellpadding="0" cellspacing="0" border="0" bordercolor='orange'>
<tr>
<td>
<!-- main영역은 좌로부터 40px 더 들여서 한다. -->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="40"> </td>
<td>
<!-- 진짜 메인 영역 -->
<form action="member_ok.jsp" method="post">
<img src="../images/register.gif" border="0" />
<table border="1" width="600" bordercolor="#c0c0c0" cellpading="0" cellspacing="0">
<tr>
<td>
<table bordercolor="#c0c0c0" width="595" height="300" border="1" cellpading="0" cellspacing="0">
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>아이디</b></font>
</td>
<td>
<input type="text" name="userid" maxlength="12" id="userid" size="20">
<a href="#" onclick="javascript:idcheck()"><img src="../images/bt_duplicationcheck.gif" align="absmiddle" /></a>
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>비밀번호</b></font>
</td>
<td>
<input type="password" name="passwd" maxlength="12" id="passwd" size="20">
비밀번호 확인
<input type="password" maxlength="12" size="20">
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>이름</b></font>
</td>
<td>
<input type="text" name="name" maxlength="20" id="name" size="25">
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>우편번호</b></font>
</td>
<td>
<input type="text" name="zip1" id="zip1" maxlength="3" size="3" readonly> -
<input type="text" name="zip2" id="zip2" maxlength="3" size="3" readonly>
<a href="#" onclick="javascript:zipopen()"><img src="../images/bt_search.gif" border="0" align="absmiddle"/></a>
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>주소</b></font>
</td>
<td>
<input type="text" name="address1" id="address1" size="60" readonly>
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>나머지 주소</b></font>
</td>
<td>
<input type="text" name="address2" size="50">
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td width="100" align="right">
<font color="#000000"><b>Email</b></font>
</td>
<td>
<input type="text" name="email" size="40">
</td>
</tr>
<tr height="30" bgcolor="#f0f0f0">
<td colspan="2" align="center">
<a href="javascript:confirm()"><img src="../images/bt_join.gif" border="0"></a>
<a href="javascript:history.go(-1);"><img src="../images/bt_cancel.gif" border="0"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
idCheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:directive.page import="com.javasoft.libs.controller.SelectService" />
<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />
<%
String userid = request.getParameter("userid");
if(userid == null) userid = "";
%>
<!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=UTF-8">
<title>아이디 중복 검색 창</title>
<script type='text/javascript'>
function Close(evt){
if(document.getElementById('isClose').value == "false"){
opener.document.getElementById('userid').value = document.getElementById('userid').value;
self.close();
}else{
alert("아이디를 사용할 수 없어서 창을 닫을 수 없습니다.");
return false;
}
}
function Click(){
if(!document.getElementById('userid').value){
alert("아이디를 입력하세요");
document.getElementById('userid').focus();
return false;
}
document.forms[0].submit();
}
</script>
</head>
<body>
<%
boolean flag = true; //사용할 수 없는 아이디
if(!userid.equals("")){
flag = ss.isMember(userid.trim());
}
%>
<div style="text-align:center">
<% if(flag && !userid.equals("")){ %>
<script>
document.getElementById('isClose').value = true;
</script>
<font color='red' size='4'>
[<%=userid %>]는 이미 사용중입니다.
</font>
<%}else if(!flag && !userid.equals("")){
flag = false;
%>
<script>
document.getElementById('isClose').value = false;
</script>
<font color='green' size='4'>
[<%=userid %>]는 사용가능합니다.
</font>
<% } %>
</div>
<hr />
<form method="get" action="idCheck.jsp">
<input type="hidden" value="<%=flag %>" id="isClose" />
<table style="margin:auto">
<tr>
<td>
아이디 : <input type="text" id="userid" name="userid" value="<%=userid %>" />
<input type="button" value="중복검사" id="btn" onclick="Click()">
</td>
</tr>
<tr>
<td align='center'>
<a href="javascript:Close()"><img src="../images/bt_ok.gif" border="0" id="closebtn" /></a>
</td>
</tr>
</table>
</form>
</body>
</html>
zipsearch.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.javasoft.libs.util.CharConversion" %>
<%@ page import="java.util.Vector" %>
<%@ page import="com.javasoft.libs.model.ZipcodeDTO" %>
<%@ page import="com.javasoft.libs.controller.SelectService" %>
<%
String keyword = request.getParameter("keyword");
if(keyword == null) keyword = "";
//else keyword = CharConversion.entoutf8(keyword);
%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>우편번호 검색 창</title>
<script>
window.onload = setup;
function setup(){
document.getElementById('btnClose').onclick = Close;
}
function Close(evt){
var ziplist = document.getElementById('ziplist');
var idx = ziplist.selectedIndex;
var str = ziplist.options[idx].value;
opener.document.getElementById('zip1').value = str.substring(1, 4);
opener.document.getElementById('zip2').value = str.substring(5, 8);
opener.document.getElementById('address1').value = str.slice(10);
self.close();
}
</script>
</head>
<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />
<%
Vector<ZipcodeDTO> vector = null;
if(!keyword.equals("")){
vector = ss.select(keyword);
}
%>
<body>
<h1 align="center">우편번호 검색</h1>
<form method="get">
<table style="border-width:0;margin-left:auto;margin-right:auto;width:500px">
<caption>찾고자 하시는 동/읍/면 이름을 입력해 주세요.</caption>
<tr>
<td align='center'> 동이름 :
<input type="text" name="keyword" id="keyword" placeholder="상하동" required value="<%=keyword%>" />
<input type="submit" value="검색하기" />
</tr>
<%
if(vector != null && vector.size() == 0){
%>
<script>
alert("검색결과가 없습니다. \n확인 후 다시 검색해 주세요");
history.go(-1);
</script>
<%
}else if(vector != null && vector.size() > 0){
%>
<tr>
<td align='center'>
<select id="ziplist">
<option>--선택--</option>
<%
for(int i = 0 ; i < vector.size() ; i++){
ZipcodeDTO zb = vector.get(i);
out.print("<option value='" + zb + "'>");
out.print(zb.toString() + zb.getBunji());
out.println("</option>");
}
%>
</select>
</td>
</tr>
<% } %>
<tr>
<td align='center'><input type="button" id="btnClose" value="창닫기" /></td>
</tr>
</table>
</form>
</body>
</html>
member_ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:directive.page import="com.javasoft.libs.controller.InsertService" />
<jsp:directive.page import="com.javasoft.libs.controller.SelectService" />
<jsp:directive.page import="com.javasoft.libs.model.MemberDTO" />
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="ss" class="com.javasoft.libs.controller.SelectService" />
<%
String userid = request.getParameter("userid");
boolean isExists = ss.isMember(userid);
if(isExists){
%>
<script>
alert("이미 사용중인 아이디입니다.\n확인 후 다시 입력해 주세요");
history.back();
</script>
<% } %>
<jsp:useBean id="member" class="com.javasoft.libs.model.MemberDTO" />
<jsp:setProperty name="member" property="userid" value="<%=userid %>" />
<jsp:setProperty name="member" property="passwd" param="passwd" />
<jsp:setProperty name="member" property="name" param="name" />
<%
String zipcode = request.getParameter("zip1") + "-" +
request.getParameter("zip2");
%>
<jsp:setProperty name="member" property="zipcode" value="<%=zipcode%>" />
<%
String address = request.getParameter("address1") + " " +
request.getParameter("address2");
%>
<jsp:setProperty name="member" property="address" value="<%=address%>" />
<jsp:setProperty name="member" property="email" param="email" />
<jsp:useBean id="is" class="com.javasoft.libs.controller.InsertService" />
<%
boolean flag = is.insert(member);
if(!flag){
%>
<script>
alert("회원 가입에 실패했습니다.");
history.go(-1);
</script>
<% }else{ %>
<script>
alert("<%=userid%>님! 회원가입을 축하합니다.");
location.href = "login.jsp?userid=<%=userid%>";
</script>
<%} %>
member_index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Welcome to Javasoft.com, inc.</title>
<link rel="stylesheet" type="text/css" href="../common/style.css">
</head>
<body topmargin="0">
<table width="760" height="100%" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td colspan="3">
<jsp:include page="../common/top_menu.jsp" />
</td>
</tr>
<tr>
<td width="132" height="520" valign="top">
<jsp:include page="../common/left_menu.jsp" />
</td>
<td width="8" height="520">
</td>
<td width="620" height="520">
<!-- main 영역 -->
<table width="620" cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<!-- main영역은 좌로부터 40px 더 들여서 한다. -->
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td width="40"> </td>
<td>
<!-- 진짜 메인 영역 -->
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
WebContent 폴더의 index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<script>
location.href = "member/member_index.jsp";
</script>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Project</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Project JNDI</description>
<res-ref-name>jdbc/project</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
회원가입후 로그인하면 일단은 오류가 발생하는데. http://localhost:8080/Project/member/member_index.jsp 로 접속하면 접속된 것을 볼 수 있다.
'Java & Oracle' 카테고리의 다른 글
최종 회원가입, 로그인, 회원정보수정, 탈퇴, 방명록 최종본 (0) | 2014.06.26 |
---|---|
회원가입, 수정 탈퇴, 게시판까지 (0) | 2014.06.25 |
자바빈, 우편번호 검색(dbcp), 쿠키, session, 로그인(bean) (0) | 2014.06.23 |
사원 봉급 정보 (0) | 2014.06.20 |
DBCP, JNDI, Connection 4가지, 자바빈 (0) | 2014.06.20 |