问题描述
JavaWeb怎样修改request的参数值spring拦截器?过滤器?最好有实践过的给指定一下!!!谢谢大家!!!
解决方案
解决方案二:
没有人遇到怎样的需求吗?
解决方案三:
具体是什么需求呢?
解决方案四:
引用1楼weiluo12的回复:
没有人遇到怎样的需求吗?
JavaWeb怎样修改request的参数值在拦截器或者过滤器里面改变request参数的值!!!
解决方案五:
拦截器过滤器不可以么?
解决方案六:
用过滤器就可以实现,现在web.xml文件中配置好过滤器,自定义个一个过滤器,实现Filter接口,在doFilter中实现自己的过滤逻辑,我这里有个设置所有请求中的字符编码,你可以参考一下:web.xml配置如下:<filter><!--过滤器名称,随便定义--><filter-name>UrlFilter</filter-name><!--filter-class指向自定义的过滤器,完整的包名+类名--><filter-class>com.wgh.common.SetCharacterEncodingFilter</filter-class><!--过滤器中的默认参数,默认的字符编码是GBK--><init-param><param-name>defaultEncoding</param-name><param-value>GBK</param-value></init-param></filter><!--filter和filter-mapping是成对出现的--><filter-mapping><!--过滤器名称,一定要和上面的一样,--><filter-name>UrlFilter</filter-name><!--表示拦截所有的请求--><url-pattern>/*</url-pattern></filter-mapping>SetCharacterEncodingFilter过滤器类:packagecom.wgh.common;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Arrays;importjava.util.Enumeration;importjava.util.List;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;publicclassSetCharacterEncodingFilterimplementsFilter{privatestaticStringlog="ksURL_log";privatestaticStringweb_xml_url;protectedstaticStringdefaultEncoding=null;protectedFilterConfigfilterConfig=null;protectedbooleanignore=true;publicvoiddestroy(){this.defaultEncoding=null;this.filterConfig=null;this.web_xml_url=null;}publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{if(ignore||(request.getCharacterEncoding()==null)){StringdefaultEncoding=selectEncoding(request);HttpServletRequestreq=(HttpServletRequest)request;if(defaultEncoding!=null){Stringuri=req.getRequestURI();Stringurl_suffix=uri.substring(uri.lastIndexOf("/")+1);request.setCharacterEncoding(defaultEncoding);}}}publicvoidinit(FilterConfigfilterConfig)throwsServletException{this.filterConfig=filterConfig;this.defaultEncoding=filterConfig.getInitParameter("defaultEncoding");Stringvalue=filterConfig.getInitParameter("ignore");if(value==null)this.ignore=true;elseif(value.equalsIgnoreCase("true"))this.ignore=true;elseif(value.equalsIgnoreCase("yes"))this.ignore=true;elsethis.ignore=false;}protectedStringselectEncoding(ServletRequestrequest){return(this.defaultEncoding);}}
解决方案七:
修改参数值不可能,起码目前的服务器是没这个功能,除非你自己实现。
解决方案八:
多变通变通换别的方式实现需求别死卡在这个问题上
解决方案九:
多变通变通换别的方式实现需求别死卡在这个问题上
解决方案十:
多变通变通换别的方式实现需求别死卡在这个问题上
解决方案十一:
引用6楼yys79的回复:
修改参数值不可能,起码目前的服务器是没这个功能,除非你自己实现。
不是没这个功能,是标准不允许提供这个功能。一个请求就是一个历史事件。你怎么能在中间随便改动它呢。你只能创建一个新的请求把参数值换一换,比如request.getRequestDispatcher("/anotherPage.jsp?p=a").forward(...);
解决方案十二:
引用10楼humanity的回复:
Quote: 引用6楼yys79的回复:
修改参数值不可能,起码目前的服务器是没这个功能,除非你自己实现。不是没这个功能,是标准不允许提供这个功能。一个请求就是一个历史事件。你怎么能在中间随便改动它呢。你只能创建一个新的请求把参数值换一换,比如request.getRequestDispatcher("/anotherPage.jsp?p=a").forward(...);或者response.sendRedirect("/samePage?p=a");
不过我们可以用request.setAttribute(...)来给程序传递值,它在一个request之内都有效。