본문 바로가기
study/MVC

[MVC] 18. MVC Model2방식 - 회원가입 (로그인 만들기)

by 금이패런츠 2022. 4. 14.
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
반응형