관리자용 페이지 만들기
1. 관리자 계정 만들기
밑에 admin계정 및 패스워드 만들기
오류나는거 무시 함
관리자 권한 인정해줌
여러명이면 아래에 더 복사해서 작성하면 됨.
web.xml
web.xml 추가
<!--관리자 권한 등록 -->
<security-role>
<description>관리자</description>
<role-name>admin</role-name>
</security-role>
<!--관리자 권한인 url 적용 -->
<security-constraint>
<display-name>BookMarket Security</display-name>
<web-resource-collection>
<web-resource-name>BookMarket</web-resource-name>
<description></description>
<url-pattern>/addBook.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>관리자 권한</description>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
url-pattern 관리자만 addBook.jsp 사용할 수 있다.
role-name = tomcat에서 지정한 관리자
관리자인지 아닌자 확인하도록 로그인 페이지를 만들어줌
web.xml 추가 작성
<!--로그인 설정(관리자 권한 확인) -->
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login.failed.jsp</form-error-page>
</form-login-config>
</login-config>
*참고 ) WEB-INF에서 만든 파일은 servlet을 통해서만 접근가능함.
login.jsp 파일 생성 후 코드 작성
tomcat에서 만든 관리자 아이디와 비밀번호를 확인해서 처리함
j_security_check
- action="j_security_check"
- .name='j_username'
- name='j_password'
.
2. 로그인, 로그아웃 페이지
login.jsp , logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>로그인</title>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
</head>
<body>
<%@ include file="menu.jsp"%>
<div class="jumbotron">
<div class="container">
<h1 class="display-3">로그인</h1>
</div>
</div>
<div class="container" align="center">
<div class="col-md-4 com-md-offset-4">
<h3 class="form-signin-heading">관리자 로그인</h3>
<%
String error = request.getParameter("error");
if (error != null) {
out.println("<div class='alert alert-danger'>");
out.println("아이디와 비밀번호를 확인해주세요");
out.println("</div>");
}
%>
<form class="form-signin" action="j_security_check" method="post">
<div class="form-group">
<label for="inputUserName" class="sr-only">User Name</label> <input
type="text" class="form-control" placeholder="ID"
name='j_username' required autofocus>
</div>
<div class="form-group">
<label for="inputPassword" class="sr-only">Password</label> <input
type="password" class="form-control" placeholder="Password"
name='j_password' required>
</div>
<button class="btn btn btn-lg btn-success btn-block" type="submit">로그인</button>
</form>
</div>
</div>
</body>
</html>
login_failed.jsp 파일 생성
<%
response.sendRedirect("./login.jsp?error=1");
%>
addBook.jsp 에 접근하면 로그인페이지가 나옴
-> 관리자만 접근가능하게 해놔서
로그인 성공 시
실패 시
30분까지는 session에 저장됨
logout.jsp 생성
<%
session.invalidate();//세션 데이터 다 삭제
response.sendRedirect("./login.jsp");
%>
addBook.jsp 로그아웃 버튼 추가
<div class="text-right">
<a href="./logout.jsp" class="btn btn-sm btn-success pull-right">로그아웃</a>
</div>
로그아웃 클릭 시
3. 예외처리 페이지
없는 페이지나 파라미터 요청 시 표시하는 페이지 만들기
exceptionNoBookId.jsp 파일 생성 및 코드작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>도서 아이디 오류</title>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
</head>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h2 class="alert alert-danger">해당 ID 도서가 존재하지 않습니다.</h2>
</div>
</div>
<div class="container">
<p><%=request.getQueryString()%>
<p><a href="books.jsp" class="btn btn-secondary">도서 목록 »</a>
</div>
</body>
</html>
book.jsp에 코드 추가
<%@ page errorPage="exceptionNoBookId.jsp"%>
http://localhost:8080/BookMarket/book.jsp?id=ISBN1238
확인하기
도서 id가 없을 경우에만 에러가 남
없는 페이지 요청할 경우 출력하는 페이지 생성 필요
web.xml 코드 추가
error 코드가 404일 때 exceptionNopage.jsp 출력
<!-- http 요청 에러처리 -->
<error-page>
<error-code>404</error-code>
<location>/exceptionNoPage.jsp</location>
</error-page>
exceptionNoPage.jsp 파일 생성 및 코드 작성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>페이지 오류</title>
<link rel="stylesheet" href="./resources/css/bootstrap.min.css" />
</head>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h2 class="alert alert-danger">요청하신 페이지를 찾을 수 없습니다.</h2>
</div>
</div>
<div class="container">
<p><%=request.getRequestURL()%>
<p><a href="welcome.jsp" class="btn btn-secondary">홈으로 »</a>
</div>
</body>
</html>
참고 )
https://developer.mozilla.org/ko/docs/Web/HTTP/Status
'BACKEND > Jsp' 카테고리의 다른 글
북마켓 프로젝트 8 (0) | 2023.09.26 |
---|---|
북마켓 프로젝트 7 (0) | 2023.09.25 |
북마켓 프로젝트 5 (0) | 2023.09.22 |
북마켓 프로젝트 4 (0) | 2023.09.22 |
북마켓 프로젝트 3 (0) | 2023.09.22 |