728x90
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%-- src/main/webapp/layout/kiclayout.jsp --%>
<c:set var="path" value="${pageContext.request.contextPath}" />
<!DOCTYPE html>
<html><head>
<title><sitemesh:write property='title'/></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
<script
src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.bundle.min.js"></script>
<style>
#center {
text-align: center;
}
ul {
width : 100%;
}
.nav-item {
font-weight: 600;
font-size: 1.2em;
padding : 3px;
color: aqua;
}
#half {
width: 45%;
}
nav {
box-shadow: 0px 0px 3px 3px #EDEEED;
}
#shade {
box-shadow: 0px 0px 3px 3px #EDEEED;
}
</style>
<%--원래 페이지 head 태그 내용을 설정 : title 태그는 제외 --%>
<sitemesh:write property='head'/>
</head>
<body>
<nav class="navbar navbar-expand-lg bg-light navbar-light">
<!-- Brand -->
<a class="navbar-brand" href="${path}/member/main">
<img src="${path}/image/logo.png"
style="margin-right: 20%;"></a>
<!-- Links -->
<ul class="navbar-nav justify-content-end" >
<li class="nav-item"><a
href="${path}/board/list?boardid=1"
class="nav-link">공지사항</a></li>
<li class="nav-item"><a
href="${path}/board/list?boardid=2"
class="nav-link">자유게시판</a></li>
<li class="nav-item"><a
href="${path}/board/list?boardid=3"
class="nav-link">QnA</a></li>
<c:if test="${sessionScope.login == 'admin' }">
<li class="nav-item">
<a href="${path}/member/list" class="nav-link">회원리스트</a></li>
</c:if>
</ul>
<ul class="navbar-nav justify-content-end text-right" >
<c:if test="${empty sessionScope.login }">
<li class="nav-item"><a class="nav-link"
href="${path}/member/loginForm">로그인</a></li>
<li class="nav-item"><a class="nav-link"
href="${path}/member/memberInput">회원가입</a></li>
</c:if>
<c:if test="${!empty sessionScope.login }">
<li class="nav-item"><a class="nav-link"
href="${path}/member/info?id=${login}">${login}</a></li>
<li class="nav-item"><a class="nav-link"
href="${path}/member/logout">로그아웃</a></li>
<li class="nav-item"><a class="nav-link"
href="${path}/member/deleteForm?id=${sessionScope.login}">회원탈퇴</a></li>
</c:if>
</ul>
<div class="container justify-content-end">
<form class="form-inline" action="#">
<input class="form-control mr-sm-2" type="text" placeholder="Search">
<button class="btn btn-success" type="submit">Search</button>
</form>
</div>
</nav><!-- The Modal -->
<sitemesh:write property='body'/>
<!-- Footer -->
<br>
<div class="jumbotron text-center" style="margin-bottom:0">
<p>KIC 캠퍼스 : 인공지능을 활용한 고객 맞춤형 웹 플랫폼 구축 양성 과정 </p>
</div>
</body>
</html>
package sitemesh;
import javax.servlet.annotation.WebFilter;
import org.sitemesh.builder.SiteMeshFilterBuilder;
import org.sitemesh.config.ConfigurableSiteMeshFilter;
/*
* sitemesh 설정 : 화면에 공통부분을 설정 모듈
* 1. sitemesh-3.0.1.jar 파일을 /WEB-INF/lib 폴더에 복사
* 2. 현재 자바 소스 코딩.
* @WebFilter("/*") : 모든 요청시 sitemesh 적용.
* builder.addDecoratorPath("/*", "/layout/layout.jsp")
* : 요청이든지 layout.jsp 페이지 적용.
* .addExcludedPath("/member/picture*") : /member/picture**** 요청시
* layout.jsp 페이지 적용 안함. 원래 페이지만 출력
* 3. layout.jsp페이지를 /webapp/layout/ 폴더에 복사하기
*/
@WebFilter("/*")
public class SiteMeshFilter extends ConfigurableSiteMeshFilter {
@Override
protected void applyCustomConfiguration(SiteMeshFilterBuilder builder) {
builder.addDecoratorPath("/*", "/layout/kiclayout.jsp").addExcludedPath("/member/picture*")
.addExcludedPath("/member/id*")
.addExcludedPath("/member/pw*");
}
}
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBConnection {
private DBConnection() {} //생성자. 다른 객체생성을 하지못하도록 하는 역할
static Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","kic","1234");
} catch(Exception e) {
e.printStackTrace();
}
return conn;
}
static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
package model;
//Bean 클래스 : 변수와 getter, setter로 이루어진 클래스
// getId() : get property (겟프로퍼티)
// getId() => get property id
//setId() : set property (겟프로퍼티)
// setId() => set property id
public class Member {
private String id;
private String pass;
private String name;
private int gender;
private String tel;
private String email;
private String picture;
//getter, setters
public String getId() { //get property id
return id;
}
public void setId(String id) { //set property id
this.id = id;
}
public String getPass() { //get property pass
return pass;
}
public void setPass(String pass) { //set property pass
this.pass = pass;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public String getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPicture() {
return picture;
}
public void setPicture(String picture) {
this.picture = picture;
}
@Override
public String toString() {
return "Member [id=" + id + ", pass=" + pass + ", name=" + name + ", gender=" + gender + ", tel=" + tel
+ ", email=" + email + ", picture=" + picture + "]";
}
}
package model;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
//model 클래스 : db와 연결하여 데이터를 저장하거나 조회하는 기능
public class MemberDao {
public boolean insert(Member mem) {
//mem : 화면에서 입력받은 데이터 저장
//1. db에 연결하기
Connection conn = DBConnection.getConnection();
//2. 문장 객체
//PreparedStatement : Statement 인터페이스의 하위 인터페이스
// 미리 sql문장을 먼저 db로 전송함.
PreparedStatement pstmt = null;
String sql = "insert into member (id,pass,name,gender,tel,email,picture)"
+ " values(?,?,?,?,?,?,?)";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, mem.getId());//1 : 첫번째 물음표(?)
pstmt.setString(2, mem.getPass());
pstmt.setString(3, mem.getName());
pstmt.setInt(4, mem.getGender());
pstmt.setString(5, mem.getTel());
pstmt.setString(6, mem.getEmail());
pstmt.setString(7, mem.getPicture());
//int executeUpdate() : sql 구문 실행.
// insert,update, delete
// db에 데이터를 등록하는 경우 실행하는 메서드
// 수정된 레코드 갯수 리턴
//ResultSet executeQuery() : sql 구문 실행.
// select 구문 실행.
// db에서 데이터를 조회하는 경우 실행하는 메서드
// 조회된 db의 레코드들을 리턴
int cnt = pstmt.executeUpdate(); //db문장 실행
if (cnt > 0) return true; //회원등록 성공
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}
public Member selectOne(String id) {
Connection conn = DBConnection.getConnection();
String sql = "select * from member where id=?";
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if(rs.next()) {
Member mem = new Member();
mem.setId(rs.getString("id"));
mem.setPass(rs.getString("pass"));
mem.setName(rs.getString("name"));
mem.setGender(rs.getInt("gender"));
mem.setTel(rs.getString("tel"));
mem.setEmail(rs.getString("email"));
mem.setPicture(rs.getString("picture"));
return mem;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public boolean update(Member mem) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set name=?, gender=?, email=?, tel=?, picture=?"
+ " where id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,mem.getName());
pstmt.setInt(2,mem.getGender());
pstmt.setString(3,mem.getEmail());
pstmt.setString(4,mem.getTel());
pstmt.setString(5,mem.getPicture());
pstmt.setString(6,mem.getId());
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn,pstmt,null);
}
return false;
}
public boolean delete (String id) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
try {
pstmt = conn.prepareStatement
("delete from member where id=?");
pstmt.setString(1, id);
return pstmt.executeUpdate() > 0;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return false;
}
public List<Member> list() {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Member> list = new ArrayList<Member>();
try {
pstmt = conn.prepareStatement("select * from member order by id");
rs = pstmt.executeQuery();
while(rs.next()) { //한 행 조회
Member m = new Member();
//rs.getString("id") : id 컬럼의 값을 문자열 타입으로 조회
m.setId(rs.getString("id"));
m.setPass(rs.getString("pass"));
m.setName(rs.getString("name"));
m.setGender(rs.getInt("gender"));
m.setTel(rs.getString("tel"));
m.setEmail(rs.getString("email"));
m.setPicture(rs.getString("picture"));
list.add(m); //list에 추가
}
return list;
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public String idSearch(String email, String tel) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql =
"select id from member where email = ? and tel = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, email);
pstmt.setString(2, tel);
rs = pstmt.executeQuery(); //sql 구문 실행
//rs.next() : true => 레코드 존재.
// false => 레코드 없음
if (rs.next()) { //레코드 존재. id값이 존재.
return rs.getString("id");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public String pwSearch(String id, String email, String tel) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select pass from member "
+ " where id =? and email = ? and tel = ?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, id);
pstmt.setString(2, email);
pstmt.setString(3, tel);
rs = pstmt.executeQuery();
if (rs.next()) {
return rs.getString("pass");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, rs);
}
return null;
}
public int updatePass(String id, String pass) {
Connection conn = DBConnection.getConnection();
PreparedStatement pstmt = null;
String sql = "update member set pass=? where id=?";
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, pass);
pstmt.setString(2, id);
return pstmt.executeUpdate();
} catch(SQLException e) {
e.printStackTrace();
} finally {
DBConnection.close(conn, pstmt, null);
}
return 0;
}
}
/* src/main/webapp/main.css */
table { width : 100%; border-collapse: collapse; }
th,td {
border : 3px solid #bcbcbc;
text-align: center;
padding: 8px;
}
th { background-color: #B7F0B1; color : #353535; }
td { background-color: #F2F2F2;}
caption { color : #111111; font-size: 20px;
background-color: #FFFFFF; }
input[type=text],input[type=password],textarea {
width:100%;
}
package controller;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.oreilly.servlet.MultipartRequest;
import model.Board;
import model.BoardDao;
import model.Member;
import model.MemberDao;
//http://localhost:8088/jsp3/member***** 요청시 호출되는 클래스
@WebServlet("/member/*")
public class MemberController extends MskimRequestMapping{
@RequestMapping("memberInput") //http://localhost:8088/jsp3/member/memberInput
public String memberInput(HttpServletRequest request, HttpServletResponse response) {
//request : 요청객체
//response : 응답객체
return "/view/member/memberInput.jsp"; //View 설정.
}
@RequestMapping("memberPro")
public String memberPro(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Member mem = new Member();
mem.setId(request.getParameter("id"));
mem.setPass(request.getParameter("pass"));
mem.setName(request.getParameter("name"));
mem.setGender(Integer.parseInt(request.getParameter("gender")));
mem.setTel(request.getParameter("tel"));
mem.setEmail(request.getParameter("email"));
mem.setPicture(request.getParameter("picture"));
MemberDao dao= new MemberDao();
String msg = null;
String url = null;
if(dao.insert(mem)) { //db에 정상적으로 추가된 경우
msg = mem.getName() + "님의 가입이 완료 되었습니다.";
url = request.getContextPath() + "/member/loginForm";
} else { //db에 추가시 오류 발생 경우
msg = "회원 가입이 실패 하였습니다.";
url = request.getContextPath() + "/member/memberInput";
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp"; //view 선택
}
@RequestMapping("loginForm")
public String loginForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/loginForm.jsp"; //view 선택
}
@RequestMapping("loginPro")
public String loginPro (HttpServletRequest request, HttpServletResponse response) {
//1. 파라미터 저장
String id = request.getParameter("id");
String pass =request.getParameter("pass");
//2. id에 해당하는 db 정보 읽기
Member mem = new MemberDao().selectOne(id);
//3. id, 비밀번호 검증
String msg = "아이디가 틀립니다.";
String url = request.getContextPath() + "/member/loginForm";
System.out.println("login:"+request.getContextPath());
if (mem != null) { //아이디가 존재하는 경우
if(pass.equals(mem.getPass())) { //입력된비밀번호와db에 저장된 비밀번호 비교.같은 경우
request.getSession().setAttribute("login", id);//session에 로그인정보 저장
msg=mem.getName() + "님이 로그인 하셨습니다.";
url = request.getContextPath() + "/member/main";
} else { //비밀번호 오류인경우
msg = "비밀번호가 틀립니다.";
}
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
@RequestMapping("main")
public String main (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if (login == null) {
String msg = "로그인이 필요합니다.";
String url = request.getContextPath() + "/member/loginForm";
request.setAttribute("msg",msg);
request.setAttribute("url",url);
return "/view/alert.jsp";
}
BoardDao bdao = new BoardDao();
//list1 : 공지사항게시판의 원글의 최근 게시물 5개 목록 저장
List<Board> list1 = bdao.mainlist("1"); //boardid값 : 게시판 종류
//list2 : 자유게시판의 원글의 최근 게시물 5개 목록 저장
List<Board> list2 = bdao.mainlist("2");
//list3 : QNA의 원글의 최근 게시물 5개 목록 저장
List<Board> list3 = bdao.mainlist("3");
request.setAttribute("list1", list1);
request.setAttribute("list2", list2);
request.setAttribute("list3", list3);
return "/view/member/main.jsp";
}
// 1. session 로그인 정보 제거.
// 2. "로그아웃되었습니다" 확인메세지 출력. loginForm.jsp 페이지 이동
@RequestMapping("logout")
public String logout (HttpServletRequest request, HttpServletResponse response) {
request.getSession().invalidate(); //session 객체를 새로운 객체로 변경
request.setAttribute("msg", "로그아웃되었습니다.");
request.setAttribute("url", request.getContextPath()+"/member/loginForm");
return "/view/alert.jsp";
}
/*
1. id 파라미터 값을 조회.
2. login 상태 검증
로그아웃 상태 : '로그인 하세요' 메세지 출력 후 loginForm
3. login 상태 검증 2
id 파라미터값과 login id가 다른 경우 : 내정보 조회만 가능합니다. 메세지 출력.
(단 관리자인경우는 다른 id도 조회가능) main 페이지 이동.
4. db에서 id 값으로 데이터 조회. : selectOne(id)
*/
@RequestMapping("info")
public String info (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인하세요");
request.setAttribute("url", request.getContextPath() + "/member/loginForm");
return "/view/alert.jsp";
}
if(!login.equals("admin") && !id.equals(login)) {
request.setAttribute("msg", "본인 정보만 조회 가능합니다.");
request.setAttribute("url", request.getContextPath() + "/member/main");
return "/view/alert.jsp";
}
Member mem = new MemberDao().selectOne(id);
request.setAttribute("member", mem);
return "/view/member/info.jsp";
}
@RequestMapping("updateForm")
public String updateForm (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인하세요");
request.setAttribute("url", request.getContextPath() + "/member/loginForm");
return "/view/alert.jsp";
}
if(!login.equals("admin") && !id.equals(login)) {
request.setAttribute("msg", "본인 정보만 수정 가능합니다.");
request.setAttribute("url", request.getContextPath() + "/member/main");
return "/view/alert.jsp";
}
Member mem = new MemberDao().selectOne(id);
request.setAttribute("member", mem);
return "/view/member/updateForm.jsp";
}
@RequestMapping("updatePro")
public String updatePro (HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Member mem = new Member();
mem.setId(request.getParameter("id"));
mem.setPass(request.getParameter("pass"));
mem.setName(request.getParameter("name"));
mem.setGender(Integer.parseInt(request.getParameter("gender")));
mem.setTel(request.getParameter("tel"));
mem.setEmail(request.getParameter("email"));
mem.setPicture(request.getParameter("picture"));
MemberDao dao = new MemberDao();
String login = (String)request.getSession().getAttribute("login");
Member dbmem = dao.selectOne(login);
String msg = "비밀번호 오류 입니다.";
String url =
request.getContextPath()+"/member/updateForm?id="+mem.getId();
if(mem.getPass().equals(dbmem.getPass())) {
if(dao.update(mem)) {
msg = "회원정보가 수정 되었습니다.";
url = request.getContextPath()+"/member/info?id="+mem.getId();
} else {
msg = "회원정보 수정시 오류입니다.";
}
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
@RequestMapping("deleteForm")
public String deleteForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/deleteForm.jsp";
}
@RequestMapping("deletePro")
public String deletePro (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인 하세요");
request.setAttribute("url", request.getContextPath()+"/member/loginForm");
return "/view/alert.jsp";
}
String id = request.getParameter("id");
String pass = request.getParameter("pass");
if(!login.equals("admin") && !login.equals(id)) {
request.setAttribute("msg", "본인만 탈퇴가 가능합니다.");
request.setAttribute("url", request.getContextPath()+"/member/main");
return "/view/alert.jsp";
}
if(id.equals("admin")) {
request.setAttribute("msg", "관리자는 탈퇴가 안됩니다.");
request.setAttribute("url", request.getContextPath()+"/member/main");
return "/view/alert.jsp";
}
MemberDao dao = new MemberDao();
Member dbmem = dao.selectOne(login);
String msg = "비밀번호가 틀립니다.";
String url = request.getContextPath()+"/member/deleteForm?id="+id;
if(pass.equals(dbmem.getPass())) {
url = request.getContextPath()+"/member/list";
if(dao.delete(id)) { //탈퇴성공
if(login.equals("admin"))
msg=id +"사용자의 강제탈퇴가 완료 되었습니다.";
else {
msg=id +"님의 탈퇴가 완료 되었습니다.";
request.getSession().invalidate();
url = request.getContextPath()+"/member/loginForm";
}
} else { //탈퇴실패
msg=id +"사용자 탈퇴시 오류발생.";
if(!login.equals("admin")) {
url = request.getContextPath()+"/member/info?id="+id;
}
}
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
@RequestMapping("list")
public String list (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인 하세요");
request.setAttribute("url", request.getContextPath()+"/member/loginForm");
return "/view/alert.jsp";
}
if(!login.equals("admin")) {
request.setAttribute("msg", "관리자만 거래 가능합니다.");
request.setAttribute("url", request.getContextPath()+"/member/main");
return "/view/alert.jsp";
}
List<Member> list = new MemberDao().list();
request.setAttribute("li", list);
return "/view/member/list.jsp";
}
@RequestMapping("pictureForm")
public String pictureForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/pictureForm.jsp";
}
@RequestMapping("picturePro")
public String picturePro (HttpServletRequest request, HttpServletResponse response) {
String path = getServletContext().getRealPath("/") + "picture/";
File f = new File(path);
if(!f.exists()) f.mkdirs();
String filename=null;
MultipartRequest multi = null;
try {
multi = new MultipartRequest(request, path,10*1024*1024,"utf-8");
} catch (IOException e) {
e.printStackTrace();
}
filename = multi.getFilesystemName("picture");
request.setAttribute("filename", filename);
return "/view/member/picturePro.jsp";
}
@RequestMapping("passwordForm")
public String passwordForm (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인 하세요");
request.setAttribute("url", request.getContextPath()+"/member/loginForm");
return "/view/alert.jsp";
}
return "/view/member/passwordForm.jsp";
}
@RequestMapping("passwordPro")
public String passwordPro(HttpServletRequest request,HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if(login == null) {
request.setAttribute("msg", "로그인 하세요");
request.setAttribute("url", request.getContextPath()+"/member/loginForm");
return "/view/alert.jsp";
}
MemberDao dao = new MemberDao();
//mem : 로그인된 회원의 정보 db에서 조회하여 데이터 저장.
Member mem = dao.selectOne(login);
String pass = request.getParameter("pass"); //입력된 기존 비밀번호
String newpass = request.getParameter("newpass");//입력된 새로운 비밀번호
String msg = "비밀번호가 틀렸습니다";
String url=request.getContextPath()+"/member/passwordForm";
if (pass.equals(mem.getPass())) { //비밀번호 일치
url=request.getContextPath()+"/member/main";
if(dao.updatePass(login, newpass) > 0)
msg="비밀 번호가 수정 되었습니다";
else
msg="비밀 번호 변경시 오류가 발생 되었습니다";
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
@RequestMapping("idForm")
public String idForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/idForm.jsp";
}
@RequestMapping("idSearch")
public String idSearch (HttpServletRequest request, HttpServletResponse response) {
String email = request.getParameter("email");
String tel = request.getParameter("tel");
MemberDao dao = new MemberDao();
String id = dao.idSearch(email,tel);
if(id == null) {
request.setAttribute("msg", "정보에 맞는 id를 찾을 수 없습니다.");
request.setAttribute("url", request.getContextPath()+"/member/idForm");
return "/view/alert.jsp";
}
request.setAttribute("id", id.substring(0,id.length()-2));
return "/view/member/id.jsp";
}
@RequestMapping("pwForm")
public String pwForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/pwForm.jsp";
}
@RequestMapping("pwSearch")
public String pwSearch (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
String email = request.getParameter("email");
String tel = request.getParameter("tel");
MemberDao dao = new MemberDao();
String pass = dao.pwSearch(id,email,tel);
if(pass == null) {
request.setAttribute("msg", "정보에 맞는 비밀번호를 찾을 수 없습니다.");
request.setAttribute("url", request.getContextPath()+"/member/pwForm");
return "/view/alert.jsp";
}
request.setAttribute("pass", pass.substring(2,pass.length()));
return "/view/member/pw.jsp";
}
//id파라미터에 해당하는 db 회원이 존재하면 : true
//id파라미터에 해당하는 db 회원이 존재하지 않으면 : false
@RequestMapping("idchk")
public String idchk (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
if (id == null) id="";
MemberDao dao = new MemberDao();
Member m = dao.selectOne(id);
// m != null : id에 해당하는 데이터가 db에 있는 경우
// m == null : id에 해당하는 데이터가 db에 없는 경우
String chk = m == null?"false":"true";
request.setAttribute("chk", chk);
return "/view/member/idchk.jsp";
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- src/main/webapp/view/alert.jsp --%>
<script>
alert("${msg}")
location.href="${url}"
</script>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- src/main/webapp/view/member/idchk.jsp --%>
${chk}
728x90
반응형
'study > MVC' 카테고리의 다른 글
[MVC] 18. MVC Model2방식 - 회원가입 (로그인) (0) | 2022.04.14 |
---|---|
[MVC] 18. MVC Model2방식 - 회원가입 (회원가입) (0) | 2022.04.14 |
[MVC] 16. MVC Model1 방식 - 회원가입 (비밀번호변경) (0) | 2022.04.12 |
[MVC] 16. MVC Model1 방식 - 회원가입 (비밀번호찾기) (0) | 2022.04.12 |
[MVC] 16. MVC Model1 방식 - 회원가입 (아이디찾기) (0) | 2022.04.12 |