首页 > 编程知识 正文

java过滤器实例,js filter 过滤器

时间:2023-05-05 15:27:49 阅读:41843 作者:3458

整理今天说明的java过滤器的使用

request.setcharacterencoding (utf-8 );

response.set content type (' text/html; charset=utf-8 ';

这是在servlet中设置字符编码的代码,但通常有多个servlet,因此必须在每个servlet中编写以上代码。 这样做不仅麻烦,而且容易混淆。

因此,在这些servlet上运行相同的代码时,通常可以使用过滤器来完成操作:

滤波器:

要使用过滤器,必须首先实现Filter类,然后重写三个所需的方法:

导入javax.servlet.*;

import javax.servlet.annotation.web过滤器;

import java.io.IOException;

@ web过滤器(filtername=' test filter2',urlPatterns='/* ' )

publicclasstestfilter 2实施过滤器{

公共语音目录

}

publicvoiddofilter (servletrequestreq,ServletResponse resp,过滤器通道) throws ServletException,IOException {

chain.do滤波器(req,resp );

}

公共语音输入(filterconfigconfig ) throws ServletException { )。

}

}

创建当前过滤器时将自动调用init方法:容器。

销毁当前过滤器时将自动调用destroy方法:容器

doFilter方法:过滤器的主要代码写在此处

1 @ web过滤器(filtername=' test filter2',urlPatterns='/* ' )

此行的代码意味着添加注释,不需要使用此行的代码在web.xml中注册

其中,filterName表示此过滤器的名称,后面的urlPatterns表示过滤器的路径/*表示所有路径,这意味着在访问所有路径时首先访问此过滤器

chain.do滤波器(req,resp );

此代码行意味着在存在其他过滤器时调用其他过滤器,但请注意,此代码行必须写在doFilter方法的末尾

1 publicvoiddofilter (servletrequestreq,ServletResponse resp,过滤器通道) throws ServletException,IOException {

2 //这在执行各servlet时先进行

3 http servlet请求=(http servlet请求) req;

4 http servlet响应=(http servlet响应) resp;

5

6 request.setcharacterencoding (utf-8 );

7 response.set content type (' text/html; charset=utf-8 ';

8

9 //因为可能不仅仅是这一个过滤器,所以需要运行所有过滤器

10 //这一行的代码一定要写到底

11chain.dofilter(req,resp );

12 }

其中,3-7行代码是设定代码

从doFilter传递的默认值是ServletRequest对象,设置字符集的是HttpServetRequest,必须强制转换

转换后,我们可以进行设定。

附上我另一个测试过滤器的代码:

1导入javax.servlet.*;

2 import javax.servlet.annotation.web过滤器;

3导入javax.servlet.http.http servlet请求;

4导入javax.servlet.http.httpservletrequestwrapper;

5导入javax.servlet.http.http servlet响应;

6 import java.io.IOException;

7导入Java.io.unsupportedencodingexception;

8

9 /**

10 * urlPatterns意味着必须过滤这些路径。 其中*表示所有路径都必须进入此过滤器

11 */

12 @ web过滤器(filtername=' test filter ',urlPatterns='/* ' )

13 publicclasstestfilterimplementsfilter {

14公共语音目录(

15 }

16

17 /**

18 *此处编写的代码在运行servlet JSP等之前执行

19 */

20 publicvoiddofilter (servletrequestreq,ServletResponse resp,FilterChain chain ) throws ServletException,IOException {

21 //这在执行各servlet时先进行

22 http servlet请求=(http servlet请求) req;

23 http servlet响应=(http servlet响应) resp;

24

25 request.setcharacterencoding (utf-8 );

26 response.set content type (' text/html; charset=utf-8 ';

27

28 //可能不仅仅是这一个过滤器,所以需要运行所有过滤器

29 //这一行的代码一定要写到底

30chain.dofilter(req,resp );

31 }

32

33公共void init (过滤器配置) throws ServletException {

34

35 }

36

通过改写37//getparameter方法,实现get方法的自动转码

38 classmywrapperextendshttpservletrequestwrapper {

39隐私保护策略;

40 publicmywrapper (httpservletrequestrequest ) {

41 super (请求;

42 this.request=request;

43 }

44

45 @Override

46公共字符串获取参数(字符串名称) {

47 string value=this.request.getparameter (name;

48if(value==null ) {

49返回空值;

50 }

51

52//get方法提交时

53if(this.request.getmethod ).equalsignorecase('get ' ) {

54特里{

55 //进行转码

56 value=new string (value.getbytes (iso-8859-1 )、utf-8 ) );

57 ) catch (不支持编码封装) {

58 e .打印堆栈跟踪(;

59 }

60 }

61

62 //屏蔽尖括号

63 value=value.replace (','');

64 value=value.replace ('

65

66返回值;

67 }

68 }

69 }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。