jsp用<s:url>传递一个参数title到Action中,并从数据库中抽出title对应的表中的数据。但是我发现title为英文时正常取出数据,但是中文时就什么都没有。会不会时编码问题啊?url地址是乱码啊。
action如下:
HttpServletRequest request= ServletActionContext.getRequest();
String title;
try {
title = new String(request.getParameter("title").getBytes("ISO-8859-1"),"utf8");
List<Notice> list= new NoticeDAO().listByTitle(title);
request.setAttribute("list", list);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "success";
action如下:
HttpServletRequest request= ServletActionContext.getRequest();
String title;
try {
title = new String(request.getParameter("title").getBytes("ISO-8859-1"),"utf8");
List<Notice> list= new NoticeDAO().listByTitle(title);
request.setAttribute("list", list);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "success";
<filter-name>CharsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
URIEncoding=”GBK”
完整的应如下:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 如果还不行的话 就是你工程里面的 web.xml
里面没有过滤器 ,你添加一个过滤器 ,把编码统一改成 gbk 或者utf-的就行
不推荐在服务器中修改。治标不治本。当引用更换web服务器 问题依旧存在,最好在程序中解决。次问题为编码问题。
title = new String(request.getParameter("title").getBytes("ISO-8859-1"),"utf-8");
就是把utf8换成utf-8