<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<security-role>
<role-name>manager</role-name>
</security-role>
<security-constraint>
<!-- 웹 자원에 대한 설정 -->
<web-resource-collection>
<!-- 자원 이름 -->
<web-resource-name>BookStore2</web-resource-name>
<!-- 접근 제한 url -->
<url-pattern>/cart/security01.jsp</url-pattern>
<url-pattern>/cart/security02.jsp</url-pattern>
<!-- 2-1. security02-->
<url-pattern>/shoppingmall/addProduct.jsp</url-pattern>
<!-- 전송 방식 -->
<http-method>GET</http-method>
</web-resource-collection>
<!-- 인증된 사용자 -->
<auth-constraint>
<description>관리자</description>
<role-name>manager</role-name>
</auth-constraint>
<!-- 데이터 보호
<user-data-constraint>
NONE/INTEGRAL/CONFIDENTIAL: 기본값(데이처보호x) / 무결성(전송 중에 변경되지 않도록) / 기밀성
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint> -->
</security-constraint>
<login-config>
<!-- <auth-method>BASIC</auth-method> -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 4. shoppingmall/ login.jsp, loginfailed.jsp -->
<form-login-page>/shoppingmall/login.jsp</form-login-page>
<form-error-page>/shoppingmall/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- 예외처리 페이지 -->
<!-- 우선순위 1)jsp 페이지에 설정한 애 > 2)exception-type > 3)error-code -->
<!-- 최우선순위: 코드 내의 것 -->
<!-- 3순위. 코드에 의해 발생하는 애 error-code -->
<error-page>
<error-code>404</error-code>
<location>/shoppingmall/error_404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/shoppingmall/error_500.jsp</location>
</error-page>
<!-- 2순위. (유형별) 타입에 의해 발생하는 애 exception-type -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/shoppingmall/exception_error.jsp</location>
</error-page>
<!-- <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class></listener-class>
</listener> -->
<!-- 필터적용 시작 -->
<filter>
<filter-name>filter01</filter-name>
<filter-class>filter.AuthenFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter01</filter-name>
<url-pattern>/filter01_process.jsp</url-pattern>
</filter-mapping>
<!-- 필터적용 끝 -->
</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>filter01</title>
</head>
<body>
<form action="filter01_process.jsp" method="post">
<input type="text" name="name">
<input type="submit" value="전송">
</form>
</body>
</html>
package filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class AuthenFilter implements Filter {
@Override
public void destroy() {
System.out.println("필터해제.....");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("필터수행.....");
String name = request.getParameter("name");
if(name== null || name.equals("")) {
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter writer = response.getWriter(); // rsp를 getwriter해준다는 게 뭘까?
String message = "입력된 name은 null입니다.";
writer.println(message);
return;
}
chain.doFilter(request, response); // 연결시켜 주는 것
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("필터초기화.....");
}
}
https://charliecharlie.tistory.com/353
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>filter01_process</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
%>
정상적으로 입력된 값은 <%= request.getParameter("name") %>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<security-role>
<role-name>manager</role-name>
</security-role>
<security-constraint>
<!-- 웹 자원에 대한 설정 -->
<web-resource-collection>
<!-- 자원 이름 -->
<web-resource-name>BookStore2</web-resource-name>
<!-- 접근 제한 url -->
<url-pattern>/cart/security01.jsp</url-pattern>
<url-pattern>/cart/security02.jsp</url-pattern>
<!-- 2-1. security02-->
<url-pattern>/shoppingmall/addProduct.jsp</url-pattern>
<!-- 전송 방식 -->
<http-method>GET</http-method>
</web-resource-collection>
<!-- 인증된 사용자 -->
<auth-constraint>
<description>관리자</description>
<role-name>manager</role-name>
</auth-constraint>
<!-- 데이터 보호
<user-data-constraint>
NONE/INTEGRAL/CONFIDENTIAL: 기본값(데이처보호x) / 무결성(전송 중에 변경되지 않도록) / 기밀성
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint> -->
</security-constraint>
<login-config>
<!-- <auth-method>BASIC</auth-method> -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 4. shoppingmall/ login.jsp, loginfailed.jsp -->
<form-login-page>/shoppingmall/login.jsp</form-login-page>
<form-error-page>/shoppingmall/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- 예외처리 페이지 -->
<!-- 우선순위 1)jsp 페이지에 설정한 애 > 2)exception-type > 3)error-code -->
<!-- 최우선순위: 코드 내의 것 -->
<!-- 3순위. 코드에 의해 발생하는 애 error-code -->
<error-page>
<error-code>404</error-code>
<location>/shoppingmall/error_404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/shoppingmall/error_500.jsp</location>
</error-page>
<!-- 2순위. (유형별) 타입에 의해 발생하는 애 exception-type -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/shoppingmall/exception_error.jsp</location>
</error-page>
<!-- <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class></listener-class>
</listener> -->
<!-- 필터적용 시작 -->
<filter>
<filter-name>filter01</filter-name>
<filter-class>filter.AuthenFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter01</filter-name>
<url-pattern>/filter01_process.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>filter02</filter-name>
<filter-class>filter.InitParamFilter</filter-class>
<init-param>
<param-name>param1</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>param2</param-name>
<param-value>admin1234</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter02</filter-name>
<url-pattern>/filter02_process.jsp</url-pattern>
</filter-mapping>
<!-- 필터적용 끝 -->
</web-app>
package filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class InitParamFilter implements Filter {
private FilterConfig filterConfig = null ;
@Override
public void destroy() {
System.out.println("필터2 해제............");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("필터2 적용............");
String id = request.getParameter("id");
String psw = request.getParameter("psw");
String param1 = filterConfig.getInitParameter("param1");
String param2 = filterConfig.getInitParameter("param2");
String message ;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter writer = response.getWriter(); // rsp를 getwriter해준다는 게 뭘까?
if(id.equals(param1)|| psw.equals(param2)) {
message = "로그인 성공";
writer.print(message);
chain.doFilter(request, response); // 필터끼리 연결해주는 것 a 필터 다음 b 필터 이렇게 겹겹히 수행하라고
} else {
message = "로그인 실패";
writer.print(message);
chain.doFilter(request, response); // 필터끼리 연결해주는 것 a 필터 다음 b 필터 이렇게 겹겹히 수행하라고
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException { // filterConfig = web.xml에서 filter에 관련된 정보
System.out.println("필터2 초기화............");
this.filterConfig = filterConfig;
}
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>filter02_process</title>
</head>
<body>
<% request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String psw = request.getParameter("psw");
%>
<p> 당신이 입력한 아이디: <%= id %>, 비밀번호: <%=psw %>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>1</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<security-role>
<role-name>manager</role-name>
</security-role>
<security-constraint>
<!-- 웹 자원에 대한 설정 -->
<web-resource-collection>
<!-- 자원 이름 -->
<web-resource-name>BookStore2</web-resource-name>
<!-- 접근 제한 url -->
<url-pattern>/cart/security01.jsp</url-pattern>
<url-pattern>/cart/security02.jsp</url-pattern>
<!-- 2-1. security02-->
<url-pattern>/shoppingmall/addProduct.jsp</url-pattern>
<!-- 전송 방식 -->
<http-method>GET</http-method>
</web-resource-collection>
<!-- 인증된 사용자 -->
<auth-constraint>
<description>관리자</description>
<role-name>manager</role-name>
</auth-constraint>
<!-- 데이터 보호
<user-data-constraint>
NONE/INTEGRAL/CONFIDENTIAL: 기본값(데이처보호x) / 무결성(전송 중에 변경되지 않도록) / 기밀성
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint> -->
</security-constraint>
<login-config>
<!-- <auth-method>BASIC</auth-method> -->
<auth-method>FORM</auth-method>
<form-login-config>
<!-- 4. shoppingmall/ login.jsp, loginfailed.jsp -->
<form-login-page>/shoppingmall/login.jsp</form-login-page>
<form-error-page>/shoppingmall/login_failed.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- 예외처리 페이지 -->
<!-- 우선순위 1)jsp 페이지에 설정한 애 > 2)exception-type > 3)error-code -->
<!-- 최우선순위: 코드 내의 것 -->
<!-- 3순위. 코드에 의해 발생하는 애 error-code -->
<error-page>
<error-code>404</error-code>
<location>/shoppingmall/error_404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/shoppingmall/error_500.jsp</location>
</error-page>
<!-- 2순위. (유형별) 타입에 의해 발생하는 애 exception-type -->
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/shoppingmall/exception_error.jsp</location>
</error-page>
<!-- <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class></listener-class>
</listener> -->
<!-- 필터적용 시작 -->
<filter>
<filter-name>filter01</filter-name>
<filter-class>filter.AuthenFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter01</filter-name>
<url-pattern>/filter01_process.jsp</url-pattern>
</filter-mapping>\
<filter>
<filter-name>filter02</filter-name>
<filter-class>filter.InitParamFilter</filter-class>
<init-param>
<param-name>param1</param-name>
<param-value>admin</param-value>
</init-param>
<init-param>
<param-name>param2</param-name>
<param-value>1234</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>filter02</filter-name>
<url-pattern>/filter02_process.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 필터적용 끝 -->
</web-app>
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
private String encoding;
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("인코딩필터 적용.......");
// HttpServletRequest hrequest = (HttpServletRequest) request ;
// HttpServletResponse hresponse = (HttpServletResponse) response ;
// hrequest.setCharacterEncoding(encoding);
// hresponse.setCharacterEncoding(encoding);
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encoding = filterConfig.getInitParameter("encoding");
if(encoding == null) {
encoding = "UTF-8";
}
}
}