以下代码是我前面Struts+Spring+Hibernate例中的一部分,当然也适合独立使用.好吧,开始.
我们写一个类,继承自ActionServlet(Struts的控制器):
package
com.zgh.struts;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionServlet;
public class MyActionServlet extends ActionServlet ... {
private static final String ENCODING="GBK";
private String encoding;
public void init() throws ServletException ...{
super.init();
String tmp=getInitParameter("ENCODING");
System.out.println("encoding="+tmp);
if(null!=tmp&&!"".equals(tmp))...{
encoding=tmp;
}else...{
encoding=ENCODING;
}
}
public String getEncoding()...{
return encoding;
}
protected void process(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException, ServletException ...{
arg0.setCharacterEncoding(getEncoding());
super.process(arg0, arg1);
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionServlet;
public class MyActionServlet extends ActionServlet ... {
private static final String ENCODING="GBK";
private String encoding;
public void init() throws ServletException ...{
super.init();
String tmp=getInitParameter("ENCODING");
System.out.println("encoding="+tmp);
if(null!=tmp&&!"".equals(tmp))...{
encoding=tmp;
}else...{
encoding=ENCODING;
}
}
public String getEncoding()...{
return encoding;
}
protected void process(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException, ServletException ...{
arg0.setCharacterEncoding(getEncoding());
super.process(arg0, arg1);
}
}
在上面例子中,从web.xml中读取编码格式(在init方法里面,必需要先调用父类的init),如果没有就用默认的。在process中设置编码格式。
然后我们修改web.xml(前面的Struts+Spring+Hibernate例子中的差不多,稍做修改):
<?
xml version="1.0" encoding="UTF-8"
?>
< web-app xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" version ="2.4" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< servlet >
< servlet-name > action </ servlet-name >
< servlet-class > com.zgh.struts.MyActionServlet </ 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 >
< init-param >
< param-name > ENCODING </ param-name >
< param-value > GBK </ 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 >
</ web-app >
< web-app xmlns ="http://java.sun.com/xml/ns/j2ee" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" version ="2.4" xsi:schemaLocation ="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
< servlet >
< servlet-name > action </ servlet-name >
< servlet-class > com.zgh.struts.MyActionServlet </ 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 >
< init-param >
< param-name > ENCODING </ param-name >
< param-value > GBK </ 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 >
</ web-app >
在这里我们配置的Servlet就是我们那个MyActionServlet了,给他添加了个参数ENCODING,在这里设置编码格式--GBK。