코드를 작성하기에 앞서 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파일 추가 방법
2020/06/10 - [KITRI/JSP] - JSP 프로그래밍 - JSTL(JSP Standard Tag Library) 다운로드 / c:set, c:remove
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
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 테이블에 데이터를 넣어준다.
[다음글]
2020/07/03 - [KITRI/JSP] - JSP 프로그래밍 - [MVC/DB연동] 로그인 페이지 (로그아웃, 회원수정, 회원탈퇴 기능) (2)
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 + "]";
}
}
'Coding > JSP' 카테고리의 다른 글
[MVC/DB연동] 게시판 페이지 (페이지 번호, 댓글 달기, 글쓰기, 글 수정하기, 글 삭제하기) (3) (0) | 2022.04.08 |
---|---|
로그메시지/ 플러그인 다운 (0) | 2022.04.08 |
[MVC/DB연동] 파일업로드 기능 (0) | 2022.04.08 |
[MVC/DB연동] 로그인 페이지 (로그아웃, 회원수정, 회원탈퇴 기능) (2) (0) | 2022.04.08 |
JSTL(JSP Standard Tag Library) 다운로드 / c:set, c:remove (0) | 2022.04.04 |