凤凰平台注册开户_凤凰彩票app下载安装_凤凰彩票投注网

热门关键词: 凤凰平台注册开户,凤凰彩票app下载安装,凤凰彩票投注网

过滤器监听器总括,一些名词概念

作者: 编程知识  发布:2019-09-21

名词概念

1.JDBC:Java Data Base connectivity(java数据库总是),它根本由接口组成

2.数据库连接池DBCP,C3P0:数据库连接池肩负分配,管理和假释数据库连接;用处:为了可选择(销毁创造麻烦,开销大)

3.Filter:JavaWeb三大组件之一,(组件皆有二个特色,要求在web.xml中配备)过滤器,会在一组能源(jsp servlet等)的先头试行,能够让哀告获得指标能源,也得以告一段落恳求,不再接续也正是过滤器械有拦截诉求的技术;与sevlet的阻碍自己的单个财富差别,过滤器能够阻止一组能源;

多样拦截情势:
1.拦请求 REQUEST
2.拦转发 FORWARD
3.拦包含 INCLUDE
4.拦错误 ERROR

4.监听器Listener:监听器是二个接口,内容由大家贯彻它要求登记,举个例子登记在按键上,监听器的方法会在一定事件爆发时调用

监听器模型涉及以下多个目的,模型图如下:

事件:客商对组件的三个操作,称之为贰个风云
事件源:发惹祸变的零件就是事件源
事件监听器:监听并担当处总管件的方法

图片 1

实践顺序:

1、给事件源注册监听器
2、组件接受外界作用,约等于事件被触发
3、组件发生三个对应的平地风波目的,并把此目的传递给与之提到的风云管理器
4、事件管理器运营,并实践有关的代码来拍卖该事件。

  • 监听器简要介绍 :

    • 监听器便是七个兑现特定接口的平时java程序,那些程序专门用来监听另二个java对象的法子调用或性质改变,当被监听目的爆发上述事件后,监听器有些方法将登时被试行。
    • 根本是用来监听特定对象的开创或销毁、属性的转移的!是贰个落到实处特定接口的普通java类!
    • 对象:自个儿创办自身用 , 外人成立本人用
  • 监听器的监听指标

    • 在Servlet规范中定义了多样类型的监听器,它们用于监听的事件源分别为ServletContext, HttpSessionServletRequest 那多少个域对象
    • Servlet规范针对那四个对象上的操作,又把那各个类型的监听器划分为三系列型
      1. 监听四个域对象创造和销毁的风云监听器
      2. 监听域对象中品质的增删的风云监听器
      3. 监听绑定到 HttpSession 域中的有些对象的景况的风云监听器
  • 监听器接口一、监听目的创建/销毁的监听器接口

    1. 监听ServletContext域对象创造和销毁
    - ServletContextListener 接口用于监听 ServletContext 对象的创建和销毁事件。- 当 ServletContext 对象被创建时,激发contextInitialized (ServletContextEvent sce)方法- 当 ServletContext 对象被销毁时,激发contextDestroyed(ServletContextEvent sce)方法。- servletContext域对象何时创建和销毁: 1. 创建:服务器启动针对每一个web应用创建servletcontext 2. 销毁:服务器关闭前先关闭代表每一个web应用的servletContext
    
    1. 监听HttpSession域对象创制和销毁
    - HttpSessionListener接口用于监听HttpSession的创建和销毁- 创建一个Session时,sessionCreated(HttpSessionEvent se) 方法将会被调用- 销毁一个Session时,sessionDestroyed (HttpSessionEvent se) 方法将会被调用(此处复习session对象,写多个servlet都去getSession,看session的创建)- Session域对象创建和销毁的时机 1. 创建:用户每一次访问时,服务器创建session 2. 销毁:如果用户的session 30分钟没有使用,服务器就会销毁session,我们在web.xml里面也可以配置session失效时间
    
    1. 监听HttpRequest域对象创制和销毁
    - ServletRequestListener 接口用于监听ServletRequest 对象的创建和销毁- Request 对象被创建时,监听器的requestInitialized方法将会被调用- Request对象被销毁时,监听器的requestDestroyed方法将会被调用(此处复习request对象,在浏览器窗口中多次刷新访问servlet,看request对象的创建和销毁,并写一个servlet,然后用sendRedirect、forward方式跳转到其它servlet,查看request对象的创建和消耗)- servletRequest域对象创建和销毁的时机: 1. 创建:用户每一次访问,都会创建一个reqeust 2. 销毁:当前访问结束,request对象就会销毁
    
    1. 代码 :
    - ServletRequestListener(监听request对象的创建或销毁)
    

过滤器与监听器知识总计,过滤器监听器总计

过滤器

package anderson.sh.life;import javax.servlet.ServletRequestEvent;import javax.servlet.ServletRequestListener;// 监听request对象的创建或销毁public class MyRequestListener implements ServletRequestListener{ // 对象销毁 @Override public void requestDestroyed(ServletRequestEvent sre) { // 获取request中存放的数据 Object obj = sre.getServletRequest().getAttribute; System.out.println; System.out.println("MyRequestListener.requestDestroyed; } // 对象创建 @Override public void requestInitialized(ServletRequestEvent sre) { System.out.println("MyRequestListener.requestInitialized; }}

 - HttpSessionListener(监听session对象的创建或销毁)

package anderson.sh.life;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;/**监听Session对象创建、销毁 */public class MySessionListener implements HttpSessionListener{ // 创建 @Override public void sessionCreated(HttpSessionEvent se) { System.out.println("MySessionListener.sessionCreated; } // 销毁 @Override public void sessionDestroyed(HttpSessionEvent se) { System.out.println("MySessionListener.sessionDestroyed; }}

 - ServletContextListener(监听servletContext对象的创建或销毁)

package anderson.sh.life;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;/**监听ServletContext对象创建或销毁 */public class MyServletContextListener implements ServletContextListener{ @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("MyServletContextListener.contextDestroyed; } @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("1..........MyServletContextListener.contextInitialized; }}

如何是过滤器?

过滤器是servlet2.3规范中定义的一种小型的、可插入的Web组件。用来阻拦Servlet容器的央求和响应进度。以便查看、提取或以某种格局操作正在顾客机和服务器之间沟通的数目。

过滤器常常是包装了某个作用的Web组件,那么些效应相当的重大,但对此拍卖客商端乞求或发送响应来讲不是决定性的。

独立的应用满含记录乞求和响应的多寡、管理会话属性等。

二、监听目的属性的扭转- Servlet规范定义了监听 ServletContext, HttpSession, HttpServletRequest 这七个指标中的属性别变化更音讯事件的监听器, 那八个监听器接口分别是ServletContextAttributeListener, HttpSessionAttributeListener ServletRequestAttributeListener, 那多个接口中都定义了四个方式来拍卖被监听指标中的属性的增添,删除和替换的事件,同贰个风云在那多少个接口中对应的点子名称完全同样,只是接受的参数类型差异

什么编写过滤器?

1.编写制定叁个java类,达成Filter接口

--  过滤器API中有3个常用的接口,位于javax,Servlet包中:Filter,FilterChain,FilterConfig

     编程中,过滤器类要达成Filter接口,该接口中包含三个必需贯彻的艺术:

     void init(FilterConfig  filterConfig);

     void doFilter(ServletRequest  request,ServletResponse  response,FilterChain  chain);

     void  destroy();

2.在doFilter方法中落到实处拦阻管理逻辑

--  public class CommentFilter implements Filter{

    //创设实例后,调用init方法,该办法只实行二次

    public void init(FilterConfig  filterConfig) throws ServletException{ //.....}

    //容器调用doFilter方法管理央求

    public void doFilter(ServletRequest  request,ServletResponse  response,FilterChain  chain)  throws IOException,ServletException{ //......     chian.doFilter(request,response);}

    //容器删除过滤器实例在此之前调用该措施,该格局只举行贰遍

    public void destroy(){...  ...}

}

3.将过滤器加多到Web程序中;

--  修改web.xml文件,扩张过滤器节点

<filter>

  <filter-name>filter1</filter-name>

  <filter-class>web.xxxServlet</filter-class>

</filter>

<filter-mapping>

  <filter-name>filter1</filter-name>

  <url-pattern>/xxx</url-pattern>

<filter-mapping>

4.把过滤器和Web应用一同装进安顿。

--  与web应用程序一同安插过滤器时,只须要把过滤器类和另外web组件类包蕴在联合,把web.xml文件(连同过滤器注册)放进web应用程序结构中,Servlet容器将拍卖未来的别的具有事情。

 

- attributeAdded 方法 - 当向被监听器对象中增加一个属性时,web容器就调用事件监听器的 attributeAdded 方法进行相应,这个方法接受一个事件类型的参数,监听器可以通过这个参数来获得正在增加属性的域对象和被保存到域中的属性对象 - 各个域属性监听器中的完整语法定义为: 1. `` public void attributeAdded(ServletContextAttributeEvent scae) `` 2. `` public void attributeReplaced(HttpSessionBindingEvent hsbe) `` 3. `` public void attributeRmoved(ServletRequestAttributeEvent srae) ``- attributeRemoved 方法 - 当删除被监听对象中的一个属性时,web 容器调用事件监听器的这个方法进行相应 - 各个域属性监听器中的完整语法定义为: 1. `` public void attributeRemoved(ServletContextAttributeEvent scae) `` 2. `` public void attributeRemoved (HttpSessionBindingEvent** ** hsbe) `` 3. `` public void attributeRemoved (ServletRequestAttributeEvent srae) ``- attributeReplaced 方法 - 当监听器的域对象中的某个属性被替换时,web容器调用事件监听器的这个方法进行相应各个域属性监听器中的完整语法定义为: 1. `` public void attributeReplaced(ServletContextAttributeEvent scae) `` 2. `` public void attributeReplaced (HttpSessionBindingEvent** ** hsbe) `` 3. `` public void attributeReplaced (ServletRequestAttributeEvent srae) ``- 代码: 

package anderson.sh.attr;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionAttributeListener;import javax.servlet.http.HttpSessionBindingEvent;/** 监听session对象属性的变化 */public class MySessionAttrListener implements HttpSessionAttributeListener { // 属性添加 @Override public void attributeAdded(HttpSessionBindingEvent se) { // 先获取session对象 HttpSession session = se.getSession(); // 获取添加的属性 Object obj = session.getAttribute("userName"); // 测试 System.out.println("添加的属性:" + obj); } // 属性移除 @Override public void attributeRemoved(HttpSessionBindingEvent se) { System.out.println; } // 属性被替换 @Override public void attributeReplaced(HttpSessionBindingEvent se) { // 获取sesison对象 HttpSession session = se.getSession(); // 获取替换前的值 Object old = se.getValue(); System.out.println("原来的值:" + old); // 获取新值 Object obj_new = session.getAttribute("userName"); System.out.println("新值:" + obj_new); }}

过滤器的早期级

比如有多少个过滤器都满足过滤的条件,则容器依附<filter-mapping>的前后相继顺序来调用种种过滤器。

<filter>.......</filter>

<filter>.......</filter>

<filter-mapping>......</filter-mapping>

<filter-mapping>......</filter-mapping>

 

三、session相关监听器(HttpSessionBindingListener)- HttpSessionBindingListener : 监听指标绑定到session上的风浪(监听指标绑定/解除绑定到sesison上的事件! )1. 兑现了HttpSessionBindingListener接口的 JavaBean 对象能够感知自个儿被绑定到 Session 花月从 Session 中去除的平地风波2. 当对象被绑定到 HttpSession 对象中时,web服务器调用该指标的 void valueBound(HttpSessionBindingEvent event) 方法3. 当指标从 HttpSession 对象中排除绑定期,web服务器调用该对象的 void valueUnbound(HttpSessionBindingEvent event) 方法4. 代码

过滤器的起始化参数

容器运营以后,会创制过滤器实例

接下去,容器会调用过滤器的init方法,而容器会先行创设FilterConfig对象。该目的足以访谈在web.xml文件中陈设的有的参数。

那么些在web.xml文件中存款和储蓄,由FilterConfig对象读取,在实施init方法时亦可访谈的参数值,叫开始化参数。

透过那几个起头化参数能够方便快速的布局及修改部分帮衬参数。

中间开头化参数的配备示范为:

<filter>

  <filter-name>filter1</filter-name>

  <filter-class>web.xxxFilter</filter-class>

  <! -- 开头化参数 -- >

  <init-param>

    <param-name>illegaIStr</param-name>

    <param-value>xxx</param-value>

  </init-param>

</filter>

 

package anderson.sh.session;import javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionBindingListener;// 监听此对象绑定到session上的过程,需要实现session特定接口public class Admin implements HttpSessionBindingListener { private int id; private String name; public Admin() { super(); } public Admin(int id, String name) { super(); this.id = id; this.name = name; } // 构造函数 public int getId() { return id; } public void setId { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } // 对象放入session @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println("Admin对象已经放入session"); } // 对象从session中移除 @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("Admin对象从session中移除!"); }}

- HttpSessionActivationListener 监听session序列化及反序列化的事件 1. 实现了HttpSessionActivationListener接口的 JavaBean 对象可以感知自己被活化和钝化的事件 2. 当绑定到 HttpSession 对象中的对象将要随 HttpSession 对象被钝化之前,web 服务器调用如下方法 `` sessionWillPassivate(HttpSessionBindingEvent event) `` 方法 3. 当绑定到 HttpSession 对象中的对象将要随 HttpSession 对象被活化之后,web 服务器调用该对象的 `` void sessionDidActive(HttpSessionBindingEvent event) ``方法

读取开首化参数

运用FilterConfig对象足以读取在web.xml中配备的最早化参数。示例:

String  config.getInitParamter("illegalStr")

 

  • 生命周期监听器
    • 宣示周期监听器: 监听指标的开创、销毁的长河!
      • 监听器开拓步骤:
        1. 写八个平时java类,达成相关接口;
        2. 配置

过滤器的长处:

落实代码的“可插拔性”,即增添或减弱有个别功效模块,不会影响程序的不奇怪化执行;

能够将四个一样处理逻辑的模块聚焦写在过滤器里面,方便代码的保卫安全。

 

 

监听器

<!-- session的最大活跃时间 --> <session-config> <session-timeout>60</session-timeout> </session-config> <!-- 监听request对象创建、销毁 --> <listener> <listener-class>cn.itcast.a_life.MyRequestListener</listener-class> </listener> <!-- 监听session对象创建、销毁 --> <listener> <listener-class>cn.itcast.a_life.MySessionListener</listener-class> </listener> <!-- 监听servletContext对象创建、销毁 --> <listener> <listener-class>cn.itcast.a_life.MyServletContextListener</listener-class> </listener> <!-- 属性监听器 --> <listener> <listener-class>cn.itcast.b_attr.MySessionAttrListener</listener-class> </listener>

何以是监听器?

Servlet标准中定义的一种非凡的机件,用来监听Servlet容器发生的事件并张开相应的拍卖。

容器发生的两大类事件:

--生命周期相关的事件

容器创制或然销毁request,session,ServletContext时发生的事件

--绑定数据相关的事件

调用了request,session,ServletContext的setAttribute,removeAttribute方法时产生的事件

 

  • 404; 500

  • 质量监听器

    • 监听:request/session/servletContext对象属性的转移!
      • ServletRequestAttributeListener
      • HttpSessionAttributeListener
      • ServletContextAttributeListener
  • 总计 : 先写类, 达成接口; 再配备

  • 其余监听器 : session相关监听器

    • 步骤 : 对象达成接口; 再把目的绑定/解除绑定到session上就能够触发监听代码
    • 作用 :
    • 思量 : 这几个session监听器,和地点的注脚周期、属性监听器分裂?
      • 不用再web.xml配置
      • 因为监听的靶子是温馨创设的对象,不是服务器对象!

什么样编写监听器?

1.编写制定三个java类,依赖监听的平地风波类型选拔达成相应的监听器接口。例如要监听Session对象的创设和销毁,要贯彻HttpSessionListener

--public class CouListener implements HttpSessionListener{ // 达成格局}

2.在监听器接口方法中,完毕相应的监听管理逻辑

--public class CouListener implements HttpSessionListener{

  public void sessionCreate(HttpSessionEvent arg0){

    //......

    HttpSession session = arg0.getSession();

    ServletContext ctx = session.getServletContext();(获取session或上下文对象的办法)

  }

}

3.在web.xml文件中登记该监听器

--在web.xml文件中,扩张以下节点:

<! -- 监听器 -->

<listener>

  <listener-class>web.CouListener</listener-class>

</listener>

<!-- 完毕平等的listener接口的八个监听器,在实施时是按web.xml注册出现的顺序决定 -->

 

运用场景

是因为ServletRequest,HttpSession,ServletContext对象都是容器成立的,通过对那些指标明册监听器,就足以摸清哪天创制了。举例:

在contextDestroy方法中对应用级其他财富开展自由;

总结在线人数能够通过HttpSessionListener监听器的sessionCreated方法监听session的成立动作。

 

未完,权且总括这几个。

过滤器 什么是过滤器? 过滤器是servlet2.3标准中定义的一种Mini的、可插入的Web组件。用来拦...

  • 过滤器简要介绍 :

    • Filter也称之为过滤器,它是Servlet本事中最快乐的能力,WEB开采职员通过Filter技术,对web服务器管理的有着web能源:比方Jsp, Servlet, 静态图片文件或静态 html 文件等开展拦阻,进而达成部分独特的效应。比方落到实处UHighlanderL等级的权力访谈调控、过滤敏感词汇、压缩响应音讯等局地高等成效。

    • Servlet API中提供了一个Filter接口,开拓web应用时,如果编写的Java类达成了那个接口,则把这些java类称之为过滤器Filter。通过Filter技艺,开垦人员能够兑现客户在访问有些目的财富在此之前,对拜谒的乞请和响应举行阻拦

    • Filter是怎么着促成拦阻的?

      • Filter接口中有二个doFilter方法,当开辟职员编写好Filter,并安顿对哪些web财富扩充阻拦后,WEB服务器每便在调用web能源的service方法从前,都会先调用一下filter的doFilter方法,由此,在该措施内编写制定代码可直达如下指标:
        • 调用目的能源前,让一段代码先实施
        • 是还是不是调用目的财富(正是不是让顾客访谈web能源)
          • web服务器在调用doFilter方法时,会传递贰个filterChain对象进来,filterChain对象是filter接口中最要紧的一个目的,它也提供了一个doFilter方法,开辟职员能够依照需要决定是不是调用此方式,调用该方法,则web服务器就能调用web财富的service方法,即web财富就能够被访谈,不然web能源不会被访问。
        • 调用指标能源之后,让一段代码试行
    • 为何需用到过滤器 : 项目支出中,平常会涉嫌到再次代码的贯彻!

    • 过滤器,设计推行流程:(OOAD : 面向对象的深入分析与统一盘算 - 时序图)

      1. 客户访谈服务器
      2. 过滤器: 对Servlet央浼进行拦截
      3. 先步入过滤器, 过滤器管理
      4. 过滤器管理完后, 在放行, 此时,伏乞达到Servlet/JSP
      5. Servlet处理
      6. Servlet管理完后,再回到过滤器, 最后在由tomcat服务器相应客商;
    • 付出步骤 :

      • 写一个平常java类,完结Filter接口
      • 安排过滤器
  • 过滤器相关Api

    • interface Filter : 过滤器核心接口
      1. Void init(filterConfig); : 最早化方法,在服务器运维时候实践
      2. Void doFilter(request,response,filterChain); : 过滤器拦截的作业处理形式
      3. Void destroy(); : 销毁过滤器实例时候调用
    • interface FilterConfig : 获取伊始化参数消息
    • interface FilterChain : 过滤器链参数;二个个过滤器变成一个施行链;
      1. void doFilter(ServletRequest request, ServletResponse response); : 施行下四个过滤器或放行
package cn.itcast.a_filter_hello;import java.io.IOException;import java.util.Enumeration;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;// 过滤器,测试@author Jie.Yuanpublic class HelloFilter implements Filter{ // 创建实例 public HelloFilter(){ System.out.println("1. 创建过滤器实例"); } @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("2. 执行过滤器初始化方法"); // 获取过滤器在web.xml中配置的初始化参数 String encoding = filterConfig.getInitParameter("encoding"); System.out.println; // 获取过滤器在web.xml中配置的初始化参数 的名称 Enumeration<String> enums = filterConfig.getInitParameterNames(); while (enums.hasMoreElements{ // 获取所有参数名称:encoding、path String name = enums.nextElement(); // 获取名称对应的值 String value = filterConfig.getInitParameter; System.out.println(name + "t" + value); } } // 过滤器业务处理方法: 在请求到达servlet之前先进入此方法处理公用的业务逻辑操作 @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("3. 执行过滤器业务处理方法"); // 放行 (去到Servlet) // 如果有下一个过滤器,进入下一个过滤器,否则就执行访问servlet chain.doFilter(request, response); System.out.println("5. Servlet处理完成,又回到过滤器"); } @Override public void destroy() { System.out.println("6. 销毁过滤器实例"); }}
  • 对点名的乞求拦截
    • 默许拦截的门类:(直接待上访谈仍然重定向 <dispatcher>REQUEST</dispatcher>
    • 阻碍转载 : <dispatcher>FORWARD</dispatcher>
    • 截留包罗的页面(RequestDispatcher.include(/page.jsp); 对page.jsp也施行拦截<dispatcher>INCLUDE</dispatcher>
    • 阻止评释式非凡音讯 : <dispatcher>ERROR</dispatcher>
  • 共性难题:

    1. 过滤器 : 方法参数没有自动命名,表达未有关联源码-> 关联tomcat或servlet源代码
    2. 连天池 : 多刷新几回,报错!
      1. 连年没关 :QueryRunner qr = new QueryRunner();qr.update;// 这里con一定要关门
      2. 留意:dataSource 鲜明八个门类开创二遍 : QueryRunner qr = new QueryRunner(dataSource);3.改变连接池参数配置
    3. 编码
    • request.setCharacterEncoding; // 设置POST提交的乞请的编码
    • response.setCharacterEncoding; // 设置相应体的编码
    • response.setContentType("text/html;charset=UTF-8"); // 设置页面张开时候时候的编码格式、 设置相应体的编码
    1. 开拓中 : 职业区间编码、项目编码、request/response、数据库编码一致
  • 过滤器-编码统一管理
    • 差了一些每二个Servlet都要提到编码管理:处理央求数据中文标题![GET/POST]
    • 种种servlet都要做那么些操作,把公用的代码抽取-过滤器达成!
    • 代码完毕思路:
      • Login.jsp : 登陆,输入“中文”
      • LoginServlet.java : 直接处理登入央求
      • EncodingFilter.java : 过滤器管理央浼数据编码:GET/POST
// 过滤器 : 编码处理统一写到这里(servlet中不需要再处理编码)public class EncodingFilter implements Filter { // 过滤器业务处理方法:处理的公用的业务逻辑操作 @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 转型 final HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 一、处理公用业务 request.setCharacterEncoding; // POST提交有效 response.setContentType("text/html;charset=UTF-8"); /* * 出现GET中文乱码,是因为在request.getParameter方法内部没有进行提交方式判断并处理。 * String name = request.getParameter("userName"); * * 解决:对指定接口的某一个方法进行功能扩展,可以使用代理! * 对request对象,创建代理对象! */ HttpServletRequest proxy = (HttpServletRequest) Proxy.newProxyInstance( request.getClass().getClassLoader(), // 指定当前使用的累加载器 new Class[]{HttpServletRequest.class}, // 对目标对象实现的接口类型 new InvocationHandler() { // 事件处理器 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // 定义方法返回值 Object returnValue = null; // 获取方法名 String methodName = method.getName(); // 判断:对getParameter方法进行GET提交中文处理 if ("getParameter".equals(methodName)) { // 获取请求数据值【 <input type="text" name="userName">】 String value = request.getParameter(args[0].toString; // 调用目标对象的方法 // 获取提交方式 String methodSubmit = request.getMethod(); // 直接调用目标对象的方法 // 判断如果是GET提交,需要对数据进行处理 (POST提交已经处理过了) if ("GET".equals(methodSubmit)) { if (value != null && !"".equals(value.trim{ // 处理GET中文 value = new String(value.getBytes("ISO8859-1"),"UTF-8"); } } return value; }else { // 执行request对象的其他方法 returnValue = method.invoke(request, args); } return returnValue; }}); // 二、放行 (执行下一个过滤器或者servlet) chain.doFilter(proxy, response); // 传入代理对象 } @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { }}

过滤器配置:<!-- 编码处理过滤器配置 --> <filter> <filter-name>encoding</filter-name> <filter-class>cn.itcast.a_loginFilter.EncodingFilter</filter-class> </filter> <filter-mapping> <filter-name>encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

public class LoginServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求数据 String name = request.getParameter("userName"); System.out.println("用户:" + name); }
  • 过滤器-无效数据过滤

    • 模仿:论坛过滤敏感词汇!
    • 落到实处思路:
      • Dis.jsp : 商量区页面
      • DisServlet.java : 管理提交
        • 获得乞请参数
        • 保存到request域
        • 跳转dis.jsp 【从request取数据显示
      • DataFilter.java : 过滤器
        • 编码
        • 不算数据管理即: 在上一个案例基础上,再添加无效数据过滤的相关代码!
  • JSP引进ckeditor组件:客户端组件,便于顾客输入内容!

    • jsp :
<!-- 引入ckeditor组件(给用户输入提供方便) --> <script src="${pageContext.request.contextPath }/ckeditor/ckeditor.js"></script> <link rel="stylesheet" href="${pageContext.request.contextPath }/ckeditor/samples/sample.css"><body> ${requestScope.content } <form name="frmDis" action="${pageContext.request.contextPath }/dis" method="post"> 发表评论: <textarea rows="6" cols="30" name="content"></textarea> <br/> <input type="submit" value="评论" > </form> </body>
  • Filter:
// 在上个过滤器案例的基础上,增加如下代码:// 中文数据已经处理完: 下面进行无效数据过滤 //【如何value中出现dirtyData中数据,用****替换】 for (String data : dirtyData) {// 判断当前输入数据, 是否包含无效数据 if (value.contains{ value = value.replace(data, "*****"); }}
  • 登陆权限判定

  • 登入, 提交到登录Servlet管理其业务!

    • 登入成功, 跳转到首页,呈现招待音讯 + 列表音讯
    • 登录退步,跳转到登录!
  • 要求:

    • 独有登录后,才方可访谈首页, 显示列表
    • 只要未有登录,直接待上访谈首页列表,要跳转到登入!
  • 福衢寿车思路:

    • Login.jsp : 登录页面
    • List.jsp : 列表展现
    • LoginServlet.java : 登录管理servlet
    • IndexServlet.java : 首页列表查询Servlet
    • LoginFilter.java : 登入验证过滤器(用事先的表 : admin存款和储蓄登录客户, 登录用employee 存储职员和工人音信,列表突显用!)
  • 落到实处步骤:

    1. 建库、建表、建项目、引入jar文件
    2. entity
    • Admin.java
    • Employee.java
    1. Dao
    • AdminDao
    • EmployeeDao
    1. Servcie
    2. Servlet
  • 留心 : 网址访谈

    • 能够平昔访问
    • 能够一贯访问
    • 无法一贯访谈
    • 无法平昔访问

本文由凤凰平台注册开户发布于编程知识,转载请注明出处:过滤器监听器总括,一些名词概念

关键词:

上一篇:过滤器监听器总括,一些名词概念
下一篇:没有了