通常情况下Tomcat中遇到乱码问题,解决的思路都是保证数据库+程序+页面编码三码一致就能解决,今天遇到乱码,奔着同样的思路去解决,可不灵光了。
问题描述:jforum开源论坛,官方下载下来安装后一切正常,没有乱码问题。现在jforum中增加了一个filter做自动登录,filter功能很简单,判断当前请求中有没有某个参数,有的话就执行自动登录,代码如下:
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { String pal = req.getParameter("_PAL"); if(pal != null) { //do autologin... } chain.doFilter(req, res); }
可在web.xml中加了这个filter以后,所有post的中文全乱码了(不管有没有"_PAL"参数),去掉filter又好了,凌乱了,百思不得骑姐。
正常情况下就是想到在filter中增加request.setCharacterEncoding("UTF-8")之类的调用(其实在我的filter后面jforum进行类似这样的调用的,所以要搞明白为啥还要在我的filter里加),加了之后确实是好的。但明眼一看filter里没干啥呀,为啥filter就影响了这个呢?于是乎tomcat源码出动了,经过观看tomcat源码一番,终于明白,原来当request.getParameter方法执行的时候,tomcat就已经去解析整个请求中所有参数了(解析的时候就会应用上编码),而这之后的所有request.setCharacterEncoding调用对参数来说不再起作用(因为所有参数已经被解析过了),所以结论就是:如果要调用request.setCharacterEncoding进行编码设置,一定要在任何参数被访问之前调用。
相关推荐
java servlet 请求 时 tomcat request.getParameter 乱码
部署tomcat下的项目 监控的时候发现 日志中文乱码 ,tomcat 下catalina.out 日志乱码问题处理
Docker容器部署tomcat出现中文乱码.docx
Apache Tomcat 软件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annotations和 Jakarta Authentication 规范的开源实现 。 压缩包内容: apache-...
解决tomcat中文乱码问题.doc,很宝贵的资料。
apache-tomcat-7.0.108.tar.gz
Tomcat8.5服务器server.xml文件,误删的可以下载,Tomcat服务器server.xml基本都是一样的,只是版本不一样
最新版linux apache-tomcat-9.0.52.tar.gz最新版linux apache-tomcat-9.0.52.tar.gz
apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-tomcat-9.0.45-windows-x64apache-...
apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)apache-tomcat-9.0.27.tar (1)...
tomcat9.0.37.tar.gz
apache-tomcat-9.0.60.tar.gz
apache-tomcat-8.5.75.tar.gz
最新版linux apache-tomcat-10.0.2.tar.gz最新版linux apache-tomcat-10.0.2.tar.gz
官方原版apache-tomcat-9.0.34.tar.gz
最新版linux apache-tomcat-8.5.59.tar.gz最新版linux apache-tomcat-8.5.59.tar.gz
最新版linux apache-tomcat-8.5.63.tar.gz
apache-tomcat-8.5.27.tar.gz适用于Linux系统
最新版linux apache-tomcat-9.0.50.tar.gz最新版linux apache-tomcat-9.0.50.tar.gz
最新版linux apache-tomcat-8.5.58.tar.gz