通过引入Servlet 3.0,我们可以使用annotations将servlet映射到URL模式,并在web.xml中省略映射。
我想知道是否有一些intstructions或特殊标签允许在页面代码中将jsp映射到URL而不在web.xml中声明servlet
答案 0 :(得分:5)
没有这样的设施。
最好的办法是在/WEB-INF
中隐藏JSP(以便它永远不会被URL直接请求),只需创建一个转发到该JSP并最终将其映射到所需URL模式的servlet 。这很容易:
@WebServlet("/foo")
public class FooServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/foo.jsp").forward(request, response);
}
}
这样/WEB-INF/foo.jsp
中的JSP可由http://localhost:8080/context/foo
使用。您可以使用front controller pattern将其进一步抽象为一堆JSP的单个servlet。