JSP调用Servlet(不工作)

时间:2014-05-18 14:46:48

标签: java jsp servlets request

我正在JSP页面上尝试此代码:

        <%
if((ArrayList<Car>) session.getAttribute("car_1") == null){
%>
  <jsp:forward page="/MyServlet.java"/>
<%}%>

当我运行我的项目时,我收到错误404并显示消息:&#34;请求的资源不可用。&#34;

我想问题是web.xml(我没有)。可以吗?

4 个答案:

答案 0 :(得分:1)

您只是链接到上下文中包含的MyServlet.java文件的源代码。如果没有,您将收到404错误。

您很可能错误地添加了.java。尝试:

<jsp:forward page="/MyServlet"/>

我正在假设您的servlet(WEB-INF/classes/your/package/MyServlet.class)通过注释正确映射:

@WebServlet(urlPatterns = {"/MyServlet"})
public class MyServlet extends HttpServlet { ... }

web.xml

<web-app ...>
    <servlet>
        <servlet-name>MyServletName</servlet-name>
        <servlet-class>your.package.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServletName</servlet-name>
        <url-pattern>/MyServlet</url-pattern>
    </servlet-mapping>
...

答案 1 :(得分:1)

是的,你需要带有至少2个标签的web.xml:

   <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.bla.blah.MyServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/myservlet</url-pattern>
    </servlet-mapping>

在JSP中,您需要使用:

<jsp:forward page="/myservlet"/>

<jsp:forward page="/mywarfilename/myservlet"/>

答案 2 :(得分:0)

只是一些事情

  • 在我看来,你忘了你的网络背景
  • 你不应该转发到MyServlet.java,但是你应该使用你在web.xml中指定的映射

安吉洛

答案 3 :(得分:0)

如果你将HttpServletRequest#contextPath追加到表达语言的路径中会更好:

<jsp:forward page="${request.contextPath}/MyServlet"/>

此外,最好不要使用scriptlet,使用JSTL可以实现相同的行为:

<c:if test="${empty car_1}">
    <jsp:forward page="${request.contextPath}/MyServlet"/>
</c:if>