@WebServlet具有来自xml的初始化参数

JIV*_*JIV 3 java web.xml servlets init-parameters

我正在检查Web Servlet的新注释,但是我不明白如何init-param从易于修改的位置传递初始参数()。是的,我找到了注解@WebInitParam,但这意味着您必须将值写入代码中,我想这没有抓住web.xml中易于更改的要点。

那这里怎么办?@WebServlet在这种情况下不使用?

Nik*_*los 5

一个有趣的用例,事实证明您可以(我的配置:JBoss 7.1.1):

Servlet:

@WebServlet(name="fooServlet", urlPatterns="/foo")
public class FooServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String flip = getInitParameter("flip");
        resp.getWriter().println("<html>" +
            "<head><title>" + getServletName() + "</title></head>" +
            "<body>From " + getServletName() + ": " + flip + "</body>" +
            "</html>"
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

内部web.xml(注意名称相同,但未<servlet-class>指定):

<servlet>
    <servlet-name>fooServlet</servlet-name>
    <init-param>
        <param-name>flip</param-name>
        <param-value>flop</param-value>
    </init-param>
</servlet>
Run Code Online (Sandbox Code Playgroud)

的值flip = getInitParameter("flip")设定为flop,在指定的web.xml


顺便说一句,我想知道这是JBoss的功能还是标准功能。它是标准的,请参阅Servlet 3.0规范,第8.2.1节“ web.xml的模块化”。