如何在Javaservlet项目中引用更高层次的文件
我正试图在netbeans中为一个javaweb应用程序项目实现一个基本的mvc模式。我的部署描述符(web.xml)是正确的,但似乎无法从Javaservlet本身重定向到正确的jsp。以下是我的项目文件夹的目录:如何在Javaservlet项目中引用更高层次的文件,java,model-view-controller,servlets,Java,Model View Controller,Servlets,我正试图在netbeans中为一个javaweb应用程序项目实现一个基本的mvc模式。我的部署描述符(web.xml)是正确的,但似乎无法从Javaservlet本身重定向到正确的jsp。以下是我的项目文件夹的目录: /project /src /conf MANIFEST.MF /java /ph /com /client /esurvey /objects
/project
/src
/conf
MANIFEST.MF
/java
/ph
/com
/client
/esurvey
/objects
/* other .java files */
/servlets
ManageSurveysServlet.java
/* other .java files */
/build
/empty
/web
index.jsp
manage_surveys.jsp
script.js
style.css
/META-INF
context.xml
MANIFEST.MF
/WEB-INF
web.xml
/classes
.netbeans_update_resources
.netbeans_automatic_build
/ph
/com
/client
/esurvey
/objects
/* .class files found here */
/servlets
ManageSurveysServlet.class
/* other .class files found here */
来自index.jsp
的链接调用ManageSurveyServlet
,后者反过来转发请求
对象,并重定向到manage_surveys.jsp
,但鉴于上述目录,我不知道从servlet引用manage_surveys.jsp
的路径/文件名。以下是转发请求对象的servlet中的代码:
request.setAttribute("surveys", surveys); // surveys is an arraylist
RequestDispatcher dispatcher = request.getRequestDispatcher("manage_surveys.jsp"); // i'm guessing it can't find the jsp
dispatcher.forward(request, response);
更新:web.xml
<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ManageSurveysServlet</servlet-name>
<servlet-class>ph.com.client.esurvey.servlets.ManageSurveysServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ManageSurveysServlet</servlet-name>
<url-pattern>/ManageSurveys</url-pattern>
</servlet-mapping>
<session-config><session-timeout>30</session-timeout></session-config>
<welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>
manageSurveyServlet
ph.com.client.esurvey.servlets.manageSurveyServlet
manageSurveyServlet
/管理调查
30
index.jsp
将manage_surveys.jsp
移动到WEB-INF
文件夹中。我认为这将是解决方案。Javadoc说给定的资源是一条相对路径。因此,在classes目录中执行意味着,您必须将jsp放在“classes”目录中,但这不是一个好主意,但出于测试原因,您可以尝试或
将代码更改为上下文根相对:
RequestDispatcher dispatcher = request.getRequestDispatcher("/manage_surveys.jsp");
RequestDispatcher dispatcher = request.getRequestDispatcher("../../manage_surveys.jsp");
或亲属:
RequestDispatcher dispatcher = request.getRequestDispatcher("/manage_surveys.jsp");
RequestDispatcher dispatcher = request.getRequestDispatcher("../../manage_surveys.jsp");
Javadoc供参考:
)我不确定,但是
“/”+request.getContextRoot()+“/manage\u surveys.jsp”
是否有效?恐怕HttpServletRequest对象request
没有getContextRoot()方法。我的错误是getContextPath()
。