您的位置:首页 > Web前端 > JQuery

jquery表单提交到struts2中文乱码

2016-01-20 11:58 543 查看
在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 {@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic 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){@Overridepublic 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 blocke.printStackTrace();}newvalues[i] = value; //解决乱码后封装到Map中}newmap.put(name, newvalues);}}return newmap;}@Overridepublic String[] getParameterValues(String name) {// TODO Auto-generated method stubreturn super.getParameterValues(name);}@Overridepublic 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){}}@Overridepublic void init(FilterConfig arg0) throws ServletException {// TODO Auto-generated method stub}}
input 为text类型, name 为 statrtTime endTime 可以自动调用到datePicker 控件?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: