Java JSP调用Servlet(不工作)

Java JSP调用Servlet(不工作),java,jsp,servlets,request,Java,Jsp,Servlets,Request,我正在JSP页面上尝试以下代码: <% if((ArrayList<Car>) session.getAttribute("car_1") == null){ %> <jsp:forward page="/MyServlet.java"/> <%}%> 当我运行我的项目时,我得到错误404和消息:“请求的资源不可用。” 我想问题在于web.xml(我没有)。可能是?您只是链接到上下文中包含的MyServlet.java文件

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

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

当我运行我的项目时,我得到错误404和消息:“请求的资源不可用。”


我想问题在于web.xml(我没有)。可能是?

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

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

<jsp:forward page="/MyServlet"/>
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>
...

MyServletName
您的.package.MyServlet
MyServletName
/MyServlet
...

只有几件事

  • 在我看来,你似乎忘记了你的网络环境
  • 您不应该转发到MyServlet.java,但应该使用在web.xml中指定的映射

Angelo

是的,您需要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>

MyServlet
com.bla.blah.MyServlet
MyServlet
/myservlet
在JSP中,您需要使用:

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


如果您以表达式语言的形式附加到路径中,效果会更好:


另外,最好不要使用Scriptlet,您可以使用JSTL实现相同的行为:



您真的打算链接到servlet的源代码吗?谢谢,但现在我明白了:HTTP监视器的服务器端组件检测到一个java.lang.StackOverflower错误。当web模块中存在无限循环时,就会发生这种情况。在再次运行web模块之前,请更正无限循环的原因。错误消息似乎回答了这个问题,不是吗?检查servlet代码中是否存在无限循环。@niarb似乎是在转发到servlet,在servlet中是在转发到JSP,JSP将再次转发到servlet,而servlet将再次转发到JSP。。。你明白了。如果你是通过注释映射web.xml,你并不需要它。是的,我已经试过了…但是netbeans/tomcat给了我这个错误:在上下文路径/MyProject上部署应用程序失败,但是上下文无法启动C:\Users\tcm\Documents\NetBeansProjects\MyProject\nbproject\build impl.xml:1050:模块还没有部署。很难说。看起来servlet本身有问题。检查Tomcat日志目录下的所有Tomcat日志文件,尤其是catalina.out,您可能会在那里找到更多信息。它不应该是
/mywarfilename/myservlet
,而应该是
${request.contextPath/myservlet}
<jsp:forward page="/myservlet"/>
<jsp:forward page="/mywarfilename/myservlet"/>