로그인 화면 만들기

채림·2022년 9월 2일
0

Spring

목록 보기
2/3
  1. top.jsp(tiles의 top을 담당)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<header>
	<h1>회원,정보,성적 프로그램 예제</h1>
</header>
<nav class="navbar navbar-inverse">
	<div class="container-fluid">
		<div class="navbar-header">
		<a class="navbar-brand" href="index"><span class="glyphicon glyphicon-home"></span></a>
		</div>
		<ul class="nav navbar-nav">
			<li class="active">
				<a class="dropdown-toggle" data-toggle="dropdown" href="#">
					회원자료<span class="caret"></span>
				</a>
				<ul class="dropdown-menu">
					<li><a href="memberinputa">회원자료추가</a></li>					
					<li><a href="memberout">회원자료출력</a></li>
					<li class="divider"></li>
				</ul>
        	</li>
		</ul>
		
		<ul class="nav navbar-nav">
			<li class="active">
				<a class="dropdown-toggle" data-toggle="dropdown" href="#">
					개인정보<span class="caret"></span>
				</a>
				<ul class="dropdown-menu">
					<li><a href="infoinputa">정보자료추가</a></li>					
					<li><a href="infoout">정보자료출력</a></li>
					<li class="divider"></li>
				</ul>
        	</li>
		</ul>
		
		<ul class="nav navbar-nav">
			<li class="active">
				<a class="dropdown-toggle" data-toggle="dropdown" href="#">
					개인성적<span class="caret"></span>
				</a>
				<ul class="dropdown-menu">
					<li><a href="scoreinputa">성적자료추가</a></li>					
					<li><a href="scoreouta">성적자료출력</a></li>
					<li class="divider"></li>
				</ul>
        	</li>
		</ul>
		
		
		<ul class="nav navbar-nav navbar-right">
			<li><a href="SignupForm"><span class="glyphicon glyphicon-user"></span> 회원가입</a></li>
			<li><a href="logIn"><span class="glyphicon glyphicon-log-in"></span> 로그인</a></li>
		</ul>
	</div>
</nav>
</body>
</html>
href="login" 이니까 HomeController의 login을 찾는다!

2.HomeController

⭐그리고 jsp 페이지 추가할때마다 tiles.xml에 추가해줘야 인식됨⭐
@Controller
public class HomeController {
	@Autowired
	SqlSession sqlSession;

	@RequestMapping(value = "/")
	public String home(HttpServletRequest request) {
		HttpSession hs = request.getSession();
		hs.setAttribute("loginstate", false);
		return "main";
	}

	@RequestMapping(value = "/index")
	public String indes2(HttpServletRequest request) {

		return "main";
	}

	@RequestMapping(value = "/memberinputa")
	public String memberinputb() {
		return "memberinput";
	}

	@RequestMapping(method = RequestMethod.POST, value = "/memberinputb")
	public String memberinputv(HttpServletRequest request) throws IOException { // 폼에서 입력받은자료 넘겨받기
		request.setCharacterEncoding("utf-8");
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String name = request.getParameter("name");
		String tel = request.getParameter("tel");
		String address = request.getParameter("address");

		Service dao = sqlSession.getMapper(Service.class);
		dao.memberinsert(id, pw, name, tel, address);
		return "redirect:index";
	}

	@RequestMapping(value = "/memberout")
	public String memberout(HttpServletRequest requestm, Model mo, RedirectAttributes ra) {
		HttpSession hs = requestm.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			Service dao = sqlSession.getMapper(Service.class);
			ArrayList<Member429VO> list = dao.memberout();
			mo.addAttribute("list", list);
			return "memberout";
		} else {
			ra.addAttribute("result", "loginfail");
			return "redirect:index";
		}

	}

	///////////////////////
	@RequestMapping(value = "/infoinputa")
	public String infoinputa() {
		return "infoinput";
	}

	@RequestMapping(value = "/infoinput")
	public String infoinputa(HttpServletRequest request) {
		String name = request.getParameter("name");
		String jumin = request.getParameter("jumin");
		String hobby[] = request.getParameterValues("hobby");
		String driver = request.getParameter("driver");
		String hobbys = "";
		for (String k : hobby) {
			hobbys += k + " ";
		}
		Service dao = sqlSession.getMapper(Service.class);
		dao.infoinsert(name, jumin, hobbys, driver);

		return "redirect:index";
	}

	@RequestMapping(value = "/infoout")
	public String inout(HttpServletRequest request, Model mo, RedirectAttributes ra) {

		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Info429VO> list = dao.infoout();
		HttpSession hs = request.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			mo.addAttribute("list", list);
			return "infoout";
		} else {
			ra.addAttribute("result", "loginfail");
			return "redirect:index";
		}
	}

	@RequestMapping(value = "/scoreinputa")
	public String scorein() {
		return "scoreinput";
	}

	@RequestMapping(method = RequestMethod.POST, value = "/scoreinput")
	public String scoreinp(HttpServletRequest request) {
		String name = request.getParameter("name");
		int kor = Integer.parseInt(request.getParameter("kor"));
		int eng = Integer.parseInt(request.getParameter("eng"));
		int mat = Integer.parseInt(request.getParameter("mat"));
		int tec = Integer.parseInt(request.getParameter("tec"));
		Service dao = sqlSession.getMapper(Service.class);
		dao.scoreinsert(name, kor, eng, mat, tec);
		return "redirect:index";
	}

	@RequestMapping(value = "/scoreouta")
	public ModelAndView scoouta(HttpServletRequest request, RedirectAttributes ra) {
		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Score429VO> list = dao.scoreout();
		ModelAndView mav = new ModelAndView();
		HttpSession hs = request.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			mav.addObject("list", list);
			mav.setViewName("scoreout");
			return mav;
		} else {
			ra.addAttribute("result", "loginfail");
			mav.setViewName("redirect:index");
			return mav;

		}
	}

	@RequestMapping(value = "/detail1")
	public String deteil11(HttpServletRequest request, Model mo) {
		String name = request.getParameter("name");
		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Info429VO> list = dao.detail1(name);
		String jumin = dao.detail2(name);//
		// 주민번호 값을 가져올수 있을까요?
		GregorianCalendar gc = new GregorianCalendar();
		int nowyear = gc.get(Calendar.YEAR); // 2022
		int birthyear = Integer.parseInt(jumin.substring(0, 2)) + 1900;
		int age = nowyear - birthyear + 1;
		char aa = jumin.charAt(7);
		String sb = "";
		if (aa == '1')
			sb = "남자";
		else
			sb = "여자";

		mo.addAttribute("age", age);
		mo.addAttribute("sb", sb);
		mo.addAttribute("list", list);
		return "detail1";
	}

	@RequestMapping(value = "/detail3")
	public String datail3(HttpServletRequest request, Model mo) {
		String name = request.getParameter("name");
		Service dao = sqlSession.getMapper(Service.class);
		String namea = dao.score1(name);
		int kor = dao.score2(name);
		int eng = dao.score3(name);
		int mat = dao.score4(name);
		int tec = dao.score5(name);
		int tot = kor + eng + mat + tec;
		double avg = tot / 4;

		mo.addAttribute("name", name);
		mo.addAttribute("kor", kor);
		mo.addAttribute("eng", eng);
		mo.addAttribute("mat", mat);
		mo.addAttribute("tec", tec);
		mo.addAttribute("tot", tot);
		mo.addAttribute("avg", avg);

		return "detail3";
	}
⭐⭐⭐
	//
	@RequestMapping(value = "/logingo")
	public String logina() {
		return "loginform";
	}

	@RequestMapping(method = RequestMethod.POST, value = "/login")
	public String login(HttpServletRequest request, Model mo, RedirectAttributes ra) {
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		Service dao = sqlSession.getMapper(Service.class);
		Member429VO dto = dao.login(id, pw);
		HttpSession hs = request.getSession();
		if (dto != null) {
			hs.setAttribute("member", dto);
			hs.setAttribute("loginstate", true);
			return "redirect:index";
		} else {
			ra.addAttribute("loginresult", "loginfail");
			return "redirect:memberinputa";
		}

	}

	@RequestMapping(value = "/logout")
	public String logout(HttpServletRequest request) {
		HttpSession hs = request.getSession();
		hs.removeAttribute("member");
		hs.removeAttribute("loginstate");
		hs.setAttribute("loginstate", "loginfail");
		return "redirect:index";
	}
⭐⭐⭐

	@RequestMapping(value = "/maechul")
	public String maechels(Model mo) {
		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Member_tbl_02VO> list = dao.maechulp();
		ArrayList<Integer> list1 = dao.maechula();
		mo.addAttribute("list", list);
		mo.addAttribute("list1", list1);
		return "maechul";
	}
}

3.loginform.jsp 작성

대충 테이블 만들어서 
    <form action="login" method="post">
    <input type="submit">
이렇게 해서 만들어주고 다시 2번의 Controller로 가서 로그인 완성하기

위의 Controller의 로그인 부분만 따서 보면

top.jsp에서 로그인 화면으로 이동

	@RequestMapping(value = "/logingo")
	public String logina() {
		return "loginform";
	}

로그인 폼에서 입력받은 데이터를 HomeController의 login으로 전송
if 문에서 로그인 정보가 있는지 없는지 member429(dto)에서 확인

	@RequestMapping(method = RequestMethod.POST, value = "/login")
	public String login(HttpServletRequest request, Model mo, RedirectAttributes ra) {
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		Service dao = sqlSession.getMapper(Service.class);
		Member429VO dto = dao.login(id, pw);
		HttpSession hs = request.getSession();
		if (dto != null) {
			hs.setAttribute("member", dto);
			hs.setAttribute("loginstate", true);
			return "redirect:index";
		} else {
			ra.addAttribute("loginresult", "loginfail");
			return "redirect:memberinputa";
		}
	}

로그아웃

	@RequestMapping(value = "/logout")
	public String logout(HttpServletRequest request) {
		HttpSession hs = request.getSession();
		hs.removeAttribute("member");
		hs.removeAttribute("loginstate");
		hs.setAttribute("loginstate", "loginfail");
		return "redirect:index";
	}

4.로그인을 만들었으니까 로그인 상태에 따른 접근 관리 해주기

3번에서 설정한 loginstate를 여기저기 써먹으면 됨
loginstate=false 면 로그인이 안됐다는 뜻으로 main으로 돌아감

@RequestMapping(value = "/")
	public String home(HttpServletRequest request) {
		HttpSession hs = request.getSession();
		hs.setAttribute("loginstate", false);
		return "main";
	}

loginstate true=로그인 O
loginstate false=로그인 X
참일때 전달받은 정보를 list로 저장하여 memberout으로 보냄
거짓일때는 다시 main으로

@RequestMapping(value = "/memberout")
	public String memberout(HttpServletRequest requestm, Model mo, RedirectAttributes ra) {
		HttpSession hs = requestm.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			Service dao = sqlSession.getMapper(Service.class);
			ArrayList<Member429VO> list = dao.memberout();
			mo.addAttribute("list", list);
			return "memberout";
		} else {
			ra.addAttribute("result", "loginfail");
			return "redirect:index";
		}
	}

loginstate의 true/false값에 따라 ...

@RequestMapping(value = "/infoout")
	public String inout(HttpServletRequest request, Model mo, RedirectAttributes ra) {
		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Info429VO> list = dao.infoout();
		HttpSession hs = request.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			mo.addAttribute("list", list);
			return "infoout";
		} else {
			ra.addAttribute("result", "loginfail");
			return "redirect:index";
		}
	}

loginstate의 true/false값에 따라 ...2

@RequestMapping(value = "/scoreouta")
	public ModelAndView scoouta(HttpServletRequest request, RedirectAttributes ra) {
		Service dao = sqlSession.getMapper(Service.class);
		ArrayList<Score429VO> list = dao.scoreout();
		ModelAndView mav = new ModelAndView();
		HttpSession hs = request.getSession();
		if ((boolean) hs.getAttribute("loginstate")) {
			mav.addObject("list", list);
			mav.setViewName("scoreout");
			return mav;
		} else {
			ra.addAttribute("result", "loginfail");
			mav.setViewName("redirect:index");
			return mav;
		}
	}

암튼 이러케 해서 login을 만들어줌

처음에는 top.jsp에 loginstate를 만들었는데 이 방법이 하나하나 처리할때는 좋은거 같기도 하고 아닌거 같기도하고 뭐 그렇다
⭐내가 만든 코드의 각 이름들을 잘 구분하는게 중요한 듯 헤매지 않도록 정신차리삼⭐
profile
ㅎㅇ

0개의 댓글