0

我正在使用 Servlet 和 Jsp 开发简单的 Web 应用程序。但是我在处理 web.xml 时遇到了一个问题。例如,我可以对许多 servlet 类使用相同的 url 模式吗

jsp页面的代码

<form action="Answer" method="get">
                    <input id="foo" type="text" name="question"/> 
                    <input type="reset" value="Clear" />  
                    <br/>
                    <input type="submit" value="Submit"/>
                    <input type="submit" value="Back"/>
                </form>

来自 web.xml 的代码

 <servlet>
        <servlet-name>Answer</servlet-name>
        <servlet-class>RemoveAbbr</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Answer</servlet-name>
        <url-pattern>/Answer</url-pattern>
    </servlet-mapping>
 <servlet>
        <servlet-name>Answer</servlet-name>
        <servlet-class>Preprocess</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Answer</servlet-name>
        <url-pattern>/Answer</url-pattern>
    </servlet-mapping>

所以,我的问题是以下选项的真实条件是什么 1)如果我点击提交按钮,它可以映射到 RemoveAbbr 2)如果我点击后退按钮,它可以映射到预处理 3)因为相同的 url 模式(表单操作来自jsp) 不能用于不同的 servlet 类名。

4

2 回答 2

2

每个都<servlet>需要有一个唯一的<servlet-name>,所以你需要重命名一个。此外,<url-pattern>'s 应该不同,以便 servlet 容器知道如何处理请求。

于 2013-02-05T10:57:43.813 回答
0

您需要使用唯一的<servlet-name>. 例如:

<servlet>
    <servlet-name>FirstServlet</servlet-name>
    <servlet-class>com.myapp.FirstServlet</servlet-class>
</servlet>
<servlet>
    <servlet-name>SecondServlet</servlet-name>
    <servlet-class>com.myapp.SecondServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>FirstServlet</servlet-name>
    <url-pattern>/first.do</url-pattern>
</servlet-mapping>
   <servlet-mapping>
    <servlet-name>SecondServlet</servlet-name>
    <url-pattern>/second.do</url-pattern>
</servlet-mapping>

查看本教程,我找到了一个编辑 web.xml 文件并添加 servlet 的示例。源代码也可用,所以它对我很有用。

于 2014-09-05T19:05:58.477 回答