수업(국비지원)/Mybatis
[MYBATIS] Mybatis - MVC 2 변경하기
byeolsub
2023. 4. 21. 21:04
📌 MybatisConnection.java
package model;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisConnection {
private MybatisConnection() { }
private static SqlSessionFactory sqlMap;
static {
String resource = "model/mapper/mybatis-config.xml";
InputStream input = null;
try {
input = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlMap = new SqlSessionFactoryBuilder().build(input);
}
public static SqlSession getConnection() {
return sqlMap.openSession();
}
public static void close(SqlSession session) {
session.commit();
session.close();
}
}
- mybatisjava에 있는 파일 복붙하기.
📌 mybatis-config.xml 수정
<?xml version="1.0" encoding="UTF-8" ?>
<!-- /src/model/mapper/mybatis-config.xml -->
<!DOCTYPE configuration PUBLIC "-//mybatis.org/DTD config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="model/mapper/mybatis.properties"/>
<!-- Connection 설정 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers><!-- sql 구문 : mapper 패키지내부의 인터페이스가 저장 -->
<package name="model.mapper"/>
</mappers>
</configuration>
📌 MemberMybatisDao.java
package model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import model.mapper.MemberMapper;
public class MemberMybatisDao {
private Class<MemberMapper> cls = MemberMapper.class;
private Map<String,Object> map = new HashMap<>();
public boolean insert(Member mem) {
SqlSession session = MybatisConnection.getConnection();
try {
int cnt = session.getMapper(cls).insert(mem);
if(cnt > 0) return true;
} catch(Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return false;
}
public Member selectOne(String id) {
SqlSession session = MybatisConnection.getConnection();
try {
return session.getMapper(cls).selectOne(id);
} catch (Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return null;
}
public boolean update(Member mem) {
SqlSession session = MybatisConnection.getConnection();
try {
int cnt = session.getMapper(cls).update(mem);
return cnt > 0;
} catch (Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return false;
}
//회원 정보 수정
public boolean delete(String id) {
SqlSession session = MybatisConnection.getConnection();
try {
int cnt = session.getMapper(cls).delete(id);
return cnt > 0;
} catch (Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return false;
}
//관리자가 화원정보 조회
public List<Member> list() {
SqlSession session = MybatisConnection.getConnection();
List<Member> list = null;
try {
return session.getMapper(cls).select();
} catch(Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return null;
}
//비밀번호 변경 관련
public boolean updatePass(String id, String pass) { //변경할 아이디, 비번 값
SqlSession session = MybatisConnection.getConnection();
try {
int cnt = session.getMapper(cls).updatepass(id,pass);
return cnt > 0;
} catch(Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return false;
}
//아이디 찾기
public String idSearch(String email,String tel) {
SqlSession session = MybatisConnection.getConnection();
map.clear();
map.put("email",email);
map.put("tel",tel);
map.put("column","id");
try {
return session.getMapper(cls).Search(map);
} catch(Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return null;
}
//비밀번호 찾기
public String pwSearch(String id, String email, String tel) {
SqlSession session = MybatisConnection.getConnection();
map.clear();
map.put("id",id);
map.put("email",email);
map.put("tel",tel);
map.put("column","pass");
try {
return session.getMapper(cls).Search(map);
} catch(Exception e) {
e.printStackTrace();
} finally {
MybatisConnection.close(session);
}
return null;
}
}
📌 MemberMapper.java -interface로 생성
package model.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import model.Member;
public interface MemberMapper {
@Insert("insert into member"
+ " (id,pass,name,gender,tel,email,picture)"
+" values (#{id},#{pass},#{name},#{gender},#{tel},#{email},#{picture})")
int insert(Member mem);
@Select("select * From member where id = #{id}")
Member selectOne(String id);
@Update("update member set name= #{name}, gender= #{gender}, email= #{email},"
+ "tel= #{tel}, picture= #{picture} where id= #{id}")
int update(Member mem);
@Delete("delete from member where id= #{id}")
int delete(String id);
@Select("select * from member")
List<Member> select();
@Update("update member set pass= #{pass} where id= #{id}")
int updatepass(@Param("id")String id, @Param("pass")String pass);
@Select({"<script>",
"select ${column} from member ",
"<trim prefix='where' prefixOverrides='AND||OR'>",
"<if test='id != null'>and id= #{id}</if>",
"<if test='email != null'>and email= #{email}</if>",
"<if test='tel != null'>and email= #{tel}</if>",
"</trim>",
"</script>"})
String Search(Map<String, Object> map);
}
📌 MemberController.java 내용 변경
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 com.oreilly.servlet.MultipartRequest;
import kic.mskim.MskimRequestMapping;
import kic.mskim.RequestMapping;
import model.Member;
import model.MemberMybatisDao;
//http://localhost:8088/jsp3/member/joinForm
/*
* @WebServlet("/member/*") : url정보가 브라우저에서
* <http://localhost:8088/jsp3/member/>...
* MemberController를 호출.
*/
//CRUD :Create, Read, Update, Delete
@WebServlet("/member/*")
public class MemberController extends MskimRequestMapping {
private MemberMybatisDao dao = new MemberMybatisDao();
// <http://localhost:8088/jsp3/member/joinForm> 요청시 호출되는 메서드
@RequestMapping("joinForm")
public String joinForm(HttpServletRequest request, HttpServletResponse response) {
return "/view/member/joinForm.jsp"; // forward 됨
}
@RequestMapping("join")
/*
* 1. 파라미터값들을 Member 객체에 저장 2. Member 객체의 내용을 db에 저장 3. 저장 성공 : 화면에 내용 출력 저장 실패
* : joinForm.jsp 페이지 이동
*/
public String join(HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} // Unhandled exception type UnsupportedEncodingException 예외처리 해줘야 한다
// 1. 파라미터값들을 Member 객체에 저장
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"));
if (dao.insert(mem)) { // 3. 저장 성공
request.setAttribute("mem", mem); // 요청은 서블릿이 받고 서블릿에서 join.jsp 호풀 (두개는 같은 request 영역)
return "/view/member/join.jsp";
} else { // 저장 실패
return "/view/member/joinForm.jsp";
}
}
@RequestMapping("loginForm")
public String loginForm(HttpServletRequest request, HttpServletResponse response) {
return "/view/member/loginForm.jsp"; // forward 됨
}
@RequestMapping("login")
/*
* 1. 아이디, 비밀번호 파라미터를 변수 저장 2. db 정보를 읽기. id에 해당하는 db정보를 읽어서 Member 객체에 저장
* Member MemberDao.selectOne(id); 3. 아이디와 비밀번호 검증. - 아이디가 없는 경우 아이디가 없습니다.
* 메세지확인. loginForm.jsp 페이지 이동 - 아이디 존재. 비밀번호가 틀린경우 비밀번호오류 메세지확인. loginForm.jsp
* 페이지 이동 - 아이디 존재. 비밀번호가 맞는경우 => 정상적인 로그인. session 객체에 로그인 정보 저장. main.jsp로 페이지
* 이동.
*/
public String login(HttpServletRequest request, HttpServletResponse response) {
// 1. 아이디, 비밀번호 파라미터를 변수 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");
// 2. db 정보를 읽기. id에 해당하는 db정보를 읽어서 Member 객체에 저장
Member mem = dao.selectOne(id);
String msg = null;
String url = null;
// 3. 아이디와 비밀번호 검증.
if (mem == null) { // 아이디 없음
msg = "아이디를 확인하세요.";
url = "loginForm";
} else if (!pass.equals(mem.getPass())) { // 비밀번호 오류
msg = "비밀번호가 틀립니다.";
url = "loginForm";
} else { // 로그인시
// session에 login 정보 등록.
// request.getSession() : session 객체 리턴
request.getSession().setAttribute("login", id);
msg = "반갑습니다." + mem.getName() + "님";
url = "main";
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp"; // forward 됨
}
/*
1. 로그인 여부 검증
로그인 상태 : 화면 보여주기
로그아웃 상태 : 로그인 하세요. 메세지 출력 후 loginForm.jsp 로 이동
*/
@RequestMapping("main")
public String main (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
if(login == null) { //로그아웃 상태
request.setAttribute("msg","로그인 하세요.");
request.setAttribute("url","loginForm");
return "/view/alert.jsp";
}
return "/view/member/main.jsp";
}
/*
* 1. session에 등록된 로그인 정보 제거
* 2. loginForM.JSP 페이지로 이동
*/
@RequestMapping("logout")
public String logout (HttpServletRequest request, HttpServletResponse response) {
//1. session에 등록된 로그인 정보 제거
request.getSession().invalidate();
//2. loginForM.JSP 페이지로 이동
return "redirect:loginForm";
}
/*
* 1. id 파라미터 값을 변수 저장하기
* 2. login 상태 검증
* 로그아웃 상태 : 로그인 하세요. 메세지 출력 후 loginForm 페이지로 이동
* 3. login 상태 검증2
* 로그인 상태 : 관리자가 아닌경우 id 파라키터 값과 login정보가 다르면
* 본인 정보만 조회 가능합니다. 메세지 출력 후 main 페이지로 이동
* 4. id에 해당하는 정보를 읽어서 /view/member/info.jsp 출력하기
*/
@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","loginForm");
return "/view/alert.jsp";
} else if(!login.equals("admin") && !id.equals(login)) {
request.setAttribute("msg","본인 정보만 조회 가능합니다.");
request.setAttribute("url","main");
return "/view/alert.jsp";
}
Member mem = dao.selectOne(id);
request.setAttribute("mem",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","loginForm");
return "/view/alert.jsp";
} else if(!login.equals("admin") && !id.equals(login)) {
request.setAttribute("msg","본인 정보만 조회 가능합니다.");
request.setAttribute("url","main");
return "/view/alert.jsp";
}
//정상적인 조회
Member mem = dao.selectOne(id);
request.setAttribute("mem",mem);
return "/view/member/updateForm.jsp";
}
/*
1. 모든 파라미터 정보를 Member 객체에 저장
2. 입력된 비밀번호와 db에 저장된 비밀번호 비교 =>db에서 읽기
관리자인 경우 관리자 비밀번호와 비교하기.
본인인 경우 본인의 비밀번호로 비교하기.
- 비밀번호가 틀린 경우 : "비밀번호 오류" 메세지 출력
updateForm.jsp 페이지 출력
3. 비밀번호가 같은 경우
파라미터를 저장하고 있는 Member 객체를 이용하여 db 정보 수정
boolean MemberDao.update(Member)
결과가 true면 "수정 성공" 메세지 출력 후, info.jsp 페이지 이동
결과가 false면 "수정 실패" 메세지 출력 후, updateForm.jsp 페이지 이동
*/
@RequestMapping("update")
public String update (HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} // Unhandled exception type UnsupportedEncodingException 예외처리 해줘야 한다
//1. 모든 파라미터 정보를 Member 객체에 저장
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"));
//2. 입력된 비밀번호와 db에 저장된 비밀번호 비교 =>db에서 읽기
String login = (String)request.getSession().getAttribute("login");
Member dbMem = dao.selectOne(login);
String msg = "비밀번호가 틀렸습니다.";
String url = "updateForm?id=" + mem.getId();
//3. 비밀번호가 같은 경우
if(mem.getPass().equals(dbMem.getPass())) {
if(dao.update(mem)) {
msg = "회원정보 수정이 완료되었습니다.";
url = "info?id=" + mem.getId();
} else {
msg = "회원 정보 수정 시 오류 발생.";
}
}
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
/*
1. id 파라미터 저장하기
2. login 여부 검증하기
로그아웃 상태인 경우 : 로그인 하세요. 메세지 출력 후 koginForm 페이지로 이동
관리자가 아니면서 id 파라미터 정보와 login 정보가 다른경우 : 본인만 탈퇴 가능합니다. 메세지 출력 후 main 페이지로 이동
3. deleteForm.jsp 출력하기
*/
@RequestMapping("deleteForm")
public String deleteForm (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","loginForm");
return "/view/alert.jsp";
} else if(!login.equals("admin") && !id.equals(login)) {
request.setAttribute("msg","본인만 탈퇴 가능합니다.");
request.setAttribute("url","main");
return "/view/alert.jsp";
}
//3. deleteForm.jsp 출력하기
return "/view/member/deleteForm.jsp";
}
/*
1. 파라미터 값을 변수에 저장
2. method=POST 여부 확인.
3. id가 관리자인 경우 탈퇴 불가. list.jsp 페이지로 이동
== 추가++ : 로그인 여부(3-1), 본인 탈퇴 여부 검증(3-2).
4. 비밀번호 검증
- 관리자가 강제 탈퇴인 경우 : 관리자 비밀번호
- 본인 탈퇴인 경우 : 본인 비밀번호
- 비밀번호 불일지 : 비밀번호 오류 메세지 출력 후 deleteForm.jsp 페이지 이동
5. 비밀번호가 일치하는 경우
boolean MemberDao().delete(id) 메서드 호출
- 회원 정보 삭제 성공 :
일반 사용자 : 로그아웃 실행.
탈퇴 성공 메세지 출력. loginForm.jsp페이지로 이동
관리자 : 탈퇴 성공 메세지 출력. list.jsp 페이지로 이동
- 회원 정보 삭제 실패 :
일반 사용자 : 탈퇴 실패 메세지 출력. deleteForm.jsp 페이지로 이동
관리자 : 탈퇴 실패 메세지 출력. list.jsp 페이지로이동
*/
@RequestMapping("delete")
public String delete (HttpServletRequest request, HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} // Unhandled exception type UnsupportedEncodingException 예외처리 해줘야 한다
//1. 파라미터 값을 변수에 저장
String id = request.getParameter("id");
String pass = request.getParameter("pass");
String login = (String)request.getSession().getAttribute("login");
String msg = null;
String url = null;
//2. method=POST 여부 확인.
if(!request.getMethod().equals("POST")) {
msg = "입력방식 오류입니다.";
url = "deleteForm?id=" + id;
} else if(id.equals("admin")) {
msg = "관리자는 탈퇴 불가능합니다.";
url = "list";
} else if(login == null) {
msg = "로그인 하세요.";
url = "loginForm";
} else if(!login.equals("admin") && !id.equals(login)) {
msg = "본인만 탈퇴 가능합니다.";
url = "main";
} else { //정상적으로 탈퇴 가능할 때
Member mem = dao.selectOne(login);
if(!pass.equals(mem.getPass())) { //비밀번호 오류
msg = "비밀번호 오류입니다.";
url = "deleteForm?id=" + id;
} else { //비밀번호 일치
if(dao.delete(id)) {
msg = id + "회원이 탈퇴 되었습니다.";
if(login.equals("admin")) {
url = "list";
} else { //일반 사용자
request.getSession().invalidate(); //로그아웃
url = "loginForm";
}
} else { //회원 정보 삭제시 db 오류 발생한 경우
msg = id + "회원 탈퇴 실패";
if(login.equals("admin")) { //관리자
url = "list";
} else {
request.getSession().invalidate(); //로그아웃
url = "deleteForm?id=" + id;
}
}
} //비밀번호 일치 if 끝
} //정상적인 탈퇴 끝
request.setAttribute("msg", msg);
request.setAttribute("url", url);
return "/view/alert.jsp";
}
/*
1. 로그아웃 상태 : 로그인이 필요합니다. 메세지 출력. loginForm 페이지 이동
2. 일반 사용자로 로그인 상태 : 관리자만 가능한 거래 입니다. 메세지 출력. main 페이지 이동
3. db에서 모든 회원 정보를 조회해서 화면에 출력.
List<Member> MemberDao.list()
*/
@RequestMapping("list")
public String list (HttpServletRequest request, HttpServletResponse response) {
//1. 로그아웃 상태 : 로그인이 필요합니다. 메세지 출력. loginForm 페이지 이동
String login = (String)request.getSession().getAttribute("login");
//2. 일반 사용자로 로그인 상태 : 관리자만 가능한 거래 입니다. 메세지 출력. main 페이지 이동
if(login == null) {
request.setAttribute("msg", "로그인 하세요.");
request.setAttribute("url", "loginForm");
return "/view/alert.jsp";
} else if(!login.equals("admin")) {
request.setAttribute("msg", "관리자만 가능합니다.");
request.setAttribute("url", "main");
return "/view/alert.jsp";
}
List <Member> list = dao.list();
request.setAttribute("list", list);
return "/view/member/list.jsp";
}
@RequestMapping("memberimg")
public String memberimg (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/memberimg.jsp";
}
/*
1. 파일 업로드 : 업로드 위치 : /member/picture로 설정
2. 이미지 파일을 opener 페이지에 보이게 출력하기. 현재 페이지 닫음.
*/
@RequestMapping("imgupload")
public String imgupload (HttpServletRequest request, HttpServletResponse response) {
//1. 파일 업로드 : 업로드 위치 : /member/picture로 설정
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/imgupload.jsp";
}
@RequestMapping("idForm")
public String idForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/idForm.jsp";
}
@RequestMapping("pwForm")
public String pwForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/pwForm.jsp";
}
/*
1. 파라미터 저장. email, tel
2. db에서 email과 tel을 이용하여 id값을 리턴
id=MemberDao.idSearch(email,tel)
3. id 값이 존재
id 값을 화면에 출력
opener의 id에 값을 저장. 현재 화면 닫기
4. id 값이 없는 경우
정보에 맞는 id를 찾을 수 없습니다. 메세지 출력후
idForm로 페이지 이동
*/
@RequestMapping("id")
public String id (HttpServletRequest request, HttpServletResponse response) {
String email = request.getParameter("email");
String tel = request.getParameter("tel");
String id = dao.idSearch(email, tel);
if(id == null) { //해당 id 없을 때
request.setAttribute("msg","정보에 맞는 id를 찾을 수 없습니다.");
request.setAttribute("url","idForm");
return "/view/alert.jsp";
} //해당 id 있을 때. id를 검색 한 경우
request.setAttribute("id",id);
return "/view/member/id.jsp";
}
/*
1.파라미터값(id, email, tel) 저장
2.파라미터값(id, email, tel) 에 해당하는 비밀번호를 db에서 읽기
3.화면에 비밀번호 출력.
*/
@RequestMapping("pw")
public String pw (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
String email = request.getParameter("email");
String tel = request.getParameter("tel");
String pass = dao.pwSearch(id, email, tel);
if(pass == null) { //맞는 pass가 없을때
request.setAttribute("msg","정보에 맞는 pass를 찾을 수 없습니다.");
request.setAttribute("url","pwForm");
return "/view/alert.jsp";
} //pass가 존재할 때
request.setAttribute("pass",pass);
return "/view/member/pw.jsp";
}
@RequestMapping("passwordForm")
public String passwordForm (HttpServletRequest request, HttpServletResponse response) {
return "/view/member/passwordForm.jsp";
}
/*
1. 로그아웃 상태인 경우, 로그인 하세요. 메세지 출력.
opener 페이지를 loginForm.jsp페이지 이동.
현재 페이지 닫기
2. pass,chgpass 파라미터 값 저장
3. pass 비밀번호가 db에 저장된 비밀번호와 틀리면 비밀번호 오류 메세지 출력.
현재 페지이를 passwordForm.jsp 페이지 이동
4. pass 비밀번호가 db에 저장된 비밀번호와 같으면 => 비밀번호 검증 완료
MemberDao.updatePass(login,chgpass) => 새로운 비밀번호로 수정
- 비밀번호 수정 성공 :
메세지 출력 후 opener 페이지를 info.jsp 페이지 이동. 현재페이지 닫기
- 비밀번호 수정 실패 :
메세지 출력 후 opener 페이지를 updateForm.jsp 페이지 이동. 현재 페이지 닫기
*/
@RequestMapping("password")
public String password (HttpServletRequest request, HttpServletResponse response) {
String login = (String)request.getSession().getAttribute("login");
boolean opener = true;
boolean closer = true;
String msg = null;
String url = null;
if(login == null) { //1. 로그아웃 상태인 경우
msg = "로그인 하세요.";
url = "loginForm";
} else { //로그인 상태
//2. pass,chgpass 파라미터 값 저장
String pass = request.getParameter("pass");
String chgpass = request.getParameter("chgpass");
Member mem = dao.selectOne(login);
if(pass.equals(mem.getPass())) { //4. pass 비밀번호가 db에 저장된 비밀번호와 같으면
if(dao.updatePass(login, chgpass)) { //비밀번호 수정 성공
msg = "비밀번호가 변경 되었습니다.";
url = "info?id=" + login;
} else { //비밀번호 수정 실패
msg = "비밀번호 변경 시 오류가 발생했습니다.";
url = "updateForm?id=" + login;
}
} else { //3. pass 비밀번호가 db에 저장된 비밀번호와 틀리면
msg = "비밀번호 오류";
closer = false;
opener = false;
url = "passwordForm";
}
}
request.setAttribute("msg",msg);
request.setAttribute("url",url);
request.setAttribute("opener",opener);
request.setAttribute("closer",closer);
return "/view/member/password.jsp";
}
//아이디 중복체그
@RequestMapping("idchk")
public String idchk (HttpServletRequest request, HttpServletResponse response) {
String id = request.getParameter("id");
Member mem = dao.selectOne(id);
if(mem == null) {
request.setAttribute("msg","사용가능한 아이디 입니다.");
request.setAttribute("able",true);
} else {
request.setAttribute("msg","사용 중인 아이디 입니다.");
request.setAttribute("able",false);
}
return "/view/member/idchk.jsp";
}
}