jquery表单提交到struts2中文乱码

在jsp页面顶部加
<%@ page language="java" pageEncoding="UTF-8"%>
<% response.setCharacterEncoding( "UTF-8");%> 

在struts2的action里,
str = new String(str.getBytes("ISO-8859-1"),"UTF-8");
 
 
方法二,在web 中引用filter
<filter>
    <filter-name>CharFilter</filter-name>
    <filter-class>com.poobo.intelligentkitchen.filter.CharsetFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CharFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
</filter-mapping>
 
 
filter代码如下,Struts2 是通过request.getParameterMap()来获取属性的,要重写这个方法,而
getParameter 是用来获取参数的

public class CharsetFilter implements Filter {


 @Override
 public void destroy() {
 // TODO Auto-generated method stub
 
 }


 @Override
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
 throws IOException, ServletException {
 try{
 HttpServletRequest httpRequest = (HttpServletRequest)request;
 String method = httpRequest.getMethod().toLowerCase();
 System.out.println("### method is "+ method);
 if(method.equals("post")){
 //如果 是post,即表单方法,直接设置charset即可
 request.setCharacterEncoding("UTF-8");
 }else if(method.equals("get")){
 request.setCharacterEncoding("UTF-8");
 request = new HttpServletRequestWrapper(httpRequest){
 @Override
 public Map<String, String[]> getParameterMap() {
 Map<String,String[]> map = super.getParameterMap();
 Set<Entry<String,String[]>> set = map.entrySet();
 Iterator<Entry<String,String[]>> it = set.iterator();
 Map<String,String[]> newmap = new HashMap<String, String[]>();  
 while(it.hasNext()){
 Entry<String,String[]> entry = it.next();
 System.out.println("KEY:"+entry.getKey());
 String[] values = entry.getValue();
 String name = entry.getKey();
 {
 String newvalues[] = new String[values.length];
 for(int i=0; i<values.length;i++){
 String value = values[i];
 try {
 value = new String(value.getBytes("iso8859-1"),"UTF-8");
 } catch (UnsupportedEncodingException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 newvalues[i] = value; //解决乱码后封装到Map中
 }


 newmap.put(name, newvalues);
 
 }
 }
 return newmap;
 }
 @Override
 public String[] getParameterValues(String name) {
 // TODO Auto-generated method stub
 return super.getParameterValues(name);
 }
 @Override
 public String getParameter(String str){
 try{
 String strTr = new String(super.getParameter(str).getBytes("ISO-8859-1"),"GBK");
 return strTr;
 }catch(Exception e){
 return null;
 }
 }
 };
 }
 chain.doFilter(request, response);
 }catch(Exception e){
 
 }
 
 }


 @Override
 public void init(FilterConfig arg0) throws ServletException {
 // TODO Auto-generated method stub
 
 }


}

input 为text类型, name 为 statrtTime endTime 可以自动调用到datePicker 控件? 

你可能感兴趣的:(jquery表单提交到struts2中文乱码)