Filter/Listener简介
来源:互联网 发布:linux 重新挂载根目录 编辑:程序博客网 时间:2024/06/15 12:31
创建Filter类:
LogFilter.java
package com.song.web;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class LogFilter implements Filter{private FilterConfig config;//用于访问Filter的配置信息//销毁方法@Overridepublic void destroy() {this.config = null;}//过滤的核心方法@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {//用于对用户请求进行预处理ServletContext context = this.config.getServletContext();//获取ServletContext对象,用于记录日志long before = System.currentTimeMillis();System.out.println("Start Filter---");HttpServletRequest hrequest = (HttpServletRequest)arg0;//转换为HttpServletRequest请求System.out.println("Filter已经截获到用户请求的地址:" + hrequest.getServletPath());//输出提示信息arg2.doFilter(arg0, arg1);//Filter只是链式处理,请求依然放行到目的地址//用于对服务器响应执行后处理long after = System.currentTimeMillis();System.out.println("过滤结束");System.out.println("请求被定位到:"+hrequest.getRequestURI()+" 所花的时间为: " + (after - before));}//初始化方法@Overridepublic void init(FilterConfig arg0) throws ServletException {this.config = arg0;}}
配置Filter:
AuthorityFilter.java
package com.song.web;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;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;public class AuthorityFilter implements Filter{private FilterConfig config;@Overridepublic void destroy() {this.config = null;}@Overridepublic void doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException {//获取Filter的配置参数String encoding = config.getInitParameter("encoding");String loginPage = config.getInitParameter("loginPage");String proLogin = config.getInitParameter("proLogin");//设置request编码用的字符集arg0.setCharacterEncoding(encoding);HttpServletRequest requ = (HttpServletRequest)arg0;HttpSession session = requ.getSession(true);//获取客户请求的页面String requestPath = requ.getServletPath();if(session.getAttribute("user") == null && !requestPath.endsWith(loginPage) && !requestPath.endsWith(proLogin)){//forward到登录界面arg0.setAttribute("tip", "您还没有登录");arg0.getRequestDispatcher(loginPage).forward(arg0, arg1);}else{//放行请求arg2.doFilter(arg0, arg1);}}@Overridepublic void init(FilterConfig arg0) throws ServletException {this.config = arg0;}}
login2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录页面</title></head><body><h2>登录页面</h2><%if(request.getAttribute("tip") != null){out.println("<font color='red'>" + request.getAttribute("tip")+ "</font>");}%><form method="post" action="proLogin2.jsp">用户名:<input type="text" name="name"/><br/><input type="submit" value="登录"/></form></body></html>
proLogin2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>登录页面</title></head><body><h2>登录页面</h2><%session.setAttribute("user", request.getParameter("name"));%>登录成功,可以访问该应用的其他页面.</body></html>
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0" metadata-complete="true"><!-- Servlet 2.5之前,Java web应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过注解来配置管理 --><!-- metadata-complete中属性值为true时,该web应用将不会加载annotation配置的web组件 --><!-- 为该web应用配置参数 --><context-param><param-name>driver</param-name><param-value>com.mysql.jdbc.Driver</param-value></context-param><!-- 为jsp(本质是servlet)页面配置参数 --><servlet><servlet-name>config</servlet-name><jsp-file>/configTest2.jsp</jsp-file><init-param><param-name>name</param-name><param-value>youku</param-value></init-param><init-param><param-name>age</param-name><param-value>40</param-value></init-param></servlet><!-- 为Servlet类配置 --><servlet><servlet-name>login</servlet-name><servlet-class>com.song.web.LoginServlet</servlet-class></servlet><servlet><servlet-name>firstServlet</servlet-name><servlet-class>com.song.web.FirstServlet</servlet-class></servlet><!-- 定义filter --><filter> <!-- filter的名字 --><filter-name>log</filter-name><!-- filter的实现类 --><filter-class>com.song.web.LogFilter</filter-class></filter><filter> <!-- filter的名字 --><filter-name>authority</filter-name><!-- filter的实现类 --><filter-class>com.song.web.AuthorityFilter</filter-class> <!-- 为该filter配置参数 --><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param> <!-- 为该filter配置参数 --><init-param><param-name>loginPage</param-name><param-value>/login2.jsp</param-value></init-param> <!-- 为该filter配置参数 --><init-param><param-name>proLogin</param-name><param-value>/proLogin2.jsp</param-value></init-param></filter> <!-- 为servlet定义URL --> <servlet-mapping> <servlet-name>config</servlet-name> <url-pattern>/config</url-pattern> </servlet-mapping><servlet-mapping><servlet-name>login</servlet-name><url-pattern>/login</url-pattern></servlet-mapping><servlet-mapping><servlet-name>firstServlet</servlet-name><url-pattern>/firstServlet</url-pattern></servlet-mapping> <!-- 定义filter拦截的URL --><filter-mapping><filter-name>authority</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>log</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!-- 配置web应用的首页列表 --><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.xhtml</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>
实现listener类:
配置listener:
0 0
- Filter/Listener简介
- Servlet、Filter、Listener的简介
- Servlet、Filter、Listener的简介
- filter,Listener和JavaBean的简介
- Filter & Listener
- Listener&Filter
- Filter & Listener
- Listener && Filter
- Listener&&Filter
- listener&filter
- Listener & Filter
- Listener&Filter
- Listener 、Filter 和 Interceptor
- Filter与Listener
- Listener and Filter
- Filter vs Listener
- Filter与Listener
- filter和listener
- Runtime的简单使用
- 关于bigfile表空间
- 字体界的黑科技!输入数字立刻生成酷炫信息图的字体
- 工欲善其事,必先利其器
- 第十六周项目1—阅读程序(1)
- Filter/Listener简介
- 知识体系
- 【一天一道LeetCode】#97. Interleaving String
- Unity Editor编程杂记
- springmvc注解开发-商品修改功能分析
- 希尔排序 ShellSort Java代码
- AWR的使用
- spring mvc 集成 swagger及swagger ui
- Swift-Charts 多种样式图表-详细