java web项目中servlet类、jsp、html ,xml路径问题

在java web项目中经常出现 目标文件不存在的情况,究其原因,一般是访问的路径不对。一般我们使用路径只有两种,一种是绝对路径,另一种是相对路径。在文章中exam表示的是我们java web的项目名称。
一、在web.xml文件中:

<servlet-mapping>
    <servlet-name>ArithmeticServlet</servlet-name>
    <url-pattern>/ArithmeticServlet</url-pattern>
 </servlet-mapping>

/表示绝对路径的是当前项目的项目路径:http://localhost:8080/exam/
如果不加上/则无法运行tomcat。在xml文件url-pattern中的路径映射的写法还可以加上我们文件的包名如/com/ArithmeticServlet,它只是为了让访问者在web服务器访问该servlet文件。
二、在jsp、html文件中有两种情况:

1<formmethod="post" action="/exam/ArithmeticServlet">

/exam/ArithmeticServlet表示的完整绝对路径是:
http://localhost:8080/exam/ArithmeticServlet
/表示的是tomcat的根路径(http://localhost:8080/)
2、`
表示的相对路径时:http://localhost:8080/exam/ArithmeticServlet
在jsp、html文件中描写路径时,如果在文件路径的最前面写上/时,就要将则表示的是根路径,这时我们需要加上我们的项目名,如果用的是相对路径,则默认我们是从项目路径开始的(http://localhost:8080/exam/XXX)

三、在java的servlet类
在java的servlet类中,我们会经常用到重定向和转发
1、request.getRequestDispatcher("/result.jsp").forward(request, response);
在getRequestDispatcher()方法中传入的路径参数必须带有/,
/result.jsp表示的是:http://localhost:8080/exam/result.jsp
2、response.sendRedirect("index.jsp");
在上面的代码中路径表示为相对路径,完整表示为http://localhost:8080/exam/index.jsp
response.sendRedirect("/index.jsp");表示的是在根路径(http://localhost:8080/)下面的index.jsp文件

提醒:
建议使用相对路径,相对路径是相对于当前浏览器地址栏的路径(源地址),因为在我们项目中,有时候项目名之类的会更换,如果使用绝对路径,这样会导致我们后期更改路径任务过多,而相对路径则不用考虑这一点。

你可能感兴趣的:(Java)