Servlet 6:路径问题

1. web项目中的路径问题
路径WebContent/path/ 下面
俩个页面:
pathA.html
A页面中有超链接,链接到B页面

 <a href="pathB.html">pathB.html</a>

pathB.html

一个servlet的映射路径:
/PathServletTest
这个servlet里面服务器内部直接跳转到A页面

注意: 相对路径,指的是相对于当前路径,当前路径指的是当前地址栏里面的路径.

正常情况:
直接访问A页面:
…web_test/path/pathA.html
点击超链接:href=“pathB.html”
…web_test/path/pathB.html

404的情况:
先访问servlet,再跳转到A页面:
…web_test/PathServletTest
这时候页面显示的是A页面,因为servlet跳转了.
点击超链接:href=“pathB.html”
…web_test/pathB.html

因为要访问到pathB.html需要这样的路径:...web_test_servlet/path/pathB.html

所以上面的这种情况就报错了 404

2. 路径中最左边的/
例如 :一个servlet的映射路径
/servlet/test/myfristservet
这里的第一个/就是我们要讨论的.
路径中其他/都是表示路径的分割。

注意: 如果路径最左没有/,那么路径就是要按照当前路径算,如果最左边有/,那么这个路就要按照这个/所代表的含义来算。

这个/一般会有俩种含义:

http://ip:port/

1.代表地址栏中端口号后的那个/
例如:在这种情况下
/test.html
相当于:

http://ip:port/test.html


http://ip:port/项目名字/

2.代表地址栏中项目名字后的那个/
例如:在这种情况下

/test.html 

相当于:

http://ip:port/项目名字/test.html

注意:这里指的都是路径最左面的/
特点: 和客户端相关的路径中的/

 http://ip:port/

a. html页面中的/代表地址栏中端口号后的那个/
b. 客户端重定向中的/代表地址栏中端口号后的那个/

特点:和服务器端相关的路径中的/

  http://ip:port/项目名字/

c. web.xml文件中的/代表地址栏中项目名字后的那个/
d. 服务器内部跳转中的/代表地址栏中项目名字后的那个/

package com.briup.web.Servelt;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class PathServlet
 */
@WebServlet("/Ps")
public class PathServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//内部跳转前加斜杠不加斜杠都行
		//重定向加斜杠会拼接到端口后面
        //response.sendRedirect("/pathA.html");
	request.getRequestDispatcher("path/pathA.html").forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}



<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PathA</title>
</head>
<body>
<a href="pathB.html">点击</a>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>PathB</title>
</head>
<body>
PathB
</body>
</html>
访问的地址栏路径
http://127.0.0.1:8888/jd1812_web/path/pathA.html
http://127.0.0.1:8888/jd1812_web/Pr
http://127.0.0.1:8888/jd1812_web/pathB.html(地址错误)
方法一:(更改后台代码)
Servlet中更该访问注解:"path/Ps"
方法二:(更该前台代码)
1."path/pathB.html"
2.绝对路径:"jd1812_web/path/pathB.html"
3.全访问路径:"http://127.0.0.1:8888/jd1812_web/path/pathB.html"

注意:重定向和from表单、超链接中的相对地址前加斜杠都表示连接到端口号后面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值