Notice
Recent Posts
Recent Comments
Link
반응형
이로
JSP 로그인 요청한 곳으로 가게하기 본문
반응형
홈페이지를 만들 때 로그인 요청한 곳으로 로그인 후 돌아가게 하는 방법입니다.
간략 요약
1. index 페이지에서 로그인 버튼 클릭시
<a id="login" href="/login.jsp?from=/index.jsp" hidden=<%=loginState%>>Login</a>
?from=/index.jsp로 login.jsp사이트에 이름은 from이고 value는 /index.jsp 를 보내준다.
2. login.jsp 페이지
<% String recentURI = request.getParameter("from"); %>
위 코드로 index페이지에서 보낸 from의 value를(/index.jsp) recentURI에 저장한다.
그 다음 로그인 정보를 LoginAction 페이지로 보낼 때, 이전 페이지 정보도 함께 보내야 한다.
<form action="/LoginAction?from=<%=recentURI%>" method=post>
3. LoginAction.java페이지
String recentURI = request.getParameter("from");// login에서 보낸 from으로 로그인 요청한 URI 받기
로그인페이지에서 보낸 from의 value를 recentURI에 저장한다.
로그인 성공시 로그인창 이전 페이지로 보낸다.
response.sendRedirect(recentURI); // 로그인 하기전 페이지로 보내기
로그인 실패시에도 recentURI를 유지해주지않으면 로그인 창에서 로그인 실패시 recentURI정보가 날아갈 수 있다. 그렇기에 삭제되지않도록 해 주어야 한다. (아래 코드 참고)
========== ===== login.jsp ===== ==========
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 홈, 로그인, 로그아웃, 보드 만들기 -->
<!-- 홈은 index.jsp 로 이동, 로그인은 login.jsp로 이동, board는 board.jsp로 이동 -->
<!-- <a>로 4개 만들기 -->
<%
//로그인 상태에 따라 로그인, 로그아웃 메뉴 노출 바꾸게하기
boolean loginState; //로그인 상태 표시해주는 변수
if (session.getAttribute("LoginID") == null) { // 로그인 id가져오기
loginState = false;//로그인 안된 상태일 경우
} else {
loginState = true; // 로그인 된 상태일 경우
}
%>
<a href="/index.jsp">HOME</a><!-- index로 가는 링크 -->
<!-- login로 가는 링크이다.'?from=/index.jsp'는 데이터 (/index.jsp) 를 login.jsp에 전달해준다. -->
<a id="login" href="/login.jsp?from=/index.jsp" hidden=<%=loginState%>>Login</a>
<a id="logout" href="/logout.jsp" hidden=<%=!loginState%>>Logout</a>
<a href="/board.jsp">Board</a><!-- board로 가는 링크 -->
</body>
</html>
========== ===== login.jsp ===== ==========
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 홈, 로그인, 로그아웃, 보드 만들기 -->
<!-- 홈은 index.jsp 로 이동, 로그인은 login.jsp로 이동, board는 board.jsp로 이동 -->
<!-- <a>로 4개 만들기 -->
<%
//로그인 상태에 따라 로그인, 로그아웃 메뉴 노출 바꾸게하기
String loginState; //로그인 상태 표시해주는 변수
String loginState1;
if (session.getAttribute("LoginID") == null) { // 로그인 id가져오기
loginState = hidden;//로그인 안된 상태일 경우
loginState1= visible;
} else {
loginState = true; // 로그인 된 상태일 경우
loginState = visible;
}
%>
<a href="/index.jsp">HOME</a><!-- index로 가는 링크 -->
<!-- login로 가는 링크이다.'?from=/index.jsp'는 데이터 (/index.jsp) 를 login.jsp에 전달해준다. -->
<a id="login" href="/login.jsp?from=/index.jsp" hidden=<%=loginState1%>>Login</a>
<a id="logout" href="/logout.jsp" hidden=<%=loginState%>>Logout</a>
<a href="/board.jsp">Board</a><!-- board로 가는 링크 -->
</body>
</html>
========== ===== LoginAction.java ===== ==========
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;
@WebServlet("/LoginAction") // URL 뒷쪽에 붙는 이름이다. 이 쿼리를 입력하지 않으면 주소와 프로그램과 연결해주지 못한다.
public class LoginAction extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// id, pwd, checkbox 정보 받아오기
String id = request.getParameter("id"); // id 넘어온다.
String pwd = request.getParameter("pwd"); // pwd 넘어온다.
String checkbox = request.getParameter("checkbox");// 체크박스의 체크여부 넘어온다.
String recentURI = request.getParameter("from");// login에서 보낸 from으로 로그인 요청한 URI 받기
HttpSession session = request.getSession(); // 세션 생성
String sessionID = session.getId();// 세션 아이디 받아오기
response.setCharacterEncoding("UTF-8"); // 한글도 입력 가능하게 하기
PrintWriter out = response.getWriter();
Cookie cookie = new Cookie("userId", id);// 쿠키 생성
if (checkbox == null) {
cookie.setMaxAge(0);// 체크박스 체크 해제되었을 때 쿠키 유효시간 0으로 해서 브라우저에서 삭제하게 한다.
response.addCookie(cookie);
}
// id , pwd 에 null 체크 반드시 하기
if ((id != null) && (pwd != null)) {
if (id.equals("asdf") && pwd.equals("1234")) { // 로그인 성공시
// id 와 pwd가 일치하는 경우 index.jsp로 이동 경로설정 주의!! context 값 / 으로해놓았다.
if (checkbox != null) { // 체크박스 체크여부에 따라 쿠키 저장 확인
response.addCookie(cookie); // 체크박스 체크 되었을 때 쿠키 저장
}
session.setAttribute("LoginID", id);// 세션에 로그인 아이디를 속성으로 넣기
session.setMaxInactiveInterval(60*10);//세션의 수명을 10분으로 설정
response.sendRedirect(recentURI); // 로그인 하기전 페이지로 보내기
} else { // 로그인 실패시
response.sendRedirect("/login.jsp?from="+recentURI);// 로그인 실패시 바로 login 화면으로 돌아가게하기
// 어디서 보냈는지 기억해야하므로 recentURI추가해줘야한다.
}
}
}
}
반응형
'컴퓨터 > 과제' 카테고리의 다른 글
JSP 로그인 만들기 + 쿠키를 이용하여 id저장하 (1) | 2019.06.21 |
---|---|
JS 체크박스 만들어보기 (+ jQuery구문으로 바꿔보기) (0) | 2019.06.19 |
JS select의 option 옮기기 (0) | 2019.06.18 |
짝 맞추기 게임 만들기 (0) | 2019.06.16 |
Comments