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";

解决方案 »

  1.   

    <filter>
        <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>
      

  2.   

    打开tomcat的server.xml文件,找到区块,加入如下一行: 
    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-的就行
      

  3.   


    不推荐在服务器中修改。治标不治本。当引用更换web服务器 问题依旧存在,最好在程序中解决。次问题为编码问题。 
      

  4.   

    改服务器不行的啊。谁能给个具体的修改措施啊。只要这个传过来的title能被认识,并能通过DAO取数据就可以了,跪求...
      

  5.   

    你用这个试一下:
     title = new String(request.getParameter("title").getBytes("ISO-8859-1"),"utf-8");
    就是把utf8换成utf-8