关于characterencodingfilter的信息

http://www.itjxue.com  2023-01-07 08:18  来源:未知  点击次数: 

使用springboot怎么添加一个filter过滤器

在实际的web应用程序中,经常需要在请求(request)外面增加包装用于:记录调用日志、排除有XSS威胁的字符、执行权限验证等等。除了上述提到的之外,Spring Boot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们在自己的项目中还可以增加别的过滤器。

Spring Boot、Spring Web和Spring MVC等其他框架,都提供了很多servlet 过滤器可使用,我们需要在配置文件中定义这些过滤器为bean对象。现在假设我们的应用程序运行在一台负载均衡代理服务器后方,因此需要将代理服务器发来的请求包含的IP地址转换成真正的用户IP。Tomcat 8 提供了对应的过滤器:RemoteIpFilter。通过将RemoteFilter这个过滤器加入过滤器调用链即可使用它。

How Do

一般在写简单的例子时,不需要单独定义配置文件,只需要将对应的bean对象定义在Application类中即可。正式的项目中一般会有单独的web配置文件,我们在项目的com.test.bookpub(与BookpubApplication.java同级)下建立WebConfiguration.java文件,并用@Configuration注解修饰。

package com.test.bookpub;

import org.apache.catalina.filters.RemoteIpFilter;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class WebApplication {

@Bean

public RemoteIpFilter remoteIpFilter() {

return new RemoteIpFilter();

}

}

通过mvn spring-boot:run启动项目,可以在终端中看到如下的输出信息,证明RemoteIPFilter已经添加成功。

RemoteIPFilter

分析

项目的主类——BookPubApplication,可以看到由@SpringBootApplication注解修饰,这包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。在Spring Boot的自动配置、Command-line Runner一文中曾对这个三个注解做详细解释,@ComponentScan让Spring Boot扫描到WebConfiguration类并把它加入到程序上下文中,因此,我们在WebApplication中定义的Bean就跟在BookPubApplication中定义一样。

方法@Bean public RemoteIpFilter remoteIpFilter() { ... }返回一个RemoteIPFilter类的spring bean。当Spring Boot监测到有javax.servlet.Filter的bean时就会自动加入过滤器调用链。从上图中还可以看到,该Spring Boot项目一次加入了这几个过滤器:characterEncodingFilter(用于处理编码问题)、hiddenHttpMethodFilter(隐藏HTTP函数)、httpPutFormContentFilter、requestContextFilter(请求上下文),以及我们刚才自定义的RemoteIPFilter。

网页发生错误

建议

①关闭过多的IE窗口。如果在运行需占大量内存的程序,建议IE窗口打开数不要超过5个。

②降低IE安全级别。执行“工具→Internet选项”菜单,选择“安全”选项卡,单击“默认级别”按钮,拖动滑块降低默认的安全级别。

③将IE升级到最新版本。IE 6.0 SP1下载地址:download.microsoft.com。

可使用以IE为核心的浏览器,如MyIE2。它占用系统资源相对要少,

出现严重: Exception starting filter CharacterEncodingFilter java.lang.ClassNotFoundException:

根据提示,是CharacterEncodingFilter这个类没有找到。

这个类配置在web.xml中,用来处理post请求中文乱码问题。

既然是这个类没有找到,那么导入这个类所在的jar包应该可以解决问题,这个类在spring-web.jar中

org.springframework.web.filter.characterencodingfilter在哪个jar

web.xml中配置

!--?3.5*_*?filter:表单提交过滤器?--

filter

filter-nameencodingFilter/filter-name

filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class

init-param

param-nameencoding/param-name

param-valueUTF-8/param-value

/init-param

init-param

param-nameForceEncoding/param-name

param-valuetrue/param-value

/init-param

/filter

filter-mapping

filter-nameencodingFilter/filter-name

url-pattern/*/url-pattern

/filter-mapping

需导入以下4个Jar包

spring-web-4.3.9.RELEASE.jar

spring-beans-4.3.9.RELEASE.jar

spring-context-4.3.9.RELEASE.jar

spring-core-4.3.9.RELEASE.jar

org.springframework.web.filter.CharacterEncodingFilter 我的配置有问题

你是不是连接的mysql ,如果是那就在连接字符串那里家两个属性如:jdbc:mysql://localhost/digitgulf?user=rootpassword=rootuseUnicode=truecharacterEncoding=GB2312

java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter

少了一个包啊

你的SPRING框架里面少了一个WEB。FILTER。CHARACTERENCODINGFILTER

两个解决办法,一个是手动加把这个包加进来

另一个再那一个项目,把那个项目中的SPRING里的包全部复制过来

(责任编辑:IT教学网)

更多

推荐其它系统文章