论坛首页 Java企业应用论坛

通过HttpServletRequestWrapper(装饰模式的应用)增强HttpServletRequest的功能

浏览 31008 次
精华帖 (9) :: 良好帖 (8) :: 新手帖 (7) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-10-10  
多谢楼主提醒,
原来楼主想说的是 处理get方式提交的乱码问题
没看太仔细 呵呵~~

对于一般的表单提交都会选择post的吧
0 请登录后投票
   发表时间:2009-10-10  
有个缺陷,比如form有个name属性,请求的url也有个name属性,如
    <form method="post" action="?name=处理乱码">
    	<input type="text" name="name"/>
    	<input type="submit" value="submit"/>
    </form>



这样就混乱了,结果出来还是乱码。。。
0 请登录后投票
   发表时间:2009-10-10  
  public void destroy() {  
        charset = null;  
        config = null;  
        System.out.println(config.getFilterName()+"被销毁");  
  }  

直接就爆掉的代码啊
0 请登录后投票
   发表时间:2009-10-10   最后修改:2009-10-10
alex09 写道
  public void destroy() {  
        charset = null;  
        config = null;  
        System.out.println(config.getFilterName()+"被销毁");  
  }  

直接就爆掉的代码啊


汗,哈哈,谢谢,太马虎大意了,文章中已经修改了,但是上传文件中的还没修改,麻烦下载了的兄弟们自己修改了。
再次感谢,不然不知道丢人到啥时候了
0 请登录后投票
   发表时间:2009-10-10  
zwq4166506 写道
有个缺陷,比如form有个name属性,请求的url也有个name属性,如
    <form method="post" action="?name=处理乱码">
    	<input type="text" name="name"/>
    	<input type="submit" value="submit"/>
    </form>



这样就混乱了,结果出来还是乱码。。。



确实是这样,那么用的时候必须注意这个问题了,不能在post方式提交表单的情况下,在action属性中附加中文参数了,
只能在表单中用隐藏域来代替了,我再想想能不能解决这个问题

感谢zwq4166506兄弟这么仔细帮我找bug
0 请登录后投票
   发表时间:2009-10-11  
whistler 写道
zwq4166506 写道
有个缺陷,比如form有个name属性,请求的url也有个name属性,如
    <form method="post" action="?name=处理乱码">
    	<input type="text" name="name"/>
    	<input type="submit" value="submit"/>
    </form>



这样就混乱了,结果出来还是乱码。。。



确实是这样,那么用的时候必须注意这个问题了,不能在post方式提交表单的情况下,在action属性中附加中文参数了,
只能在表单中用隐藏域来代替了,我再想想能不能解决这个问题

感谢zwq4166506兄弟这么仔细帮我找bug



还是对中文处理再传递,有一种办法是使用js代码
/url?&param=encodeURI(encodeURI('中文')); //两次编码

然后服务器
String param= java.net.URLDecoder.decode(request.getParameter("param") , "UTF-8");
0 请登录后投票
   发表时间:2009-10-11  
目前我为公司写的过滤器就是在spring过滤器的基础上再判断是否为tomcat,如果tomcat就是跟楼主这样的处理。
0 请登录后投票
   发表时间:2009-10-11  
我的字符串过滤器都是在Filter中直接处理get和post两种请求,楼主的这种处理方式我也见到别人写过,不过,楼主好像少覆盖了一个方法getParameterMap()直接获得参数集合,呵呵
0 请登录后投票
   发表时间:2009-10-11  
还有楼上说要使用Spring的过滤器的哥们儿,Spring的过滤器我好像只能处理post请求,不能干别的
0 请登录后投票
   发表时间:2009-10-12   最后修改:2009-10-12
zwq4166506 写道
有个缺陷,比如form有个name属性,请求的url也有个name属性,如
    <form method="post" action="?name=处理乱码">
    	<input type="text" name="name"/>
    	<input type="submit" value="submit"/>
    </form>



这样就混乱了,结果出来还是乱码。。。


我局的楼主所说的问题应该是URL支不支持中文或其他语言的问题,也就是说使用浏览器地址栏直接访问带有中文或其他任何非标准字符的资源时出现的乱码:
如果直接通过浏览器地址访问带有中文参数的url(如:http://localhost/web/xx.do?name=中文XX,或者是点击<a href='http://localhost/web/xx.do?name=中文XX'>相当于直接通过浏览器地址栏访问</a>)
这个问题的解决好像只能够通过修改tomcat的server.xml来支持服务器解析非iso8859-1的url,weblogic和webshere是默认支持url的自动编码解析的。
按照楼主的包装或者自己转码的方法,不知道在解析奇数和偶数个数的中文时结果还会不会一致(之前用tomcat5.0的时候出现奇数或偶数个中文不正常)

至于说的server。xml里面配置的uriencode只是说uri支持直接书写中文,不过如果是表单提交的话,他们会自动编码的(无论是post 还是 get方式)!server。xml里面配置的uriencode只是对a标签和直接在浏览器地址栏中书写的url起作用!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics