Jam's story
[JSP] 로그인 화면 본문
ex02_defualt.jsp - 메인페이지
<%@ page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ include file="auth.jspf" %>
<%-- <%
//인증(로그인)한다면 쿠키이름(auth) 쿠키값(로그인ID) 저장
cname = "auth";
String logonID = null;
//com.util.Cookies.java
//Cookies.java 객체 생성 => 생성자 호출 => cookieMap key, value
Cookies cookies = new Cookies(request);
if(cookies.exists(cname)){
//로그인 ㅐㅆ다.
logonID = cookies.getValue(cname);
}
%> --%>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="../images/SiSt.ico">
<title>2022. 6. 22.-오후 8:22:18</title>
<style>
div{
border: 1px solid gray;
width:300px;
height:100px;
padding:20px;
}
</style>
</head>
<body>
<h3></h3>
<%
if(logonID==null){
%>
<div id="logon">
<form action="ex02_logon.jsp">
아이디 : <input type="text" name="id" value="admin" /><br>
비밀번호 : <input type="password" name="passwd" value="1234" /><br>
<input type="submit" value="로그인" />
<input type="button" value="회원가입" />
<%
String error=request.getParameter("error");
if(error!=null){
%>
<span style="color:red">로그인 실패 </span>
<%} %>
<script>
$(function(){
$("#logon span").fadeOut(5000);
});
</script>
</form></div>
<%}else { %>
<div id="logout">
[<%=logonID %>님 환영합니다.]<br>
<a href="ex02_logout.jsp">로그아웃</a>
</div>
<%} %>
< <!-- 로그인 하지 않아도 사용가능한메뉴 -->
<a href="/jspPro/cstvsboard/list.htm">게시판</a><br>
<a href="#">공지사항</a><br>
<%
if(logonID != null){
%>
<!-- 로그인 해야 사용가능 메뉴 -->
<a href="#">일정관리</a><br>
<a href="#">자료실</a><br>
<%
}
if(logonID != null && logonID.equals("admin")){
%>
<!-- 인증 + 권한(관리자) -->
<a href="#">급여관리</a><br>
<a href="#">사원관리</a><br>
<%
}
%>
</body>
</html>
ex02_logon.jsp
<%@page import="com.util.Cookies"%>
<%@page import="java.util.HashMap"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
HashMap<String, String> member = new HashMap<>();
member.put("admin","1234"); // 관리자
member.put("hong","1234"); // 일반회원
member.put("park","1234"); // 일반회원
String id = request.getParameter("id");
String passwd = request.getParameter("passwd");
if( id.equals("admin") && passwd.equals("1234") ) {
Cookie c = Cookies.createCookie("auth", id, "/", -1);
response.addCookie(c);
response.sendRedirect("ex02_default.jsp");
}else if( id.equals("hong") && passwd.equals("1234") ) {
Cookie c = Cookies.createCookie("auth", id, "/", -1);
response.addCookie(c);
response.sendRedirect("ex02_default.jsp");
}else if( id.equals("park") && passwd.equals("1234") ) {
Cookie c = Cookies.createCookie("auth", id , "/", -1);
response.addCookie(c);
response.sendRedirect("ex02_default.jsp");
}else{
response.sendRedirect("ex02_default.jsp?error"); // 로그인 실패했을 때 ? error
}
%>
ex02_logout.jsp
경로
/auth.jspf" / 안쓰는 이유는 /를 쓰면 jspPro밑에 있다는 소리이다.
여기서는 같은 폴더내에 있으므로 /를 안쓰는거다.
<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="auth.jspf" %>
<!-- "/auth.jspf" / 안쓰는 이유는 /를 쓰면 jspPro밑에 있다는 소리이다. -->
<!-- 여기서는 같은 폴더내에 있으므로 /를 안쓰는거다. -->
<%--
<%
String cname = "auth";
String logonID = null;
Cookies cookies = new Cookies(request);
if(cookies.exists(cname)){
logonID = cookies.getValue(cname);
}
%>
--%>
<%
// 쿠키 삭제 : 만기시점 0 설정
Cookie c = Cookies.createCookie("auth", "", "/" , 0);
response.addCookie( c );
// ex02_default.jsp 이동
%>
<script>
alert("[<%= logonID%>]님 로그아웃 하셨습니다.")
location.href = "ex02_default.jsp";
</script>
ex02_board.jsp
<%@page import="com.util.Cookies"%>
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@include file="auth.jspf" %>
<%
//auth 쿠키이름으로 id 저장 유무에 따라 인증 여부 확인
/*
String auth = null;
String cname= "auth";
Cookies cookies = new Cookies(request);
if(cookies.exists(cname)){
auth = cookies.getValue(cname);
}
*/
//위의 코딩 들을 auth.jspf 파일로 빼고 -> include 지시자를 사용해 수정
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
div{
border: 1px solid gray;
width: 300px;
height: 100px;
padding: 20px;
}
</style>
<script>
$(document).ready(function (){
$("#logon span").fadeOut(5000);
});
</script>
</head>
<body>
<h3>default(main) page</h3>
<%
if(logonID==null){
%>
<div id="logon">
<form action="ex02_logon.jsp">
아이디: <input type="text" name="id" value="admin" /><br>
비밀번호: <input type="password" name="passwd" value="1234" /><br>
<input type="submit" value="로그인" />
<input type="button" value="회원가입" />
<br>
<%
//?error 달려있다면
String error = request.getParameter("error");
if(error != null){
%>
<span style="color: red">로그인 실패했습니다.</span>
<%
}
%>
</form>
</div>
<%
}else{
%>
<div id="logout">
[<%=logonID %>]님 환영합니다.<br>
<a href="ex02_logout.jsp">로그아웃</a>
</div>
<%
}
%>
<!-- 인증, 권한 따라 사용할 메뉴 처리 -->
<!-- 게시판과 공지사항은 인증/권한 없이 사용 가능 -->
<a href="ex02_board.jsp">게시판</a><br>
<a href="ex02_notice.jsp">공지사항</a><br>
<%
if(logonID!=null){ //로그인 되어졌음 (인증O)
%>
<a href="#">일정관리</a><br>
<a href="#">자료실</a><br>
<%
if(logonID.equals("관리자")){
%>
<a href="#">사원관리-(관리자 권한)</a><br>
<a href="#">급여관리-(관리자 권한)</a><br>
<%
}
}
%>
</body>
</html>
include해서 사용하는 auth.jspf
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.util.Cookies" %>
<%
String cname="auth";
String logonID=null;
Cookies cookies = new Cookies(request);
if(cookies.exists(cname)){
cname= cookies.getValue(cname);
}
%>
cookie.java
package com.util;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
//서버에서 쿠키를 다루는 클래스 라이브러리
public class Cookies {
public Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
public Cookies(HttpServletRequest request) {
//쿠키값을 얻어와서 Map 안에 저장하는 일을 생성자에서 하겠다.
Cookie [] cookies = request.getCookies();
if(cookies!=null) {
for (int i = 0; i < cookies.length; i++) {
//String key = cookies[i].getName();
//Cookie value = cookies[i];
//this.cookieMap.put(key, value);
//변수선언 없이 바로 집어 넣는 것이 성능상 좋은 코딩
this.cookieMap.put(cookies[i].getName(), cookies[i]);
}//for
}//if
}//constructor
public Cookie getCookie(String cname) {
//맵 안의 쿠키 이름에 해당하는 쿠키 객체 자체 리턴
return this.cookieMap.get(cname);
}
//쿠키맵 안에 쿠키 존재 여부 반환 메소드
//존재하면 true, 존재하지 않으면 false
public boolean exists(String cname) {
return this.cookieMap.get(cname) != null;
}
//쿠키 객체를 생성해서 반환하는 메소드
public static Cookie createCookie(String cname, String cvalue
, String domain, String path, int expiry) throws UnsupportedEncodingException {
Cookie cookie = new Cookie(cname, URLEncoder.encode(cvalue,"UTF-8"));
cookie.setDomain(domain);
cookie.setPath(path);
cookie.setMaxAge(expiry);
return cookie;
}
//도메인 없이 생성
public static Cookie createCookie(String cname, String cvalue
, String path, int expiry) throws UnsupportedEncodingException {
Cookie cookie = new Cookie(cname, URLEncoder.encode(cvalue,"UTF-8"));
cookie.setPath(path);
cookie.setMaxAge(expiry);
return cookie;
}
//cname과 cvalue만
public static Cookie createCookie(String cname, String cvalue) throws UnsupportedEncodingException {
Cookie cookie = new Cookie(cname, URLEncoder.encode(cvalue,"UTF-8"));
return cookie;
}
public String getValue(String cname) throws UnsupportedEncodingException {
Cookie cookie = this.cookieMap.get(cname);
if(cookie==null) return null;
return URLDecoder.decode(cookie.getValue(), "UTF-8");
}
}//class
'JSP' 카테고리의 다른 글
[JSP] 세션 (0) | 2022.06.22 |
---|---|
[JSP] 커넥션풀 (0) | 2022.06.22 |
[JSP] 클라이언트와 대화 - 쿠키 (0) | 2022.06.21 |
[JSP] 게시판 - 목록, 글쓰기 기능 , 페이징 처리 (0) | 2022.06.20 |
[JSP]자바빈즈 (0) | 2022.06.20 |
Comments