96SEO 2026-02-20 08:02 0
拦截器是SpringMVC中一种对象能够拦截器对Controller的请求

第一步创建一个类实现SpringMVC框架的HandlerInterceptor接口重写方法。
HandlerInterceptor接口源码中有三个默认方法常用的是preHandle方法中进行拦截
org.springframework.web.servlet;import
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
org.springframework.lang.Nullable;public
afterCompletion(HttpServletRequest
}编写LoginInterceptor类实现HandlerInterceptor接口并重写preHandler方法
org.springframework.web.servlet.HandlerInterceptor;import
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;//
boolean,true:表示请求能被Controller处理false:表示被截断*
handler是被拦截的控制器对象System.out.println(请求拦截器执行了);return
mvc:interceptorsmvc:interceptormvc:pathurl
class拦截器类全限定名称//mvc:interceptor
1使用类注解的方式编写一个类实现WebMvcConfigurer接口这个接口很重要很多与SpringMVC有关的功能都在这并添加Configuration注解关于SpringMVC有关的功能都在WebMvcConfigurer接口中实现了
2重写addInterceptors方法在方法中添加拦截器对象注入到容器当中然后在调用addPathPatterns添加拦截的请求再调用excludePathPatterns排除拦截的请求。
org.springframework.context.annotation.Configuration;
org.springframework.web.servlet.HandlerInterceptor;
org.springframework.web.servlet.config.annotation.InterceptorRegistry;
org.springframework.web.servlet.config.annotation.WebMvcConfigurer;Configuration
addInterceptors(InterceptorRegistry
调用excludePathPatterns方法表示通过的请求registry.addInterceptor(interceptor).addPathPatterns(/user/**).excludePathPatterns(/user/login);}
org.springframework.stereotype.Controller;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.ResponseBody;Controller
访问user/account地址;}RequestMapping(/user/login)ResponseBodypublic
重写doGet和doPost方法并且在doGet中调用doPost方法这样不论发过来post请求还是get请求都没有问题
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
调用doPost方法doPost(request,response);}Overrideprotected
使用HttpServletResponse输出数据应答结果response.setContentType(text/html;charsetUTF-8);PrintWriter
response.getWriter();out.println(执行的是Servlet);out.flush();out.close();}
2首先写一个类类名随意加上Configuration注解表示这个类是配置信息的类再类中编写一个servletRegistrationBean()方法返回值是ServletRegistrationBean对象
3添加上Bean注解。
Bean用于将对象存入spring的ioc容器中同controller、Service、Component、Configuration、Repository等几个注解是一样的都是负责将对象存入容器当中。
只不过方式不同四个注解它们是用在类上面的然后将当前类通过无参构造函数创建对象然后放入容器而Bean是用在方法上将当前方法的返回值对象放到容器当中可以理解为前者是由spring自动创建对象而Bean创建对象是交给我们自己来控制。
org.springframework.boot.web.servlet.ServletRegistrationBean;
org.springframework.context.annotation.Bean;
org.springframework.context.annotation.Configuration;import
javax.servlet.http.HttpServlet;Configuration
把ServletRegistrationBean对象放到容器当中public
创建ServletRegistrationBean对象有两个参数//
一个参数是servlet一个参数是url地址HttpServlet
MyServlet();ServletRegistrationBean
ServletRegistrationBean(servlet,/myservlet);return
}当然也可以使用无参数构造方法调用引用.set方法进行赋值对于路径也可以赋多个
bean.addUrlMappings(/login,/test);
Filter是Servlet规范中的过滤器可以处理请求、对请求的参数、属性进行调整
1过滤器是用来过滤request或者response参数的比如增加一些乱码侧重于对数据的过滤
创建MyFilter类实现Filter接口重写doFilter方法进行处理处理好以后调用filterChain参数的doFilter方法把请求传递出去继续进行下一步操作。
处理字符集编码response.setContentType(text/html;charsetUTF-8);System.out.println(Filter过滤器执行了);//
把请求转发出去filterChain.doFilter(request,response);}
写一个配置类类名随意加上Configuration注解表示这个类是配置信息的类再类中编写一个filterRegistrationBean()方法返回值是FilterRegistrationBean对象并在方法上加上Bean注解把返回的对象交给Spring容器管理。
org.springframework.boot.web.servlet.FilterRegistrationBean;
org.springframework.context.annotation.Bean;
org.springframework.context.annotation.Configuration;import
javax.servlet.FilterRegistration;Configuration
调用无参数构造方法FilterRegistrationBean
FilterRegistrationBean();bean.setFilter(new
指定过滤器对象bean.addUrlPatterns(/user/*);
org.springframework.stereotype.Controller;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.ResponseBody;Controller
{RequestMapping(/user/account)ResponseBodypublic
CharacterEncodingFilter解决post请求中乱码的问题在SpringMVC框架
javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
{doPost(request,response);}Overrideprotected
{response.setContentType(text/html);PrintWriter
response.getWriter();out.println(在Servlet中使用中文);out.flush();out.close();}
org.springframework.boot.web.servlet.ServletRegistrationBean;
org.springframework.context.annotation.Bean;
org.springframework.stereotype.Controller;Controller
servletRegistrationBean(){MyServlet
MyServlet();ServletRegistrationBean
ServletRegistrationBean(myServlet,
org.springframework.boot.web.servlet.FilterRegistrationBean;
org.springframework.boot.web.servlet.ServletRegistrationBean;
org.springframework.context.annotation.Bean;
org.springframework.stereotype.Controller;
org.springframework.web.filter.CharacterEncodingFilter;Controller
servletRegistrationBean(){MyServlet
MyServlet();ServletRegistrationBean
ServletRegistrationBean(myServlet,
filterRegistrationBean(){FilterRegistrationBean
使用框架中的字符过滤器CharacterEncodingFilter
指定使用的编码方式filter.setEncoding(UTF-8);//
指定requestresponse使用encoding的值filter.setForceEncoding(true);//
给filter设置参数bean.setFilter(filter);bean.addUrlPatterns(/*);
1SpringBoot中默认已经配置启用了CharacterEncodingFilter编码默认ISO-8859-1
server.servlet.encoding.enabledfalse
注实际上SpringBoot已经把字符编码的过滤器自动纳入容器管理了通过源码分析可以发现这个配置与配置文件application.properties中的server.servlet.encoding配置进行了绑定。
org.springframework.boot.autoconfigure.web.servlet;import
org.springframework.boot.autoconfigure.AutoConfiguration;
org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
org.springframework.boot.autoconfigure.web.ServerProperties;
org.springframework.boot.context.properties.EnableConfigurationProperties;
org.springframework.boot.web.server.WebServerFactoryCustomizer;
org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter;
org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
org.springframework.boot.web.servlet.server.Encoding;
org.springframework.context.annotation.Bean;
org.springframework.core.Ordered;
org.springframework.web.filter.CharacterEncodingFilter;AutoConfiguration
EnableConfigurationProperties({ServerProperties.class})
ConditionalOnWebApplication(type
ConditionalOnClass({CharacterEncodingFilter.class})
HttpEncodingAutoConfiguration(ServerProperties
properties.getServlet().getEncoding();}//
自动装入了容器中去BeanConditionalOnMissingBeanpublic
OrderedCharacterEncodingFilter();filter.setEncoding(this.properties.getCharset().name());filter.setForceRequestEncoding(this.properties.shouldForce(org.springframework.boot.web.servlet.server.Encoding.Type.REQUEST));filter.setForceResponseEncoding(this.properties.shouldForce(org.springframework.boot.web.servlet.server.Encoding.Type.RESPONSE));return
LocaleCharsetMappingsCustomizer
localeCharsetMappingsCustomizer()
LocaleCharsetMappingsCustomizer(this.properties);}static
LocaleCharsetMappingsCustomizer
WebServerFactoryCustomizerConfigurableServletWebServerFactory,
properties;LocaleCharsetMappingsCustomizer(Encoding
customize(ConfigurableServletWebServerFactory
{factory.setLocaleCharsetMappings(this.properties.getMapping());}}public
}直接修改application.properties文件进行更改
第一种方式使用的是自己定义的过滤器然后让系统的关闭让自己的生效比较麻烦
第二种方式就是用系统已经配置好的我们直接修改内部参数的编码方式即可
#让系统的CharacterEncdoingFilter生效默认就是开启的不写也行
server.servlet.encoding.enabledtrue
server.servlet.encoding.charsetutf-8
#直接强制requestresponse都使用charset属性的值
server.servlet.encoding.forcetrue
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback