<%@ 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를 만들었는데 이 방법이 하나하나 처리할때는 좋은거 같기도 하고 아닌거 같기도하고 뭐 그렇다
⭐내가 만든 코드의 각 이름들을 잘 구분하는게 중요한 듯 헤매지 않도록 정신차리삼⭐