Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 참조형변수
- 오라클
- oracle
- 메소드오버로딩
- 환경설정
- 추상메서드
- 인터페이스
- 예외처리
- NestedFor
- cursor문
- Java
- 정수형타입
- 다형성
- EnhancedFor
- 자바
- 한국건설관리시스템
- GRANT VIEW
- 생성자오버로드
- 컬렉션 타입
- 사용자예외클래스생성
- 컬렉션프레임워크
- abstract
- 제네릭
- 어윈 사용법
- 집합_SET
- 객체 비교
- 예외미루기
- exception
- 대덕인재개발원
- 자동차수리시스템
Archives
- Today
- Total
거니의 velog
231108_JSP 개론 10 본문
[filter01.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>쉽게 배우는 JSP 웹 프로그래밍</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<%@ include file="/pageModule/headPart.jsp" %>
</head>
<body>
<%@ include file="/pageModule/header.jsp" %>
<div class="breadcrumbs" style="padding-top:40px;">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 col-md-6 col-12">
<div class="breadcrumbs-content">
<h1 class="page-title">필터</h1>
</div>
</div>
<div class="col-lg-6 col-md-6 col-12">
<ul class="breadcrumb-nav">
<li><a href="/">INDEX</a></li>
<li>CH12</li>
</ul>
</div>
</div>
</div>
</div>
<section class="about-us section">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-lg-12 col-md-12 col-12">
<div class="content-left wow fadeInLeft" data-wow-delay=".3s">
<form action="filter01_process.jsp" method="post">
이름 : <input type="text" name="name" /><br />
<button type="submit">전송</button>
</form>
</div>
</div>
</div>
</div>
</section>
<%@ include file="/pageModule/footer.jsp" %>
<%@ include file="/pageModule/footerPart.jsp" %>
</body>
</html>
[filter01_process.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>쉽게 배우는 JSP 웹 프로그래밍</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<%@ include file="/pageModule/headPart.jsp" %>
</head>
<body>
<%@ include file="/pageModule/header.jsp" %>
<div class="breadcrumbs" style="padding-top:40px;">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 col-md-6 col-12">
<div class="breadcrumbs-content">
<h1 class="page-title">필터</h1>
</div>
</div>
<div class="col-lg-6 col-md-6 col-12">
<ul class="breadcrumb-nav">
<li><a href="/">INDEX</a></li>
<li>CH12</li>
</ul>
</div>
</div>
</div>
</div>
<section class="about-us section">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-lg-12 col-md-12 col-12">
<div class="content-left wow fadeInLeft" data-wow-delay=".3s">
<%
String name = request.getParameter("name");
%>
<p>입력된 name 값 : <%= name %></p>
</div>
</div>
</div>
</div>
</section>
<%@ include file="/pageModule/footer.jsp" %>
<%@ include file="/pageModule/footerPart.jsp" %>
</body>
</html>
[web.xml]
<filter>
<filter-name>Filter01</filter-name>
<filter-class>kr.or.ddit.ch12.AuthenFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter01</filter-name>
<url-pattern>/ch12/filter01_process.jsp</url-pattern>
</filter-mapping>
[AuthenFilter.java]
package kr.or.ddit.ch12;
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 {
// 필터를 초기화 하도록 init() 메서드를 작성한다.
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter01 실행...!");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 파라미터로 넘긴 이름이 존재하지 않을 때 특정 메시지를 포함하고 있는 페이지를 리턴
// 넘겨받은 이름이 없다면, "입력된 name값은 null 입니다, 다시 입력해주세요." 를 출력
System.out.println("Filter01 수행...!");
request.setCharacterEncoding("utf-8");
String name = request.getParameter("name");
if(name == null || name.equals("")) { // 넘겨받은 이름 값이 존재하지 않음
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter pw = response.getWriter();
String msg = "<p>입력된 name 값은 null 입니다, 다시 입력해주세요!</p>";
msg += "<a href='filter01.jsp'>Filter01 이동</a>";
pw.println(msg);
return; // 요청 URL로 넘어가지 않고 해당 필터에서 응답 페이지가 결과로 나간다.
}
// 연속적으로 필터가 있으면 다음 필터로 제어를 넘기도록 FilterChain 객체 타입의 doFilter() 메소드를 작성
chain.doFilter(request, response);
}
// 필터를 종료하기 전에 호출하도록 destroy() 메소드를 작성한다.
@Override
public void destroy() {
System.out.println("Filter01 해제...!");
}
}
- http://localhost/ch12/filter01.jsp
[web.xml]
<filter>
<filter-name>Filter02</filter-name>
<filter-class>kr.or.ddit.ch12.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>/ch12/filter02_process.jsp</url-pattern>
</filter-mapping>
[InitParamFilter.java]
package kr.or.ddit.ch12;
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; // FilterConfig를 전역변수로 설정
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter02 초기화...!");
System.out.println("web.xml에 설정한 param을 담고 있는 filterConfig를 전역 변수에 먼저 셋팅해 준다.");
System.out.println("filterConfig.parameter 1 : " + filterConfig.getInitParameter("param1"));
System.out.println("filterConfig.parameter 2 : " + filterConfig.getInitParameter("param2"));
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("Filter02 실행...!");
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String param1 = filterConfig.getInitParameter("param1");
String param2 = filterConfig.getInitParameter("param2");
String msg = "";
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
PrintWriter writer = response.getWriter();
if(id.equals(param1) && pw.equals(param2)) {
// 로그인 처리가 성공했을 때, filter02_process.jsp 페이지로 msg 정보를 담아서 넘겨준다. (scope는 request로)
msg = "로그인 성공했습니다!";
request.setAttribute("msg", msg);
}else {
// 로그인 처리가 실패했을 때, filter02_process.jsp로 넘어가지 않고 응답으로 아래 메세지를 출력한다.
msg = "로그인 실패했습니다! <br />";
msg += "<a href='filter02.jsp'>Filter02 이동</a>";
writer.println(msg);
return;
}
chain.doFilter(request, response);
}
@Override
public void destroy() {
System.out.println("Filter02 해제...!");
}
}
[filter02.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>쉽게 배우는 JSP 웹 프로그래밍</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<%@ include file="/pageModule/headPart.jsp" %>
</head>
<body>
<%@ include file="/pageModule/header.jsp" %>
<div class="breadcrumbs" style="padding-top:40px;">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 col-md-6 col-12">
<div class="breadcrumbs-content">
<h1 class="page-title">필터</h1>
</div>
</div>
<div class="col-lg-6 col-md-6 col-12">
<ul class="breadcrumb-nav">
<li><a href="/">INDEX</a></li>
<li>CH12</li>
</ul>
</div>
</div>
</div>
</div>
<section class="about-us section">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-lg-12 col-md-12 col-12">
<div class="content-left wow fadeInLeft" data-wow-delay=".3s">
<form action="filter02_process.jsp" method="post">
아이디 : <input type="text" name="id" /><br />
비밀번호 : <input type="text" name="pw" /><br />
<button type="submit">전송</button>
</form>
</div>
</div>
</div>
</div>
</section>
<%@ include file="/pageModule/footer.jsp" %>
<%@ include file="/pageModule/footerPart.jsp" %>
</body>
</html>
[filter02_process.jsp]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html class="no-js" lang="zxx">
<head>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>쉽게 배우는 JSP 웹 프로그래밍</title>
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<%@ include file="/pageModule/headPart.jsp" %>
</head>
<body>
<%@ include file="/pageModule/header.jsp" %>
<div class="breadcrumbs" style="padding-top:40px;">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 col-md-6 col-12">
<div class="breadcrumbs-content">
<h1 class="page-title">필터</h1>
</div>
</div>
<div class="col-lg-6 col-md-6 col-12">
<ul class="breadcrumb-nav">
<li><a href="/">INDEX</a></li>
<li>CH12</li>
</ul>
</div>
</div>
</div>
</div>
<section class="about-us section">
<div class="container">
<div class="row align-items-center justify-content-center">
<div class="col-lg-12 col-md-12 col-12">
<div class="content-left wow fadeInLeft" data-wow-delay=".3s">
<%
String msg = (String) request.getAttribute("msg");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
%>
<p>메세지 : <%= msg %></p>
<p>입력된 id 값 : <%= id %></p>
<p>입력된 pw 값 : <%= pw %></p>
</div>
</div>
</div>
</div>
</section>
<%@ include file="/pageModule/footer.jsp" %>
<%@ include file="/pageModule/footerPart.jsp" %>
</body>
</html>
- http://localhost/ch12/filter02.jsp
[web.xml]
<filter>
<filter-name>Filter02_1</filter-name>
<filter-class>kr.or.ddit.ch12.LogFileFilter</filter-class>
<init-param>
<param-name>filename</param-name>
<param-value>C:\\logs\\monitor.log</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Filter02_1</filter-name>
<url-pattern>/ch12/filter02_process.jsp</url-pattern>
</filter-mapping>
[LogFileFilter.java]
package kr.or.ddit.ch12;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
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 LogFileFilter implements Filter {
private PrintWriter writer;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter02_1 초기화...!");
String filename = filterConfig.getInitParameter("filename");
if(filename == null) {
throw new ServletException("로그 파일의 이름을 찾을 수 없습니다!");
}
try {
// PrintWriter
// 두 번째 매개변수 : autoFlush 여부 (true/false)
// FileWriter
// 두 번째 매개변수 : append 여부 (true/false)
writer = new PrintWriter(new FileWriter(filename, true), true);
} catch (IOException e) {
throw new ServletException("로그 파일을 열 수 없습니다.");
}
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
System.out.println("Filter02_1 실행...!");
writer.printf("현재 일시 : %s %n", getCurrentTime());
String clientAddr = request.getRemoteAddr();
writer.printf("클라이언트 주소 : %s %n", clientAddr);
chain.doFilter(request, response);
String contentType = response.getContentType();
writer.printf("문서의 컨텐츠 유형 : %s %n", contentType);
writer.println("============================================");
}
private String getCurrentTime() {
DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis()); // 현재의 시스템 시간을 셋팅
return formatter.format(cal.getTime()); // 지정한 포멧에 맞춰 시간 데이터를 출력
}
@Override
public void destroy() {
System.out.println("Filter02_1 해제...!");
writer.close();
}
}
- http://localhost/ch12/filter02.jsp
'대덕인재개발원 > 대덕인재개발원_웹기반 애플리케이션' 카테고리의 다른 글
231109_CRUD 과제 (1) | 2023.11.09 |
---|---|
231109_JSP 개론 11 (0) | 2023.11.09 |
231107_JSP 과제 5 (0) | 2023.11.07 |
231107_JSP 개론 9 (0) | 2023.11.07 |
231106_JSP 개론 8 (0) | 2023.11.06 |