jsp在tomcat中请求参数的问题

时间:2011-08-24 06:51:35

标签: jsp unicode tomcat7

我已经创建了一个带有netbeans 7.0和tomcat 7.0的JSP项目,没有任何问题。

当我将它导出到WAR并将其部署到我的Tomcat服务器时,此行不起作用:

<% if (request.getParameter("submit").contains("اضافه")) { ...

但这些有效:

<% if (request.getParameter("emplist") != null) { ...

这个问题是如何引起的?如何解决?

3 个答案:

答案 0 :(得分:5)

TOMCAT_HOME/conf/web.xml中,您可以添加过滤器以启用字符编码为UTF-8

添加以下内容:

<filter>
    <filter-name>setCharacterFilter</filter-name>
    <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
        </init-param>
    <init-param>
        <param-name>ignore</param-name>
        <param-value>false</param-value>
        </init-param>
</filter>
<filter-mapping>
    <filter-name>setCharacterFilter</filter-name>
    <url-pattern>*</url-pattern>
</filter-mapping>

如果要将URL编码为包含UTF-8,则必须向Tomcat连接器添加URIEncoding="UTF-8"

找到您的HTTP连接器(在TOMCAT_HOME/conf/server.xml中,通常您可以找到已分配的端口8080)并按上述方式添加属性URIEncoding,如下所示:

<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               URIEncoding="UTF-8"
    />

我希望这会有所帮助。

答案 1 :(得分:0)

您的部署tomcat版本是否与开发版本相同?

这可能与请求编码问题有关。你应该通过调用HttpServletRequest对象的setCharacterEncoding或在你的表单中设置utf8 charset来将编码设置为UTF-8。

答案 2 :(得分:0)

喜欢以下。您还可以创建自定义过滤器类以将请求的编码设置为UTF-8

public class UnicodeFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {

        req.setCharacterEncoding("UTF-8");

        chain.doFilter(req, res);
   }
   public void init(FilterConfig config) throws ServletException {
     //Get init parameter
   }
   public void destroy() {
     //add code to release any resource
   }
}