spring mvc-springmvc拦截器拦截可以处理非法字符吗?

问题描述

springmvc拦截器拦截可以处理非法字符吗?

我拦截请求,并对请求的参数做了过滤 如图:

然后到了controller里面 参数并没有改变 ,请问是我解决方法的问题吗?这种方法行的通吗?还是少了些东西?谢谢大神

解决方案

你这个拦截器有没有配置呢,调试下这个拦截器的代码有没有执行呢?

解决方案二:

你的拦截器进去了没啊?参考 http://examples.javacodegeeks.com/enterprise-java/spring/mvc/spring-mvc-handler-interceptors-example/

解决方案三:

我确定拦截器在controller之前已经进去了

解决方案四:

建议在HttpServletRequestWrapper https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServletRequestWrapper.html 中处理

http://stackoverflow.com/questions/27504696/how-to-change-the-posted-values-with-a-spring-mvc-interceptor

 I answer my own question. In fact it is rather complex and it took me some time to find a working solution. First, I created a filter in a Spring configuration class (Spring Boot environment exactly) :

@Configuration
@ComponentScan({ "istia.st.springmvc.config", "istia.st.springmvc.controllers", "istia.st.springmvc.models" })
@EnableAutoConfiguration
public class Config extends WebMvcConfigurerAdapter {
    @Bean
    public Filter cultureFilter() {
        return new CultureFilter();
    }

}
Here we declare a filter that will (by default) filter every request before it attains the final handler. Then I created the filter :

public class CultureFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
            throws ServletException, IOException {
        // next handler
        filterChain.doFilter(new CultureRequestWrapper(request), response);
    }
}
[OncePerRequestFilter] is a Spring class. The trick is to replace the actual request with a new one [CultureRequestWrapper(request)]. Then I created the CultureRequestWrapper :

public class CultureRequestWrapper extends HttpServletRequestWrapper {

    public CultureRequestWrapper(HttpServletRequest request) {
        super(request);
    }

    @Override
    public String[] getParameterValues(String name) {
        // posted values a et b
        if (name != null && (name.equals("a") || name.equals("b"))) {
            String[] values = super.getParameterValues(name);
            String[] newValues = values.clone();
            newValues[0] = newValues[0].replace(",", ".");
            return newValues;
        }
        // other cases
        return super.getParameterValues(name);
    }

}
I redefined the [getParameterValues] of [HttpServletRequest] but it depends on the final servlet that will manage the request. We have to redefine the [HttpServletRequest] methods used by this servlet.

解决方案五:

应该 用 OncePerRequestFilter 过滤在 http://blog.csdn.net/geloin/article/details/7445441

解决方案六:

spring 拦截去可以修改request 内容吗?

时间: 2024-10-02 22:49:44

spring mvc-springmvc拦截器拦截可以处理非法字符吗?的相关文章

path-spring Mvc 拦截器拦截不成功

问题描述 spring Mvc 拦截器拦截不成功 拦截不成功,各位大神帮忙看下配置有没错.这样配置可不可以拦截 解决方案 你这样太麻烦了,用springMVC的统一拦截器,然后在controller层中加注解就行了 过程如下:http://blog.csdn.net/evankaka/article/details/45501811 解决方案二: spring MVC - Inteceptors(拦截器)spring MVC - Inteceptors(拦截器) 解决方案三: ,用springM

struts2整合spring3后,指定spring管理action之后,配置的struts2的拦截器,拦截不到东西

问题描述 struts2整合spring3后,指定spring管理action之后,配置的struts2的拦截器,拦截不到东西 struts2整合spring3后,指定spring管理action之后,配置的struts2的拦截器,拦截不到东西,这是什么原因??? Struts2的Action可以交给Spring管理,但Struts2的拦截器就拦截到不到请求了,望高手帮忙! 解决方案 我也遇到同样的问题 不整合的时候struts什么都能拦,整合后就拦不了了

package-ssh的struts2拦截器拦截请求后页面为什么没有跳转

问题描述 ssh的struts2拦截器拦截请求后页面为什么没有跳转 我在struts.xml里把拦截器添加到了新的拦截器栈,命名了一个package名,然后我在一个子的struts-action-index.xml里继承了这个package做登录验证,并且程序执行时已经进入了拦截器类,并且执行完了类里的代码,返回了Action.Login,为什么通过全局返回处理页面没有跳转到登录页面 <package name=""struts-default-json""

interceptor-struts2 拦截器拦截了发往action的response和request

问题描述 struts2 拦截器拦截了发往action的response和request 我的项目使用了struts2框架,想用拦截器做权限管理.代码如下: @Action(value=""addKnifeTool""interceptorRefs=@InterceptorRef(""adminInterceptor"")) public void addKnifeTool() throws IOException{ resp

Spring Mvc 公共Controller 使用拦截器注入请求信息

在Spring Mvc 中我们在Controller 中要想使用 HttpServletRequest HttpSession HttpServletResponse 等请求信息,这些信息有多种方式,这里就重点说下我使用的拦截器注入方式 方式一:(使用注解) /** * 每一个Control 被执行时 * * @author jiangzeyin * @date 2016-8-11 * * @param request * @param response * @param session * @

Spring MVC视图解析器:配置多个视图解析器的优先级

问题 在Spring MVC应用程序中,我们经常需要应用一些视图解析器策略来解析视图名称.例如,联合使用三个视图解析器:InternalResourceViewResolver.ResourceBundleViewResolver和XmlViewResolver. 但是,如果返回了一个视图的名称,那么,使用哪一个视图解析器策略? 解决方法 如果应用了多个视图解析器策略,那么就必须通过"order"属性来声明优先级,order值越低,则优先级越高.例如: 1 2 3 4 5 6 7 8

Spring MVC视图解析器:Spring MVC ResourceBundleViewResolver示例

在Spring MVC中,使用ResourceBundleViewResolver基于".properties"文件中的视图bean来解析"视图名称". 默认地,ResourceBundleViewResolver将从位于项目class路径根目录下的文件views.properties中加载视图bean,不过,这个位置可以通过"basename"属性覆盖: 1 2 3 4 5 <beans ...>          <bean

Spring MVC视图解析器:Spring MVC XmlViewResolver示例

在Spring MVC中,使用XmlViewResolver基于XML文件中的视图bean来解析"视图名称".默认地,XmlViewResolver将从/WEB-INF/views.xml中加载视图bean,不过,这个位置可以通过"location"属性覆盖: <beans ...> <bean class="org.springframework.web.servlet.view.XmlViewResolver"> &l

【Struts2框架】第六节拦截器-拦截器的几个小实例

在看拦截器的小例子的前我们先来看看sturts2的原理 struts2自己是有拦截器的,通过拦截器可以拦截用户请求,并作出处理 拦截器作用有很多,譬如: 1.Action里面有个属性,这个属性我想在action执行之前改成别的值,可以用拦截器解决. 2.比如每个人执行action之前,我可以查看他们有没有这个权限执行这个action. 如果不设置拦截器,你要在每种action方法之前设置判定程序,非常繁琐. 拦截器interceptor体现了一种编程理念,叫做AOP(面向切面编程) 实例1:使用