struts2 乱码问题

问题描述

请教下,struts2 的乱码问题,1、jsp页面设置的编码是utf-8[code=java]<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>2、struts.xml[code=java]<constant name="struts.i18n.encoding" value="utf-8"></constant><constant name="struts.locale" value="zh_CN"></constant>3、在web.xml中加了filter [code=java] public void doFilter(ServletRequest req, ServletResponse resp, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletResponse response = (HttpServletResponse) resp; HttpServletRequest request=(HttpServletRequest)req; response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); arg2.doFilter(request, response); }4、mysql数据库中[code=java][mysql]default-character-set=utf8character-set-server=utf85、tomcat 的 service.xml中[code=java] <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>6、在console接收参数时后台打印的也正常,包括构造sql语句的输出也是正常的,但是在struts的调试模式还是存在乱码,,崩溃中!!!!!![img=http://img.my.csdn.net/uploads/201212/07/1354871421_9159.png][/img]

解决方案

这是因为org.apache.struts2.dispatcher.Dispatcher的sendError实现问题if (devModeOverride != null ? devModeOverride : devMode) { response.setContentType("text/html"); try { FreemarkerManager mgr = getContainer().getInstance(FreemarkerManager.class); freemarker.template.Configuration config = mgr.getConfiguration(ctx); Template template = config.getTemplate("/org/apache/struts2/dispatcher/error.ftl"); List<Throwable> chain = new ArrayList<Throwable>(); Throwable cur = e; chain.add(cur); while ((cur = cur.getCause()) != null) { chain.add(cur); } HashMap<String,Object> data = new HashMap<String,Object>(); data.put("exception", e); data.put("unknown", Location.UNKNOWN); data.put("chain", chain); data.put("locator", new Locator()); template.process(data, response.getWriter()); response.getWriter().close(); } catch (Exception exp) { try { response.sendError(code, "Unable to show problem report: " + exp); } catch (IOException ex) { // we're already sending an error, not much else we can do if more stuff breaks } } }没有设置响应编码造成的,可以在try catch异常,如果有错误 先通过ServletActionContext.getResponse().setCharacterEncoding("UTF-8"); 设置编码解决方案是:1、覆盖FilterDispatcher实现 覆盖createDispatcher 返回一个自定义的Dispatcher2、该自定义Dispatcher 覆盖sendError 并在发送错误之前设置编码
解决方案二:
传入到后台有问题,那么应该在前台-》后台这个提交过程中,看有没有乱码可以debug 可以在火狐下firedebug 看post参数的值。我想问题应该在前台-》后台这个传输过程中出出问题了

时间: 2024-08-30 17:22:33

struts2 乱码问题的相关文章

javaweb-为什么struts2不用处理乱码

问题描述 为什么struts2不用处理乱码 struts在eclipse下是如何解决乱码的,比如在struts下jsp表单提交,jsp有设置pageencoding属性为utf8,没有乱码.而在平常开发中表单提交到servlet却要通过response解决乱码,这是为什么?求解 解决方案 struts对post提交的数据进行了编码转换的封装.如果你form提交为get仍会出现乱码问题. 解决方案二: Struts2中乱码处理Struts2乱码处理 解决方案三: 应该是对所有的请求都做了过滤处理吧

struts2.0-Struts2 基本原理问题 基本传递问题

问题描述 Struts2 基本原理问题 基本传递问题 1.一个web项目,这是webContent目录下的login.jsp文件: <%@ page language="java" contentType="text/html; charset=GBK"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "

struts2–jsp-struts2在action中获取页面超链接中文参数乱码

问题描述 struts2在action中获取页面超链接中文参数乱码 struts2在action中获取页面超链接中文参数乱码,该如何解决,跪求各位大神 解决方案 在struts 配置文件里加上: <struts> <constant name="struts.locale" value="zh_CN"></constant> <constant name="struts.i18n.encoding" va

定人困扰的 struts2.1.6 中文乱码问题

问题描述 前台jsp表单提交中文参数过去,在action中调试时总是接收到乱码表单使用的是post提交方式jsp页面设置<%@pagelanguage="java"contentType="text/html;charset=utf-8"pageEncoding="utf-8"%>struts.xml也设置了<constantname="struts.i18n.encoding"value="UTF

乱码:struts2

问题描述 Struts2中地址栏直接输入地址?title=标题,进入到action用request.getPrarameter("title")得到值乱码.希望大家运行个小程序试试,因为我已经各种转码了就是不行,谢谢参与者 解决方案 解决方案二:应该是中间件的编码问题,如果你用的是tomcat的话<Connectorport="8080"protocol="HTTP/1.1"URIEncoding="GB2312"con

struts2 + jquery 乱码问题

问题描述 我的jsp页面时UTF-8,在java端httpRequest也是UTF-8,ajax提交的时候Content-Type也是application/x-www-form-urlencoded,但是ajax提交的时候java端获取到的数据却是中文乱码,表单提交一切正常,求解! 解决方案 解决方案二:楼主的情况我也遇到过,在页面发送请求的时候先转码一次:encoudeurl();然后取出的时候在decodde转一次.我写的两个关键字可能不正确.解决方案三:ajax提交默认的编码方式是utf

struts2 jsp表单提交到action中文乱码问题

struts2 jsp教程表单提交到action中文乱码问题 struts2中默认提交的格式是utf-8格式的,故需要把中文字符转码后才能正常显示,解决方法: 直接在struts.xml文件中<struts> 标签内部添加一句如下代码:  <constant name="struts.i18n.encoding" value="gbk" /> 注意:如果你jsp页面中使用的是utf-8格式,那么此处也写成utf-8格式. 下面看代码 下面是一

struts2后台乱码

问题描述 RT,有点困惑的是第一次提交不乱码第二次乱码具体如下:我做的是一个faq发布系统在第一次提交的时候把内容都封装到一个faq对象中提交比如<inputtype="text"name="faq.question"/>输入中文提交后后台正常接收action返回一个页面,这个页面中用隐藏域<inputtype="hidden"value="${faq.question}"name="faq.que

struts2+prototype AJAX POST乱码,怎么解决

问题描述 配置:tomcat 6 server.xml 已经设置Connector的RIEncoding="UTF-8"web.xml 没 用org.springframework.web.filter.CharacterEncodingFilter,就是关了,在struts2好像没什么用strutls.xml 设置<constant name="struts.i18n.encoding" value="GBK"></const