Java JSP调用Servlet(不工作)
我正在JSP页面上尝试以下代码: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文件
<%
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"/>