Struts1.X

在接收客户请求录入数据时,可能会接收到中文乱码。 普通的request.setCharacterEncoding("GB18030");起不了作用。必须在web.xml中作为struts入口的ActionServlet作为突破口。重写这个类中的process()方法

如下:

1、新建一个包com.wjq.struts.ActionServlet,在com.wjq.struts.ActionServlet包中新建一个类

EncodeActionServlet.java这个类继承ActionServlet重写基类ActionServlet中的Void  process(request,response) EncodeActionServlet.java

 

 

Public class EncodeActionServlet extends ActionServlet{

    @Override

protected void process (HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

request.setCharacterEncoding("GB2312"); // 进行统一的中文转码

super.process(request, response);

}   

}

  1. WebRoot/WEB-INF/web.xml中的配置

<servlet>

<servlet-name>action</servlet-name>

<!--将原来的servlet-class的值覆盖掉。即改为自己新建的EncodeActionServlet(完整值为:

com.wjq.struts.ActionServlet.EncodeActionServlet)

-->    <servlet-class>com.wjq.struts.ActionServlet.EncodeActionServlet</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>3</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>3</param-value>

</init-param>

<load-on-startup>0</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>action</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

 

 

 

Struts2.X

由于web.xml中的Struts是通过过滤器来接收数据的,可以看做浏览器将请求发送到服务器(web.xml)处理,将相应的请求发送给相应的方法处理,而对字符没有处理。 这是它通过过滤器将请求发送给struts.xml 所以在struts.xml调用相应action的时候,就必须将数据字符编码处理好。

所以在struts.xml中在<package>标签前应加上<constant>

如下:红字部分

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<constant name="struts.i18n.encoding" value="GB18030"/>

<include file="struts-default.xml"/>

 

<package name="example" extends="struts-default">

<action name="helloworld" class="com.wjq.HelloWorld">

<result>/HelloWorld.jsp</result>

</action>

<!-- Add your actions here -->

</package>

 

</struts>