文档章节

jsp---->过滤器

小强斋太
 小强斋太
发布于 2016/11/09 20:07
字数 530
阅读 3
收藏 0
点赞 0
评论 0

过滤器

Servlet 程序的主要分类?
· 标准 Servlet(JSP) —— MVC
· 过滤 Servlet(过滤器)
· 监听 Servlet(监听器)

                                                                                                                                                                                        

一、如何实现一个过滤器呢?
1、所在的类实现Filter 接口
public interface Filter
public void init(FilterConfig filterConfig)throws ServletException
过滤器初始化是在容器启动时自动初始化
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)throws  IOException,ServletException
在标准 Servlet 中的doGet 或doPost 方法中,传递的参数为:HttpServletRequest、HttpServletResponse
public void destroy()

2、如果过滤器要将内容传递到目的地,则需要 FilterChain,将请求继续向下转发
public void doFilter(ServletRequest request,ServletResponse response)throws IOException,ServletException

例子:
1、对用户是否登陆进行过滤(之前是在每个JSP 页面之中判断session)

package cn.filter ;
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
public class LoginFilter implements Filter
{
public void init(FilterConfig filterConfig)
throws ServletException
{
// System.out.println("** 过滤器初始化...") ;
}
public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
throws IOException,
ServletException
{
// Session 属于HTTP 范畴,所以ServletRequest 对象需要先转换成HttpServletRequest 对象
HttpServletRequest req = (HttpServletRequest)request ;
HttpSession session = req.getSession() ;
// 如果session 不为空,则可以浏览其他页面
if(session.getAttribute("uname")!=null)
{
chain.doFilter(request,response) ;
}
else
{
// 通过requestDispatcher 跳转到登陆页
request.getRequestDispatcher("login.jsp").forward(request,response) ;
}
}
public void destroy()
{
// System.out.println("** 过滤器销毁...") ;
}
};
/*
<filter>
<filter-name>login</filter-name>
<filter-class>cn.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>login</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/

2、网上聊天系统,屏蔽非法文字

package cn.filter ;
import java.io.* ;
import javax.servlet.* ;
public class CharFilter implements Filter
{
public void init(FilterConfig filterConfig)
throws ServletException
{
// System.out.println("** 过滤器初始化...") ;
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
{
String content = request.getParameter("content") ;
// 如果indexOf 返回-1 则表示没有查到所要的内容
if(content!=null)
{
if(content.indexOf("AAA")==-1)
{
chain.doFilter(request,response) ;
}
else
{
System.out.println("有非法文字") ;
// 如果需要的话,此处依然可以使用RequestDispatcher 进行跳转
}
}
else
{
chain.doFilter(request,response) ;
}
}
public void destroy()
{
// System.out.println("** 过滤器销毁...") ;
}
};
/*
<filter>
<filter-name>char</filter-name>
<filter-class>cn.filter.CharFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>char</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/

3、对请求内容进行统一编码setCharacterEncoding("GB2312") ;

package cn.filter ;
import java.io.* ;
import javax.servlet.* ;
public class EncodingFilter implements Filter
{
public void init(FilterConfig filterConfig)
throws ServletException
{
// System.out.println("** 过滤器初始化...") ;
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
{
try
{
request.setCharacterEncoding("GB2312") ;
}
catch (Exception e)
{
}
chain.doFilter(request,response) ;
}
public void destroy()
{
// System.out.println("** 过滤器销毁...") ;
}
};
/*
<filter>
<filter-name>encoding</filter-name>
<filter-class>cn.filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
*/
 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/08/17/5637241.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
javaweb开发之Filter

一、简介 在Servlet2.3规范中定义了过滤器,它对servlet容器调用servlet的过程进行拦截,从而在servlet进行响应处理的前后实现一些特殊的功能。 过滤器实现了一个责任链的模式。多个过滤器形...

小米米儿小
2013/12/06
0
0
过滤器(Fileter)执行流程

Servlet过滤器的概念: Servlet过滤器是在 java Servlet 2.3 中定义的,它能够对Servlet容器中的请求和响应对象,进行检查和修改 Servlet过滤器并不会生成request和response对象,它只起到过...

狼行-狼行
2013/11/22
0
0
Servlet 3.0 新特性概述

Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入...

张超
2012/12/22
0
0
Servlet 3.0 新特性概述

Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部...

巴顿
2013/11/19
0
2
J2EE核心技术之Servlet详解

想必大家都知道J2EE核心技术是什么~~ 1.JSP (大多用于MVC中的是图层) 2.Servlet(大多用于MVC中的控制层) 3.JDBC(大多用于MVC的模型层) 那么我从中间给大家开始讲讲,什么是Servlet: ...

JavaOlder
2012/12/10
0
0
web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF
04/27
0
0
学习学习servlet过滤器(javax.servlet.Filter)

学习学习servlet过滤器(javax.servlet.Filter) 一、过滤器 Servlet过滤器Fileter是一个小型的web组件,它们通过拦截请求和响应,以便查看、提取或以某种方式操作客户端和服务器之间交换的数...

Qiu_CJ
07/13
0
0
Servlet 3.0 新特性

Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入...

壹炮倾城
2013/06/13
0
1
关于Java Servlet的中文乱码

具体如下: 1.JSP里CHARSET要为GB2312 contentType="text/html;charset=GB2312" 2.SERVERLET类里要有 request.setCharacterEncoding(gb2312); 3.字符集的重新格式化 java.net.URLEncoder ja......

xiahuawuyu
2012/08/02
0
0
servlet/filter/listener/interceptor区别与联系

由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现 为什么struts1要用servlet,而struts2要用filter呢...

lzw_me
2014/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

eclipse SVN 项目重新定位

SVN 重新定位 1.方法一 首先:在Eclipse中选择Windows-> Show View->others 就会出现【SVN资源库/SVN Repositories】,选中后,点击确认; 然后:选中原有的地址,选择【重新定位/Relocate】...

qimh
12分钟前
0
0
Linux 第29课 ——Linux集群架构(下)

Linux集群架构(下) 八、DR模式搭建 8.1 准备工作 试验需求三台机器: 分发器,也叫调度器(简写为dir) 192.168.112.136 ying01 rs1 192.168.112.138 ying02 rs2 192.168.112.139 ying03 vip...

feng-01
17分钟前
0
0
轻松搭建svn版本管理工具+svnmanager管理客户端

前面的文章有写过svn版本管理工具的安装是基于svn的安装包进行安装,对于svn与apache的结合还得下svn和apache的模块进行结合过程比较繁琐,今天来介绍下通过centos的yum来安装svn能够快速安装...

javazyw
26分钟前
0
0
keepalived配置高可用集群

Linux集群概述 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:...

TaoXu
31分钟前
0
0
mysql联表批处理操作

1 概述 mysql中的单表增删改查操作,可以说是基本中的基本. 实际工作中,常常会遇到一些基本用法难以处理的数据操作,譬如遇到主从表甚至多级关联表的情况(如一些历史问题数据的批量处理),考虑到...

社哥
34分钟前
0
0
IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
49分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
51分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
51分钟前
1
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
53分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
55分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部