【问题标题】:Java : different init parameters to same servlet based on different URL patterenJava:基于不同的 URL 模式对同一个 servlet 的不同初始化参数
【发布时间】:2014-07-14 12:52:57
【问题描述】:

是否可以将默认参数发送到相同的 servlet 但在 url-patterns 上不同。 就像我有一个 servlet /Add 不同的 url 模式,如 /AddPerson/AddEmplyoee 将映射到 /Add servlet。但是我想在调用 /Add servlet 时传递一些参数。就像 /AddPerson 被称为发送类型 = 1 到 /Add Servlet 一样。当/AddEmplyoee 被调用时,发送类型= 2 到/Add Servlet。
我知道我可以使用<init-param> 标签将初始化参数传递给/Add servlet。
是否可以这样做,或者我想为每个不同的操作编写不同的 servlet?

【问题讨论】:

    标签: java servlets web.xml


    【解决方案1】:

    是的。它认为这是可能的。 如果(在 web.xml 中)您定义了 servlet AddPerson(使用 servlet-class=com.foo.Add)和一个 servlet AddEmplyoee (使用 same servlet-class)比您可以使用不同的 init 参数。例如

    <servlet>
        <servlet-name>AddPerson</servlet-name>
        <servlet-class>com.foo.Add</servlet-class>
        <init-param>
            <param-name>myParam</param-name>
            <param-value>MyVal1</param-value>
        </init-param>
    </servlet>
    
    
    <servlet>
        <servlet-name>AddEmplyoee</servlet-name>
        <servlet-class>com.foo.Add</servlet-class>
        <init-param>
            <param-name>myParam</param-name>
            <param-value>MyVal2</param-value>
        </init-param>
    </servlet>
    

    具有以下映射:

    <servlet-mapping>
        <servlet-name>AddPerson</servlet-name>
        <url-pattern>/addperson</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>AddEmployee</servlet-name>
        <url-pattern>/addemployee</url-pattern>
    </servlet-mapping>
    

    如果我错了,你可以纠正我,但我认为,这最终会出现在两个单独的 servlet 中(都基于同一个类)。

    【讨论】:

      【解决方案2】:

      没有。 Servlet 生命周期不允许 Servlet 重新初始化每个请求(通过参数)。根据The Java EE Tutorial - Initializing a Servlet(已添加重点),

      在 web 容器加载并实例化 servlet 类之后,在它传递来自客户端的请求之前,web 容器初始化 servlet。要自定义此过程以允许 servlet 读取持久配置数据、初始化资源和执行任何其他一次性活动,您需要覆盖 Servlet 接口的 init 方法。

      至于将请求 uri 映射到参数,你当然可以自己做(使用 Map 和请求路径作为键)。

      【讨论】:

        猜你喜欢
        • 2013-09-22
        • 2011-12-14
        • 2011-10-08
        • 2015-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-18
        • 1970-01-01
        相关资源
        最近更新 更多