JavaWeb项目的文件目录
在地址栏输入:http://localhost:8080/route/loginServlet
可以直接访问到配置的Servlet
在地址栏输入:http://localhost:8080/route/index.jsp
可以访问到webapp下面的index.jsp文件
(可以理解webapp下面的index.jsp文件和LoginServlet是在同一目录下)
总结:
以下概念解释以示例项目为例!!!
服务器(站点)根目录: http://localhost:8080/
Web应用根目录: http://localhost:8080/route(项目名)/
前端页面在服务器上的地址:
1.前端页面直接在WebContent目录(可能不同)下: Web应用的根目录/前端页面名
2.前端页面直接在WebContent目录下的一级或者多级文件夹下: Web应用的根目录/文件夹层级/前端页面名
Servlet在服务器上的地址:
Web应用的根目录/servlet名
相对路径
若在访问路径的最前端没有加上“/”,那就是使用相对路径
相对路径就是相对于当前文件的路径
测试例子:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入LoginServlet的doGet方法");
}
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com.kuang.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
例子:
在webapp文件夹下面的index.jsp文件中
点击提交按钮后,就会提交到LoginServlet中,结果可以访问到LoginServlet
在webapp文件下面的sys文件夹中建login.jsp文件(内容和index,jsp文件中的一样)
点击提交按钮:
报404错误:
http://localhost:8080/route/sys/loginServlet
因为使用的是相对路径,所以前面就有/sys,但这个路径下没有文件与之对应,所以报404错误
和前面的:http://localhost:8080/route/loginServlet比较发现多个**/sys**
绝对路径
若在访问路径的最前端加上“/”,那就是使用绝对路径
相对路径就是相对于当前问价的路径,那相对路径前缀就会被“清零”,路径从最初位置开始。
绝对路径的最初位置路径是什么呢?就是服务器的IP地址+端口号,比如在本机访问,那就是http://localhost:8080。也就是说使用绝对地址,那访问所写的路径将会被拼接到http://localhost:8080之后。
在web.xml的url-pattern标签:标签中的 "/"放在首位,代表的是Web应用根地址
在jsp与servlet页面中 “/” 有着不同的意思
- 在JSP中: “/” 代表服务器(站点)根目录
- 在Servlet中: “/” 代表Web应用的根目录
需要注意的是:
("/"在浏览器端被解析成服务器根目录
"/"在服务器端被解析成Web应用的根目录)
请求转发与请求重定向的用法有所不同
request.getRequestDispatcher("/a/a.jsp").forward(request,response);
“/a/a.jsp"中的第一个”/" 是Web应用根路径—相当于–>http://localhost:8080/route/a/a.jsp
response.sendRedirect("/b/b.jsp");
因为重定向中的方法是传递给浏览器,用于重新发送请求的,而在浏览器端 "/"代表 服务器目录 ,所以上述会重定向到 http://localhost:8080/b/b.jsp
response.sendRedirect("/route/b/b.jsp")这样浏览器重新请求的地址就为:http://localhost:8080/route/b/b.jsp
拿前面报404的例子来说明
在action的前面加上**"/"**:
点击提交后:
提交后的路径就是:
http://localhost:8080 +/loginServlet
改进:在 /loginServlet前面加上/route(/+工程名)
点击提交后可以访问到LoginServlet配置的LoginServlet:
控制台输出:
总结:
1、绝对路径就是在路径开头加“/”,那路径的起始就是服务器IP地址;
2、而相对路径就是开头**不加“/”,**而起始就是发起跳转的文件的所在路径;