在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 控件?