-
Notifications
You must be signed in to change notification settings - Fork 72
주요 기능 소개(Login)
채현우 edited this page Jun 1, 2022
·
5 revisions
- 로그인 시 Ajax를 사용하여 비동기 방식으로 DB에 저장된 ID와 PW를 가져와
사용자가 입력한 값과 비교해서 값이 일치할 때 로그인 허용 - 아이디 저장 체크 박스를 체크하고 로그인 시 30분 동안 저장하는 Cookie 생성
- 로그인 성공 시 Session 생성 및 메인 페이지로 이동
MemberController.java
//로그인 - 회원 가입 컨트롤러
@RestController("memberController")
@RequestMapping("/movie")
public class MemberController {
//얘를 호출하면 MemberServiceImpl이 딸려 들어옴
@Resource
private MemberService memberService;
//로그인 화면
//@RequestMapping(value = "/moviestar/login", method = RequestMethod.GET)
@GetMapping("/login")
public ModelAndView login() throws Exception {
ModelAndView mav = new ModelAndView();
//mav.setViewName("memberLogin");
mav.setViewName("member/login");
return mav;
}
//로그인 처리
@RequestMapping(value = "/login_ok", method = RequestMethod.POST)
public ModelAndView login_ok(HttpSession session, boolean rememberId, HttpServletResponse response,
HttpServletRequest request) throws Exception {
ModelAndView mav = new ModelAndView();
String id = request.getParameter("id");
MemberDTO dto = memberService.getReadData(id); //하나의 User 정보 가져오기
session.setAttribute("customInfo", dto);
//쿠키 시간
if(rememberId) {
//1. 쿠키 생성
Cookie cookie = new Cookie("id", id);
cookie.setMaxAge(60*60); // 쿠키 시간을 1시간으로 설정
// 2. 응답에 저장
response.addCookie(cookie);
}else {
//쿠키 삭제
Cookie cookie = new Cookie("id", null);
cookie.setMaxAge(0); //쿠키 삭제
response.addCookie(cookie);
}
mav.setViewName("redirect:/main");
return mav;
}
//로그인 할 때 DB판별 Ajax
@RequestMapping(value = "/loginAjax",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Map<Object, Object> loginAjax(@RequestBody MemberDTO dto) throws Exception {
int count=0;
Map<Object, Object> map = new HashMap<Object, Object>();
count = memberService.memberlogin(dto);
map.put("cnt", count);
return map;
}
}
MemberServiceImpl.java
//MemberService 인터페이스를 구현한 Class
@Service("memberService") //객체 생성
public class MemberServiceImpl implements MemberService {
@Autowired ////memberMapper에 있는 sql문을 MemberServiceImpl로 읽어와서 의존성 주입하여 객체 생성한 것.
private MemberMapper memberMapper; //의존성 주입
//경로 : MemberController -> MemberService(I) -> MemberServiceImpl(C) ->
// MemberMapper(I) -> MemberMapper.xml
//로그인 할 때 Ajax를 사용해서 사용자가 입력한 값과 DB에 저장된 값 비교
@Override
public int memberlogin(MemberDTO dto) throws Exception {
int count = memberMapper.memberlogin(dto);
return count;
}
//하나의 User 정보 가져오기(로그인 시 Session)
@Override
public MemberDTO getReadData(String id) throws Exception {
MemberDTO dto = memberMapper.getReadData(id);
return dto;
}
}
memberMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.finalProject.mapper.MemberMapper">
<!-- 로그인(loginChk)- ID, PW 검증 -->
<select id="memberlogin" parameterType="com.finalProject.dto.MemberDTO" resultType="Integer">
select count(*) from moviemember
where id=#{id} and pwd = #{pwd}
</select>
</mapper>
Image
- 회원 가입할 때 작성한 이름과 이메일을 DB에서 가져와서 사용자가 입력한 값과 비교를 해서 값이 일치할 때 사용자의 ID를 보여준다.
MemberController.java
//로그인 - 회원 가입 컨트롤러
@RestController("memberController")
@RequestMapping("/movie")
public class MemberController {
//얘를 호출하면 MemberServiceImpl이 딸려 들어옴
@Resource
private MemberService memberService;
// ID 찾기 화면
@RequestMapping(value = "/searchId", method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView searchId(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
mav.setViewName("member/searchId");
return mav;
}
// ID찾기 화면 처리
@RequestMapping(value = "/searchId_ok", method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView searchId_ok(MemberDTO dto, HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView();
dto.getEmail1();
String id = memberService.findId(dto);
request.setAttribute("id", id);
mav.setViewName("member/searchId_com");
return mav;
}
//Id 찾기 DB판별 Ajax
@RequestMapping(value = "/idAjax",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Map<Object, Object> idAjax(@RequestBody MemberDTO dto ) throws Exception {
String id="";
Map<Object, Object> map = new HashMap<Object, Object>();
id = memberService.findId(dto);
map.put("cnt", id);
return map;
}
}
MemberServiceImpl.java
//MemberService 인터페이스를 구현한 Class
@Service("memberService") //객체 생성
public class MemberServiceImpl implements MemberService {
@Autowired ////memberMapper에 있는 sql문을 MemberServiceImpl로 읽어와서 의존성 주입하여 객체 생성한 것.
private MemberMapper memberMapper; //의존성 주입
// ID 찾기
@Override
public String findId(MemberDTO dto) throws Exception {
String id = memberMapper.findId(dto);
return id;
}
}
memberMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.finalProject.mapper.MemberMapper">
<!-- ID 찾기 -->
<select id="findId" parameterType="com.finalProject.dto.MemberDTO" resultType="String">
select id from moviemember
where name = #{name} and email1=#{email1}
</select>
</mapper>
Image
- 회원 가입할 때 작성한 이름과 이메일을 DB에서 가져와서 사용자가 입력한 값과 비교를 해서 값이 일치할 때 사용자의 ID를 보여준다.
MemberController.java
//로그인 - 회원 가입 컨트롤러
@RestController("memberController")
@RequestMapping("/movie")
public class MemberController {
//얘를 호출하면 MemberServiceImpl이 딸려 들어옴
@Resource
private MemberService memberService;
// PW 찾기 화면
@RequestMapping(value = "/searchPw", method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView searchPw(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mav = new ModelAndView();
mav.setViewName("member/searchPw");
return mav;
}
// PW 찾기 화면 처리
@RequestMapping(value = "/searchPw_ok", method = {RequestMethod.POST, RequestMethod.GET})
public ModelAndView searchPw_ok(MemberDTO dto, HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView();
//dto.getEmail1();
//String id = memberService.findId(dto);
//request.setAttribute("id", id);
dto.getName();
String pw = memberService.findPw(dto);
request.setAttribute("pw", pw);
mav.setViewName("member/searchPw_com");
return mav;
}
// PW 찾기 DB 판별 Ajax
@RequestMapping(value = "/pwAjax",method = {RequestMethod.GET,RequestMethod.POST})
@ResponseBody
public Map<Object, Object> pwAjax(@RequestBody MemberDTO dto ) throws Exception {
String pw="";
Map<Object, Object> map = new HashMap<Object, Object>();
pw = memberService.findPw(dto);
map.put("cnt", pw);
return map;
}
}
MemberServiceImpl.java
//MemberService 인터페이스를 구현한 Class
@Service("memberService") //객체 생성
public class MemberServiceImpl implements MemberService {
@Autowired ////memberMapper에 있는 sql문을 MemberServiceImpl로 읽어와서 의존성 주입하여 객체 생성한 것.
private MemberMapper memberMapper; //의존성 주입
// PW 찾기
@Override
public String findPw(MemberDTO dto) throws Exception {
String pw = memberMapper.findPw(dto);
return pw;
}
}
memberMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.finalProject.mapper.MemberMapper">
<!-- PW 찾기 -->
<select id="findPw" parameterType="com.finalProject.dto.MemberDTO" resultType="String">
select pwd from moviemember
where id = #{id} and name=#{name}
</select>
</mapper>
Image