Struts2拦截器解决乱码问题

解决 Struts 2 中文乱码问题 通过配置字符集过滤器和自定义拦截器,并使用正确的字符编码,我们可以解决 Struts 2 中文乱码问题。配置字符集过滤器可以确保整个应用程序的请求和响应都使用相同的字符编码,而自定义拦截器可以处理请求参数的编码,以解决中文乱码问题。在自定义的 EncodingInterceptor 中,我们可以处理请求参数的编码,将其转换为正确的字符编码。除了上述配置外,我们还需要确保应用程序的其他部分也使用正确的字符编码。在上述代码中,我们获取请求参数,并使用正确的字符编码对参数进行重新编码,以解决中文乱码问题。 阅读详情

 之前使用struts1的时候是通过写filter来处理乱码,把写的filter搬到struts2,配置了WEB.XML发生没有效果,请求根本就没有通过filter。原因Struts2在web.html配置了处理action请求的filter:

[html]  view plain copy
  1. <filter>  
  2.   <filter-name>struts2</filter-name>  
  3.   <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  4.  </filter>  
  5.   
  6.  <filter-mapping>  
  7.   <filter-name>struts2</filter-name>  
  8.   <url-pattern>/*</url-pattern>  
  9.  </filter-mapping>  

通过这个sturts filter后,在这个struts filter之前或之后配置都是发现处理乱码的filter不起作用,所以编写拦截器还是个不错的解决乱码的方式。

1、编写自定义 EncodingIntereptor拦截器

[java]  view plain copy
  1. import java.io.UnsupportedEncodingException;  
  2. import java.util.Iterator;  
  3.   
  4. import javax.servlet.http.HttpServletRequest;  
  5.   
  6. import org.apache.struts2.StrutsStatics;  
  7.   
  8. import com.opensymphony.xwork2.ActionContext;  
  9. import com.opensymphony.xwork2.ActionInvocation;  
  10. import com.opensymphony.xwork2.interceptor.AbstractInterceptor;  
  11.   
  12. public class EncodingInterceptor extends AbstractInterceptor {  
  13.   
  14.  /** 
  15.   * Struts2编码拦截器 
  16.   */  
  17.    
  18.  @Override  
  19.  public String intercept(ActionInvocation arg0) throws Exception {  
  20.   // TODO Auto-generated method stub  
  21.     
  22.    ActionContext actionContext = arg0.getInvocationContext();     
  23.    HttpServletRequest request= (HttpServletRequest) actionContext.get(StrutsStatics.HTTP_REQUEST);   
  24.   System.out.println("Encoding Intercept...");  
  25.   /** 
  26.    * 此方法体对GET 和 POST方法均可 
  27.    */  
  28.   if( request.getMethod().compareToIgnoreCase("post")>=0){  
  29.       try {  
  30.        request.setCharacterEncoding("GBK");  
  31.       } catch (UnsupportedEncodingException e) {  
  32.        // TODO Auto-generated catch block  
  33.        e.printStackTrace();  
  34.       }  
  35.      }else{  
  36.               
  37.       Iterator iter=request.getParameterMap().values().iterator();  
  38.       while(iter.hasNext())  
  39.       {  
  40.        String[] parames=(String[])iter.next();  
  41.        for (int i = 0; i < parames.length; i++) {  
  42.         try {  
  43.          parames[i]=new String(parames[i].getBytes("iso8859-1"),"GBK");//此处GBK与页面编码一样  
  44.         } catch (UnsupportedEncodingException e) {  
  45.          e.printStackTrace();  
  46.         }  
  47.        }     
  48.       }     
  49.        }  
  50.          return arg0.invoke();  
  51.  }  
  52.   
  53. }  


2、Struts.xml配置

下注册拦截器:

[html]  view plain copy
  1. <package>  
  2.      <interceptors>  
  3.         <interceptor name="Encoding" class="com.disaster.util.EncodingInterceptor"></interceptor>  
  4.         <interceptor-stack name="Encode">  
  5.            <interceptor-ref name="Encoding"></interceptor-ref>  
  6.            <interceptor-ref name="defaultStack"></interceptor-ref><!-- 必须引入这个,否则request不会再往下传-->  
  7.         </interceptor-stack>  
  8.      </interceptors>  

3、使用拦截器,可将其设为默认的拦截器

[html]  view plain copy
  1. <default-interceptor-ref name="Encode"></default-interceptor-ref>   

4、页面编码和页面字符编码跟设为"UTF-8"。如果页面是其它编码,将拦截器中重编码部分改一下即可。

struts2拦截器解决请求乱码和输出乱码.txt struts2 拦截器 解决 请求乱码 和 输出乱码 java 立即下载

相关推荐

TCMSP数据库+R语言实战:从网页爬虫到中药-靶点网络图的全流程解析

本文详细解析了如何使用R语言从TCMSP数据库抓取中药-靶点数据,并通过数据清洗、网络分析和可视化构建完整的中药作用机制研究流程。涵盖动态网页爬虫、ADME参数筛选、网络图构建及高级可视化技巧,为中医药现代化研究提供实用的生物信息学方法。

weixin_31304817的博客 337

struts2拦截器解决请求乱码和输出乱码

转载自:http://lib.youkuaiyun.com/snippet/javaee/44538 import java.io.UnsupportedEncodingException; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSer...

dawuafang 178

前端宝典之七:React性能优化实战精华篇

本文主要讲解实战项目中React性能优化的方法,主要分为三个大的方面:减少不必要的组件更新、组件优化以及tree-shaking,共11个方法

franktaoge的博客 1902

Struts2文件上传以及文件名中文乱码解决

这次练习的是一个很简单的内容:将文件上传到服务器。主要功能就是把文件上传到服务器中指定的路径。 开发环境和工具 配置Java开发环境的Windows操作系统,MyEclipse 2014/2016,Tomcat 7.0/8.0/9.0. 实现代码 首先配置Struts2的开发环境。具体就不再赘述了,导入必要的jar包,配置web.xml,配置struts.x

桐小目的秘密基地 5245

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 894

利用 IP 中的集成调试功能来调试 PCI Express 链接训练问题

JTAG Debugger”和“In-system IBERT”功能结合在一起即可提供即时信息,用于判断链接训练问题的可能原因。“test_rd.tcl”文件可读取 BRAM 中存储的调试数据,并输出 *.dat 文件,如下所示。同样,您可能看到某一箭头旁的数字较大,表明可能存在不稳定的链接。要采集 PCIe 链接眼图,请在 IP 配置 GUI 的“Add. Debug Options”选项卡中选择“启用 In-System IBERT (Enable In-System IBERT)”选项。

qq_43416206的博客 536

Struts2以base64的方式上传图片

前言(为什么要用base64)其实我最初用做测试的图片上传接口接收的参数就直接是<input type="file">但是要用做手机端的后台,而手机发送的图片是以base64的方式上传的,而且这货不懂这么以file的方式上传,另外考虑到安全性就只好把file方式上传的改成了base64 我这里是使用Java来示范如何上传的,主要是struts2代码实现Action类:Upload.javapack

Slience 1万+

使用 IMDb API 获取电影评分和评论的 Python 爬虫

电影是人们娱乐生活中的重要组成部分,随着电影产业的快速发展,观众对电影的评价也越来越多样化。IMDb(互联网电影数据库)作为全球最大的电影评分和评论平台之一,收录了成千上万部电影、电视节目及其相关数据。它提供了一个强大的 API 接口,允许开发者访问电影的评分、评论、演员信息等数据。本文将带你一步一步实现一个 Python 爬虫,使用 IMDb API 获取电影的评分和评论。我们将通过这个爬虫来分析一些热门电影的观众反馈,并可视化分析结果。

2201_76125261的博客 1055

struts2用拦截器解决中文乱码问题

之前使用struts1的时候是通过写filter来处理乱码,把写的filter搬到struts2,配置了WEB.XML发生没有效果,请求根本就没有通过filter。原因Struts2在web.html配置了处理action请求的filter: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2

qyy333的专栏 1366

通俗范畴论10 泛性质(MD版)

既然泛性质可以在同构意义下唯一确定一个泛构造,那么我们就可以用泛性质来定义泛构造。我们回顾一下已经掌握的泛性质和泛构造。泛性质其实我们并不陌生,始对象和终对象,就是具有泛性质的对象,一个具有“始”的泛性质,一个具有“终”的泛性质。比如始对象,如果一个范畴里面有始对象,它到所有对象都有且只有一个态射,这样的对象可能有两个么?嗯,还真可能,但是这两个始对象同构,所以在同构意义下,它们可以看成一个,因此在同构意义下,始对象是唯一的。同理,终对象也一样。同构的始对象。

RockTec的专栏 478

Buck电源设计常见的一些问题(四)MOS管振荡抑制方法(二)

另一方面,开关振铃为远超开关频率的高频振铃,并伴随很高的 dV/dt,会带来传导和辐射的 EMI 问题,可能会使得终端产品不能通过 EMI 标准测试,更严重时甚至会干扰开关电源自身的信号电路或临近的其他功能电路的正常工作。选用二极管反向特性好的器件;该电路可等效成图 3 中 LC 谐振电路,新的 LR和 CR为 Lp1、Lp5,Lp3, Lp4, CD等所有参与振铃的寄生感容的复合值。通常 Snubber 的 Csnub取值在数 nF 以上,在振铃频率 fR(加了 snubber 后)下的阻抗很小。

小幽余生不加糖 2893

Struts2乱码终极解决办法

这个暑假一直在做有关Struts2的相关开发,可是乱码问题一直出现,也一直没在意。。。今天闲来有空,总结一下,希望以后乱码问题不要再出现   先把以往需要设置的点罗列一下:   1. JSP 文件头      2. struts.properties中的编码设定   struts.locale = UTF-8 struts.i18n.encoding=utf-8   3. R...

kanwoerzi 465

基于R-CNN深度学习的石头剪刀布手势识别系统:数据集、模型和UI界面的完整实现

本项目的目标是开发一个基于R-CNN深度学习模型的手势识别系统,能够识别石头、剪刀、布三种手势,并通过UI界面让用户能够进行交互。数据集准备与标注:收集包含石头剪刀布手势的图像,并对其进行标注。深度学习模型构建与训练:采用R-CNN模型进行手势的识别和定位。UI界面设计:设计一个简洁的界面,用户可以上传手势图像并进行识别。R-CNN(Region Convolutional Neural Networks)是一个典型的目标检测模型。生成候选区域。

YOLO 877

struts2拦截器解决乱码问题

struts2拦截器解决乱码问题 之前使用struts1的时候是通过写filter来处理乱码,把写的filter搬到struts2,配置了WEB.XML发生没有效果,请求根本就没有通过filter。原因Struts2在web.html配置了处理action请求的filter: struts2 org.apache.struts2.dispatcher.FilterDispatch

xuanfeng_xf1的专栏 462

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Struts2中type类型有哪些?Struts2默认能解决get和post提交方式的乱码问题吗?Struts2中如何配置拦截器?

其中,intercept()方法是拦截器的核心,它决定了拦截器的行为。然而,对于GET请求,由于HTTP协议对GET请求的参数长度有限制,并且GET请求的参数会附加在URL后面,这可能导致在传输过程中出现中文乱码问题。请注意,Struts2的默认配置和过滤器设置可能会因版本不同而有所差异,因此在实际开发中,建议详细阅读官方文档和相关的配置说明,以确保正确处理中文乱码问题。除了上述常见的结果类型,Struts2还支持其他扩展的结果类型,如freemarker等,这些扩展类型通常通过配置额外的插件或库来实现。

Aaron的博客 1158

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

十二、Struts2通过拦截器处理中文请求参数乱码的问题

编写拦截器 package blog.youkuaiyun.com.mchenys.intercept; import java.io.UnsupportedEncodingException; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSer...

热爱不止,前行不息 336

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

学习struts2建bbs总结四:解决jsp/action中文传值乱码问题

我在测试的过程中,发现当发帖(前面说的postAction)时候,以及当url传值有中文时,都有乱码现象。看了许多网上的文章,大致有下面3种解决方案: 1、struts2的版本太低 2、利用前文说的拦截器,在jsp传值到action前完成转码。 3、自定义一个过滤器,在过滤器里完成。 第一个方法我没有去试,本着学习的态度,我试了第2、3个方案。 先看未用拦截器时,当点击板块”你好

编程源于生活 4237

struts2.0的乱码问题的认识!!!

[size=x-large][color=red]最近老在论坛上看到有人问struts2.o的乱码问题,说在tomcat下配置了*.xml(server.xml??)的URIEncoding="UTF-8!还有的自己写了过滤器的,但是都都不行,状况是只能过滤部分信息!不能完全转化!我觉得大家存在认识上的误区,因为strut2.0用核心拦截器处理所有的业务! Struts2.0的乱码并不是使用过滤...

y雨打沙滩点点滴!!! 131

Struts中拦截器过滤敏感字符

struts2 的文字过滤拦截器 1.新建一个news.jsp页面 然后,新建一个newsSuccess.jsp页面, 2.新建一个class,名为:TextAction.java 3.修改struts.xml的配置: 然后就可以初步传递数据了. 加上下面这句代码就可以防止传递中文字符时发生乱码现象: 4.下面创建拦截器

wylfll的博客 865

(Struts2)Tomcat无法加载静态CSS、JS资源的问题

首先本人的问题有两个背景: 工程是Struts2的 导入的静态资源是一个开源的模板 在不运行Tomcat的情况下HTML页面时完美打开的 IDEA工作环境 中文乱码 标题开启Tomcat之后 刚开始是HTML页面中文乱码,这样解决: 进来后 先将1、2步设置好,在进入三里面配置 点击加号添加变量 最后保存,重启服务就行了。 无法加载静态资源CSS和JS 在网上找了很多资料都没有解决问题,偶...

qq_924070845的博客 1161

struts2解决get和post方式中文乱码

1.首先在struts.xml文件里设置 2.添加如下拦截器。拦截所有参数带中文的请求 public String intercept(ActionInvocation invocation) throws Exception { HttpServletRequest request=  (HttpServletRequest) invocation.getInvocationCon

fjl0120fjl的博客 332

关于拦截器

什么是拦截器? 拦截器,一般指的是在浏览器页面向服务端发出请求后,拦截誷求�EBC�对%%8��求进�28C一�s�列뚄操作�%%B或�%8%�在�09C�务器连回�9B0据�%%7�,在数5E6���P达滏览器界%%9���%8%,�D9A一些操뽜。63Cbr />%E%��截器�%%0般�%9%�于�49D�限验诎、�AB1码�%%4�理等操7E4�� 拦�%%8�器%E%��基7E6

只管努力,莫问前程 1845
上一篇: 3306端口被占用
下一篇: struts2二次上传图片缓存问题
前端小生
博客等级 码龄11年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值