๐ป
JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋ ์ค๋ณต์ฒดํฌ, ์ ํจ์ฑ๊ฒ์ฌ, ์ฐํธ๋ฒํธ ๊ฒ์ ๊ธฐ๋ฅ) (1) ๋ณธ๋ฌธ
JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋ ์ค๋ณต์ฒดํฌ, ์ ํจ์ฑ๊ฒ์ฌ, ์ฐํธ๋ฒํธ ๊ฒ์ ๊ธฐ๋ฅ) (1)
๋ํจ๋ 2020. 7. 1. 16:09์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์ ์์ DB ์ฐ๊ฒฐ ์ค์ ์ ๋จผ์ ํด์ฃผ๋๋ก ํ์.
DB ์ฐ๊ฒฐ ์ค์
1. cmd ์์ SQL ๊ณ์ ์ ์ถ๊ฐํ๋ค. DB์ฐ๊ฒฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์๋ก์ด ๊ณ์ ์ ํ์ฑํ๋๋ฐ , mvc(ID)/1234(PW)๋ก ์๋ก์ด ๊ณ์ ์ ์์ฑํ๋ค.
2. Oracle SQL developer์์ mvc ๊ณ์ฉก์ ์ ์ํด์ member ํ ์ด๋ธ์ ์์ฑํ๋ค. num ์ pk๋ก ํ๊ณ , ์ํ์ค๋ฅผ ์์ฑํด์ฃผ์๋ค.
3. ์ดํด๋ฆฝ์ค์์ JDBC์ฐ๋์ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด๋(WEB-INF/lib)์ jarํ์ผ ์ถ๊ฐํ๋ค.
[์ฐธ๊ณ ] JSTLํ์ผ ์ถ๊ฐ ๋ฐฉ๋ฒ
JSP ํ๋ก๊ทธ๋๋ฐ - JSTL(JSP Standard Tag Library) ๋ค์ด๋ก๋ / c:set, c:remove
JSP๋ ์ปดํ์ผํ๋ฉด์ ์๋ธ๋ฆฟ์ผ๋ก ๋ฐ๋๋ค. ์ฆ, ์๋ธ๋ฆฟํ์ผ์ ์ข ๋ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํ๋๊ฒ JSP JSTL๋ค์ด๋ก๋ http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ Index of /dist/jakarta/ta..
hyonee.tistory.com
4. ์ฝ๋์์ฑ
ConnectionProvider.java
package com.java.database;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionProvider {
public static Connection getConnection() {
Connection conn = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String id = "mvc";
String pass = "1234";
conn = DriverManager.getConnection(url, id, pass);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
DBCPInit.java
package com.java.database;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class DBCPInit extends HttpServlet{
@Override
public void init(ServletConfig config) throws ServletException {
try {
String jdbcDriver = config.getInitParameter("jdbcDriver");
Class.forName(jdbcDriver);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
jdbcUtil.java
package com.java.database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class jdbcUtil {
public static void close(Connection conn) {
if(conn!=null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void close(PreparedStatement pstmt) {
if(pstmt!=null) {
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void close(ResultSet rs) {
if(rs!=null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>MVCHomePage</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FrontController</servlet-name>
<servlet-class>com.java.controller.FrontController</servlet-class>
<init-param>
<param-name>configFile</param-name>
<param-value>\WEB-INF\commandURL.properties</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>FrontController</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- DB -->
<servlet>
<servlet-name>DBCPrint</servlet-name>
<servlet-class>com.java.database.DBCPInit</servlet-class>
<init-param>
<param-name>jdbcDriver</param-name>
<param-value>oracle.jdbc.driver.OracleDriver</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
</web-app>
MemberDao.java
package com.java.member.model;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.ArrayList;
import com.java.database.ConnectionProvider;
import com.java.database.jdbcUtil;
public class MemberDao { //Data Access Object
//singleton pattern : ๋จ ํ๊ฐ์ ๊ฐ์ฒด๋ง์ ๊ฐ์ง๊ณ ๊ตฌํ(์ค๊ณ)ํ๋ค.
private static MemberDao instance = new MemberDao();
public static MemberDao getInstance() {
return instance;
}
public int insert(MemberDto memberDto) {
Connection conn = null;
PreparedStatement pstmt = null;
int value = 0;
try {
String sql = "insert into member values(member_num_seq.nextval,?,?,?,?,?,?,?,?,?,?,?,?,sysdate)";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memberDto.getId());
pstmt.setString(2, memberDto.getPassword());
pstmt.setString(3, memberDto.getName());
pstmt.setString(4, memberDto.getJumin1());
pstmt.setString(5, memberDto.getJumin2());
pstmt.setString(6, memberDto.getEmail());
pstmt.setString(7, memberDto.getZipcode());
pstmt.setString(8, memberDto.getAddress());
pstmt.setString(9, memberDto.getJob());
pstmt.setString(10, memberDto.getMailing());
pstmt.setString(11, memberDto.getInterest());
pstmt.setString(12, memberDto.getMemberLevel());
value = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.close(pstmt);
jdbcUtil.close(conn);
}
return value;
}
public int idCheck(String id) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
int value = 0;
try {
String sql = "select id from member where id = ?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) value = 1;
}catch (Exception e) {
e.printStackTrace();
}finally {
jdbcUtil.close(rs);
jdbcUtil.close(pstmt);
jdbcUtil.close(conn);
}
return value;
}
public ArrayList<ZipcodeDto> zipcodeReader(String checkDong){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
ArrayList<ZipcodeDto> zipcodeList = null;
try {
String sql = "select * from zipcode where dong = ?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, checkDong);
rs = pstmt.executeQuery();
zipcodeList = new ArrayList<ZipcodeDto>();
while(rs.next()) {
ZipcodeDto address = new ZipcodeDto();
zipcodeList.add(address);
address.setZipcode(rs.getString("zipcode"));
address.setSido(rs.getString("sido"));
address.setGugun(rs.getString("gugun"));
address.setDong(rs.getString("dong"));
address.setRi(rs.getString("ri"));
address.setBunji(rs.getString("bunji"));
zipcodeList.add(address);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.close(rs);
jdbcUtil.close(pstmt);
jdbcUtil.close(conn);
}
return zipcodeList;
}
public String loginCheck(String id, String password) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
String value = null;
try {
String sql = "select member_level from member where id=? and password=?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if(rs.next()) {
value = rs.getString("member_level");
}
}catch (Exception e) {
e.printStackTrace();
}finally {
jdbcUtil.close(rs);
jdbcUtil.close(conn);
jdbcUtil.close(pstmt);
}
return value;
}
public MemberDto updateId(String id) {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
MemberDto memberDto = null;
try {
String sql = "select * from member where id = ?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
memberDto = new MemberDto();
memberDto.setNum(rs.getInt("num"));
memberDto.setId(rs.getString("id"));
memberDto.setPassword(rs.getString("password"));
memberDto.setName(rs.getString("name"));
memberDto.setJumin1(rs.getString("jumin1"));
memberDto.setJumin2(rs.getString("jumin2"));
memberDto.setEmail(rs.getString("email"));
memberDto.setZipcode(rs.getString("zipcode"));
memberDto.setAddress(rs.getString("address"));
memberDto.setJob(rs.getString("job"));
memberDto.setMailing(rs.getString("mailing"));
memberDto.setInterest(rs.getString("resultInterest"));
memberDto.setMemberLevel(rs.getString("member_level"));;
/* Timestamp ts = rs.getTimestamp("register_date");
long time = ts.getTime();
Date date = new Date(time);
memberDto.setRegisterDate(date);*/
memberDto.setRegisterDate(new Date(rs.getTimestamp("register_date").getTime()));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.close(rs);
jdbcUtil.close(conn);
jdbcUtil.close(pstmt);
}
return memberDto;
}
public int update(MemberDto memberDto) {
Connection conn = null;
PreparedStatement pstmt = null;
int value = 0;
try {
String sql = "update member set password=?, email=?, zipcode=?, address=?, job=?, mailing=?, interest=? where num=?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, memberDto.getPassword());
pstmt.setString(2, memberDto.getEmail());
pstmt.setString(3, memberDto.getZipcode());
pstmt.setString(4, memberDto.getAddress());
pstmt.setString(5, memberDto.getJob());
pstmt.setString(6, memberDto.getMailing());
pstmt.setString(7, memberDto.getInterest());
pstmt.setInt(8, memberDto.getNum());
value = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.close(pstmt);
jdbcUtil.close(conn);
}
return value;
}
public int delete(String id, String password) {
Connection conn = null;
PreparedStatement pstmt = null;
int value = 0;
try {
String sql = "delete from member where id=? and password=?";
conn = ConnectionProvider.getConnection();
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, password);
value = pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
jdbcUtil.close(pstmt);
jdbcUtil.close(conn);
}
return value;
}
}
MemberDto.java
package com.java.member.model;
import java.sql.Date;
public class MemberDto {
private String id;
private String password;
private String name;
private String jumin1;
private String jumin2;
private String email;
private String zipcode;
private String address;
private String job;
private String mailing;
private String interest;
private Date registerDate; //๊ฐ์
๋ ์ง: Date, sysdate
private int num; //์ํ์ค๋ฒํธ: .nextval
private String memberLevel;//ํ์๋ฑ๊ธ: ํ์๋ฑ๊ธ:3๊ฐ(BA,AA,VIP)
public MemberDto() {
super();
}
public MemberDto(String id, String password, String name, String jumin1, String jumin2, String email,
String zipcode, String address, String job, String mailing, String interest, Date registerDate, int num,
String memberLevel) {
super();
this.id = id;
this.password = password;
this.name = name;
this.jumin1 = jumin1;
this.jumin2 = jumin2;
this.email = email;
this.zipcode = zipcode;
this.address = address;
this.job = job;
this.mailing = mailing;
this.interest = interest;
this.registerDate = registerDate;
this.num = num;
this.memberLevel = memberLevel;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getJumin1() {
return jumin1;
}
public void setJumin1(String jumin1) {
this.jumin1 = jumin1;
}
public String getJumin2() {
return jumin2;
}
public void setJumin2(String jumin2) {
this.jumin2 = jumin2;
}
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 getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getMailing() {
return mailing;
}
public void setMailing(String mailing) {
this.mailing = mailing;
}
public String getInterest() {
return interest;
}
public void setInterest(String interest) {
this.interest = interest;
}
public Date getRegisterDate() {
return registerDate;
}
public void setRegisterDate(Date registerDate) {
this.registerDate = registerDate;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getMemberLevel() {
return memberLevel;
}
public void setMemberLevel(String memberLevel) {
this.memberLevel = memberLevel;
}
@Override
public String toString() {
return "MemberDto [id=" + id + ", password=" + password + ", name=" + name + ", jumin1=" + jumin1 + ", jumin2="
+ jumin2 + ", email=" + email + ", zipcode=" + zipcode + ", address=" + address + ", job=" + job
+ ", mailing=" + mailing + ", interest=" + interest + ", registerDate=" + registerDate + ", num=" + num
+ ", memberLevel=" + memberLevel + "]";
}
}
๋ฉ์ธ ํ์ด์ง
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var = "root" value = "${pageContext.request.contextPath}"/>
<c:if test="${memberLevel==null}">
<a href="${root}/member/register.do">ํ์๊ฐ์
</a>
<a href="${root}/member/login.do">๋ก๊ทธ์ธ</a>
</c:if>
<c:if test="${memberLevel!=null}">
<a href="${root}/member/delete.do">ํ์ํํด</a>
<a href="${root}/member/update.do">ํ์์์ </a>
<a href="${root}/member/logout.do">๋ก๊ทธ์์</a>
<c:if test="${memberLevel=='MA'}">
<h3>๊ด๋ฆฌ์ ํ์ด์ง</h3>
<a href="">ํ์๊ด๋ฆฌ</a>
</c:if>
</c:if>
</body>
</html>
joinStyle.css
@charset "UTF-8";
#joinform {
width: 700px;
height: 100px;
margin: 100px auto;
}
#joinform .menu {
border: solid 3px black;
width: 700px;
height: 30px;
display: block;
line-height: 20px;
text-indent: 5px;
}
#id {
border-right: solid 3px black;
width: 120px;
height: 30px;
float: left;
line-height: 30px;
}
input[type="text"], input[type="email"], input[type="password"], input[type="button"]{
margin-top: 5px;
}
.checkInfo:focus{
background-color:yellow;
}
commandURL.properties
# member
/member/register.do=com.java.member.command.RegisterCommand
/member/registerOk.do=com.java.member.command.RegisterOkCommand
/member/idCheck.do=com.java.member.command.IdCheckCommand
/member/zipcode.do=com.java.member.command.ZipcodeCommand
/member/login.do=com.java.member.command.LoginCommand
/member/loginOk.do=com.java.member.command.LoginCommandOk
/member/logout.do=com.java.member.command.LoginOutCommand
/member/main.do=com.java.member.command.mainCommand
/member/update.do=com.java.member.command.UpdateCommand
/member/updateOk.do=com.java.member.command.UpdateOkCommand
/member/delete.do=com.java.member.command.DeleteCommand
/member/deleteOk.do=com.java.member.command.DeleteOkCommand
์ต์ข ํ๋กํผํฐ ํ์ผ์ด๋ค. (๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ด ํ์ํ ๋๋ง๋ค ์์ฑํ๋ค.)
Command.java
package com.java.command;
import java.util.logging.Logger;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Command {
public Logger logger = Logger.getLogger(Command.class.getName());
public String logMsg = "logMsg~~~~~~~";
public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
}
FrontController.java
package com.java.controller;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.java.command.Command;
/**
* Servlet implementation class FrontController
*/
public class FrontController extends HttpServlet {
private static final long serialVersionUID = 1L;
public static final Logger logger = Logger.getLogger(FrontController.class.getName());
public static final String logMsg = "logMsg~~~~~~~";
private HashMap<String, Object> commandMap = new HashMap<String, Object>();
/**
* @see HttpServlet#HttpServlet()
*/
public FrontController() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
String configFile = config.getInitParameter("configFile");
String path = config.getServletContext().getRealPath(configFile);
logger.info(logMsg + path);
FileInputStream fis = null;
BufferedInputStream bis = null;
Properties pro = new Properties();
try {
fis = new FileInputStream(path);
bis = new BufferedInputStream(fis, 1024);
pro.load(bis);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(fis!=null) fis.close();
if(bis!=null) bis.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
Iterator<Object> keyIter = pro.keySet().iterator();
while(keyIter.hasNext()) {
String command = (String)keyIter.next();
String className = pro.getProperty(command);
logger.info(command + "\t" + className);
try {
Class<?> handlerClass = Class.forName(className);
Object handlerInstance = handlerClass.getDeclaredConstructor().newInstance();
commandMap.put(command, handlerInstance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String cmd = request.getServletPath();
logger.info(cmd);
String viewPage = null;
try {
Command com = (Command) commandMap.get(cmd);
viewPage = com.proRequest(request, response);
} catch (Exception e) {
e.printStackTrace();
}
if(viewPage!=null) {
RequestDispatcher rd = request.getRequestDispatcher(viewPage);
rd.forward(request, response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
ํ์๊ฐ์ ํ์ด์ง
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<c:set var="root" value="${pageContext.request.contextPath}" />
<html>
<head>
<meta charset="UTF-8">
<title>ํ์๊ฐ์
page</title>
<link rel="stylesheet" href="${root}/css/member/joinStyle.css?ver=1">
<script type="text/javascript" src="${root}/javascript/member/register.js"></script>
</head>
<body>
<jsp:include page="../../../index.jsp"/>
<br /><br />
<form id="joinform" name="joinform" action="${root}/member/registerOk.do" method="post"
onsubmit="return createFrom(this)">
<h4 style="text-align: center;">ํ์๊ฐ์
(*ํ์์
๋ ฅ์ฌํญ์
๋๋ค.)</h4>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">์์ด๋</div>
<span>*
<input type="text" class="checkInfo" name="id" size="12" />
<button type="button" onclick="idCheck(joinform, '${root}')">์์ด๋ ์ค๋ณต</button>
</span>
</div>
<div class="menu " style="border-bottom-width: 0px;">
<div id="id">๋น๋ฐ๋ฒํธ</div>
<span>* <input type="password" class="checkInfo" name="password" size="12" />
</span>
</div>
<div class="menu " style="border-bottom-width: 0px;">
<div id="id">๋น๋ฐ๋ฒํธํ์ธ</div>
<span>* <input type="password" class="checkInfo" name="passwordCheck" size="12" />
</span>
</div>
<div class="menu " style="border-bottom-width: 0px;">
<div id="id">์ด๋ฆ</div>
<span>* <input type="text" class="checkInfo" name="name" size="12" />
</span>
</div>
<div class="menu " style="border-bottom-width: 0px;">
<div id="id">์ฃผ๋ฏผ๋ฒํธ</div>
<span>*
<input type="text" class="checkInfo" name="jumin1" size="6" />
<span>-</span>
<input type="text" class="checkInfo" name="jumin2" size="7" />
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id" style="margin-left: 10px,">์ด๋ฉ์ผ</div>
<span>
<input type="email" name="email" size="25" />
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">์ฐํธ๋ฒํธ</div>
<span>
<input type="text" name="zipcode" size="30" />
<button type="button" onclick="searchZipcode('${root}')">์ฐํธ๋ฒํธ๊ฒ์</button>
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">์ฃผ์</div>
<span> <input type="text" name="address" size="50" />
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">์ง์
</div>
<span>
<select name="job">
<option>์ง์
์ ์ ํํ์ธ์.</option>
<option value=' '>๋ฌด์ง</option>
<option value='programmer'>ํ๋ก๊ทธ๋๋จธ</option>
<option value='designer'>๋์์ด๋</option>
</select>
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">๋ฉ์ผ์์ </div>
<span> <input type="radio" id="yes" name="mailing" value="yes" />
<label for="yes">yes</label> <input type="radio" id="no"
name="mailing" value="no" /> <label for="no">no</label>
</span>
</div>
<div class="menu" style="border-bottom-width: 0px;">
<div id="id">๊ด์ฌ๋ถ์ผ</div>
<span>
<input type="checkbox" size="12" name="interest" value="๊ฒฝ์ "/>
<label for="๊ฒฝ์ " >๊ฒฝ์ </label>
<input type="checkbox" size="12" name="interest" value="IT"/>
<label for="IT" >IT</label>
<input type="checkbox" size="12" name="interest" value="์์
"/>
<label for="์์
" >์์
</label>
<input type="checkbox" size="12" name="interest" value="๋ฏธ์ "/>
<label for="๋ฏธ์ " >๋ฏธ์ </label>
<input type="hidden" name="resultInterest"/>
</span>
</div>
<div class="menu" style="text-align: center;">
<span>
<input type="submit" value="๊ฐ์
" />
<input type="reset" value="์ทจ์" />
</span>
</div>
</form>
</body>
</html>
regosterOk.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="root" value="${pageContext.request.contextPath}"/>
<c:if test = "${check > 0}">
<script type="text/javascript">
alert("ํ์ ๊ฐ์
์ด ์๋ฃ๋์์ต๋๋ค.");
location.href="${root}/member/register.do";
</script>
</c:if>
<c:if test = "${check == 0}">
<script type="text/javascript">
alert("ํ์ ๊ฐ์
์ด ์๋ฃ๋์ง ์์์ต๋๋ค.");
location.href="${root}/member/register.do";
</script>
</c:if>
</body>
</html>
RegisterCommand.java
package com.java.member.command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.java.command.Command;
public class RegisterCommand implements Command {
@Override
public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
return "/WEB-INF/views/member/register.jsp";
}
}
RegisterOkCommand.java
package com.java.member.command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.java.command.Command;
import com.java.member.model.MemberDao;
import com.java.member.model.MemberDto;
public class RegisterOkCommand implements Command {
@Override
public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
//DTO
MemberDto memberDto = new MemberDto();
memberDto.setId(request.getParameter("id"));
memberDto.setPassword(request.getParameter("password"));
memberDto.setName(request.getParameter("name"));
memberDto.setJumin1(request.getParameter("jumin1"));
memberDto.setJumin2(request.getParameter("jumin2"));
memberDto.setEmail(request.getParameter("email"));
memberDto.setZipcode(request.getParameter("zipcode"));
memberDto.setAddress(request.getParameter("address"));
memberDto.setJob(request.getParameter("job"));
memberDto.setMailing(request.getParameter("mailing"));
//memberDto.setInterest(request.getParameter("interest"));
memberDto.setInterest(request.getParameter("resultInterest"));
memberDto.setMemberLevel("MA");
logger.info(logMsg + memberDto.toString());
//DAO
int check = MemberDao.getInstance().insert(memberDto);
logger.info(logMsg + check);
request.setAttribute("check", check);
return "/WEB-INF/views/member/registerOk.jsp";
}
}
์ ํจ์ฑ ์ฒดํฌ
register.js
function createFrom(obj){
if(obj.id.value ==""){
alert("์์ด๋๋ฅผ ๋ฐ๋์ ์
๋ ฅํ์ธ์.");
obj.id.focus();
return false;
}
if(obj.password.value ==""){
alert("๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๋์ ์
๋ ฅํ์ธ์.");
obj.password.focus();
return false;
}
if(obj.password.value.length < 7){
alert("๋น๋ฐ๋ฒํธ๋ 7๊ธ์ ์ด์์ผ๋ก ๋ง๋ค์ด์ฃผ์ธ์.");
obj.password.focus();
return false;
}
if(obj.passwordCheck.value ==""){
alert("๋น๋ฐ๋ฒํธ ํ์ธ๋์ ์
๋ ฅํด์ฃผ์ธ์.");
obj.passwordCheck.focus();
return false;
}
if(obj.password.value != obj.passwordCheck.value){
alert("์
๋ ฅํ์ ๋น๋ฐ๋ฒํธ๊ฐ ๊ฐ์ง ์์ต๋๋ค.");
obj.passwordCheck.focus();
return false;
}
if(obj.name.value ==""){
alert("์ด๋ฆ์ ๋ฐ๋์ ์
๋ ฅํ์ธ์.");
obj.name.focus();
return false;
}
if(obj.jumin1.value == "" || obj.jumin2.value == ""){
alert("์ฃผ๋ฏผ๋ฒํธ์ ๋ฐ๋์ ์
๋ ฅํ์ธ์.");
obj.jumin1.focus();
obj.jumin2.focus();
return false;
}
if(obj.jumin1.value.length !=6){
alert("์ฃผ๋ฏผ๋ฒํธ ์์๋ฆฌ 6์๋ฆฌ์
๋๋ค.");
obj.jumin1.focus();
return false;
}
if(obj.jumin2.value.length !=7){
alert("์ฃผ๋ฏผ๋ฒํธ ๋ค์๋ฆฌ 7์๋ฆฌ์
๋๋ค.");
obj.jumin2.focus();
return false;
}
if(obj.email.value ==""){
alert("์ด๋ฉ์ผ์ ์
๋ ฅํ์ธ์.");
obj.email.focus();
return false;
}
if(obj.zipcode.value ==""){
alert("์ฐํธ๋ฒํธ์ ์
๋ ฅํ์ธ์.");
obj.zipcode.focus();
return false;
}
if(obj.job.value ==""){
alert("์ง์
์ ์ ํํ์ธ์.");
obj.job.focus();
return false;
}
var check = false;
for(var i=0;i<obj.mailing.length;i++){
if(obj.mailing[i].checked==true) check=true;
}
if(obj.mailing.value ==""){
alert("๋ฉ์ผ์์ ์ฌ๋ถ๋ฅผ ์ฒดํฌํด์ฃผ์ธ์.");
obj.mailing.focus();
return false;
}
check = false;
var str="";
for(var i=0; i<obj.interest.length; i++){
if(obj.interest[i].checked==true){
str+=obj.interest[i].value + ",";
}
}
//alert(str);
obj.resultInterest.value=str;
/* if(check == false){
alert("๊ด์ฌ์ฌ๋ฅผ ํ๋ ์ด์ ์ฒดํฌํ์ธ์.");
return false;
}*/
}
function idCheck(obj, root){
alert(obj.id.value);
if(obj.id.value ==""){
alert("์์ด๋๋ฅผ ๋ฐ๋์ ์
๋ ฅํ์ธ์.");
obj.id.focus();
return false;
}else{
var url = root + "/member/idCheck.do?id=" + obj.id.value;
//alert(url);
window.open(url, "", "width=400, height=200");
}
}
function searchZipcode(root){
var url = root + "/member/zipcode.do";
//alert(url);
window.open(url, "", "width=400, height=200, scrollbars=yes");
}
function sendAddress(zipcode, sido, gugun, dong, ri, bunji){
var address = sido + gugun + dong + ri + bunji;
//alert(zipcode + address);
window.close();
opener.joinform.zipcode.value = zipcode;
opener.joinform.address.value = address;
}
๋ฐ์ดํฐ ์ ๋ ฅํด์ฃผ๊ณ ํ์ธํด ๋ณธ ๊ฒฐ๊ณผ ํ์๊ฐ์ ์ด ์ ๋์์์ ํ์ธํ ์ ์๋ค.
์์ด๋ ์ค๋ณต ์ฒดํฌ
idCheck.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>์์ด๋ ํ์ธ</title>
</head>
<body>
<c:set var="root" value="${pageContext.request.contextPath}"/>
<c:if test="${check != 0}">
<div align="center">
์ด๋ฏธ ์ฌ์ฉ์ค์ธ ์์ด๋์
๋๋ค.
<form action="${root}/member/idCheck.do" method="get">
<input type="text" name="id"/>
<input type="submit" value="ํ์ธ"/>
</form>
</div>
</c:if>
<c:if test="${check == 0}">
<div align="center">
์ฌ์ฉ ๊ฐ๋ฅํ ์์ด๋์
๋๋ค.
</div>
<script type="text/javascript">
opener.joinform.id.value="${id}";
</script>
</c:if>
<div align="center">
<a href="javascript:self.close();">๋ซ๊ธฐ</a>
</div>
</body>
</html>
IdCheckCommand.java
package com.java.member.command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.java.command.Command;
import com.java.member.model.MemberDao;
public class IdCheckCommand implements Command {
@Override
public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
String id = request.getParameter("id");
logger.info(logMsg + id);
int check = MemberDao.getInstance().idCheck(id);
logger.info(logMsg + check);
request.setAttribute("check", check);
request.setAttribute("id", id);
return "/WEB-INF/views/member/idCheck.jsp";
}
}
์ฐํธ๋ฒํธ ์กฐํ ๊ธฐ๋ฅ์ ์ํ ์ค์
1. ํด๋น์ฌ์ดํธ๋ก ๊ฐ์ ๋ค์ด๋ก๋ ํ์ด์ง๋ก ๋ค์ด๊ฐ๋ค.
http://postman.pe.kr/index.html
์ฐํธ๋ฒํธ114 - ์งํ์ธ๋
postman.pe.kr
2. ๋ฐ์ .zipํ์ผ์ ์์ถ์ ํ๊ณ ์์ ํ์ผ๋ก ๋ณํํ๋ค.
3. Oracle SQL Developer ๋ก ๊ฐ์ zipcode ํ ์ด๋ธ์ ์์ฑํ๋ค.
4. zipcode ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ค.
[๋ค์๊ธ]
JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ๋ก๊ทธ์ธ ํ์ด์ง (๋ก๊ทธ์์, ํ์์์ , ํ์ํํด ๊ธฐ๋ฅ) (2)
[์ด์ ๊ธ] 2020/07/01 - [KITRI/JSP] - JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋์ค๋ณต์ฒดํฌ, ์ฐํธ๋ฒํธ๊ฒ์ ๊ธฐ๋ฅ, ์ ํจ์ฑ๊ฒ์ฌ) (1) JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋์ค๋ณต์ฒดํฌ,..
hyonee.tistory.com
์ฐํธ๋ฒํธ ๊ฒ์ ๊ธฐ๋ฅ
zipcode.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri = "http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<c:set var = "root" value = "${pageContext.request.contextPath}"/>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${root}/javascript/member/register.js"></script>
</head>
<body>
<form action="${root}/member/zipcode.do" method="post">
<div align="center">
<table>
<tr>
<td>์ฐํธ๋ฒํธ๋ฅผ ๊ฒ์ํ์ธ์.</td>
</tr>
<tr>
<td>
<input type="text" name="dong"/>
<input type="submit" value="๊ฒ์"/>
</td>
</tr>
</table>
</div>
</form>
<div align="center">
<c:choose>
<c:when test="${zipcodeList.size()==0}">
<tr>
<td>๊ฒ์๋ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.</td>
</tr>
</c:when>
<c:when test="${zipcodeList.size()>0}">
<tr>
<td>์๋ ์ฐํธ ๋ฒํธ๋ฅผ ํด๋ฆญํ์ธ์.</td>
</tr>
<br />
<c:forEach var="zipcodeDto" items="${zipcodeList}">
<tr>
<td>
<a href="javascript:sendAddress('${zipcodeDto.zipcode}','${zipcodeDto.sido}','${zipcodeDto.gugun}','${zipcodeDto.dong}','${zipcodeDto.ri}','${zipcodeDto.bunji}')">
${zipcodeDto.zipcode}
${zipcodeDto.sido}
${zipcodeDto.gugun}
${zipcodeDto.dong}
${zipcodeDto.ri}
${zipcodeDto.bunji}
</a>
</td>
</tr>
<br />
</c:forEach>
</c:when>
</c:choose>
</div>
</body>
</html>
ZipcodeCommand.java
package com.java.member.command;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.java.command.Command;
import com.java.member.model.MemberDao;
import com.java.member.model.ZipcodeDto;
public class ZipcodeCommand implements Command {
@Override
public String proRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding("utf-8");
String checkDong = request.getParameter("dong");
logger.info(logMsg + checkDong);
if(checkDong!=null) {
ArrayList<ZipcodeDto> zipcodeList = MemberDao.getInstance().zipcodeReader(checkDong);
logger.info(logMsg + zipcodeList.size());
request.setAttribute("zipcodeList", zipcodeList);
}
return "/WEB-INF/views/member/zipcode.jsp";
}
}
ZipcodeDto.java
package com.java.member.model;
public class ZipcodeDto {
private String zipcode;
private String sido;
private String gugun;
private String dong;
private String ri;
private String bunji;
public ZipcodeDto() {
super();
// TODO Auto-generated constructor stub
}
public ZipcodeDto(String zipcode, String sido, String gugun, String dong, String ri, String bunji) {
super();
this.zipcode = zipcode;
this.sido = sido;
this.gugun = gugun;
this.dong = dong;
this.ri = ri;
this.bunji = 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 getRi() {
return ri;
}
public void setRi(String ri) {
this.ri = ri;
}
public String getBunji() {
return bunji;
}
public void setBunji(String bunji) {
this.bunji = bunji;
}
@Override
public String toString() {
return "ZipcodeDto [zipcode=" + zipcode + ", sido=" + sido + ", gugun=" + gugun + ", dong=" + dong + ", ri="
+ ri + ", bunji=" + bunji + "]";
}
}
[๋ค์๊ธ]
JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ๋ก๊ทธ์ธ ํ์ด์ง (๋ก๊ทธ์์, ํ์์์ , ํ์ํํด ๊ธฐ๋ฅ) (2)
[์ด์ ๊ธ] 2020/07/01 - [KITRI/JSP] - JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋์ค๋ณต์ฒดํฌ, ์ฐํธ๋ฒํธ๊ฒ์ ๊ธฐ๋ฅ, ์ ํจ์ฑ๊ฒ์ฌ) (1) JSP ํ๋ก๊ทธ๋๋ฐ - [MVC/DB์ฐ๋] ํ์๊ฐ์ ํ์ด์ง (์์ด๋์ค๋ณต์ฒดํฌ,..
hyonee.tistory.com