tomcat中jsp请求的参数存在问题

tomcat中jsp请求的参数存在问题,jsp,unicode,tomcat7,Jsp,Unicode,Tomcat7,我已经用netbeans 7.0和tomcat 7.0创建了一个JSP项目,没有问题 当我将其导出到WAR并将其部署到Tomcat服务器时,这一行行不通: <% if (request.getParameter("submit").contains("اضافه")) { ... 部署tomcat版本与开发版本相同吗 这可能与请求编码问题有关。您应该通过调用HttpServletRequest对象的setCharacterEncoding或通过在表单中设置utf8字符集来将编码设置为UT

我已经用netbeans 7.0和tomcat 7.0创建了一个JSP项目,没有问题

当我将其导出到WAR并将其部署到Tomcat服务器时,这一行行不通:

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

部署tomcat版本与开发版本相同吗


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

TOMCAT\u 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>

我希望这有帮助。

像下面这样。您还可以创建自定义筛选器类,将请求的编码设置为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
   }
}

你说“不起作用”是什么意思。JSP不编译吗?如果是,错误信息是什么?它可以编译,但不执行您认为应该执行的操作?到底发生了什么,您如何运行它?它不会返回任何错误!!似乎没有请求的参数或if语句存在!在if测试之前,包括一些日志语句:System.out.println(“parameter=[”+request.getParameter(“submit”)+“]”);System.out.println(“参数=[“+”اضاه“+”]);看看,你真的有这个参数,如果它真的包含这个字符串。您可以显示字符的所有数字值以真正确保。当通过netbeans部署它时,一切都正常!但是,当在dist目录中部署netbeanside甚至Eclipse(导入到它之后)创建的web存档时,我发现了这个问题!我也做那个测试!!在第页上可以打印,但:未打印!!我将波斯语(unicode)单词(“اضافه”)改为“添加”,但什么也没发生!你说得对!够了!?或者不是!不,这还不够。您应该将其设置为要发布的表单。
<Connector port="8080" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               connectionTimeout="20000" disableUploadTimeout="true"
               URIEncoding="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
   }
}