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 控件? 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值