java servlet 路径问题_java ee jsp servlet路径问题总结

1. 根路径

> 服务器根路径

- url: http://localhost:8080/

- /

> 项目根路径

- url: http://localhost:8080/14_path_war_exploded

- /14_path_war_exploded

2. 相对路径和绝对路径

> 相对路径: 相对于当前位置进行定位的方式 (不以/开头,以.开头的路径)

通过相对路径不可以确定唯一资源

如:./index.html

规则:找到当前资源和目标资源之间的相对位置关系

./:当前目录

../:后退一级目录

/:根目录

> 绝对路径: 与当前位置无关, 直接从服务器根路径进行定位的方式 (以/开头)

通过绝对路径可以确定唯一资源

如:http://localhost/day15/responseDemo2 /day15/responseDemo2

规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出

给客户端浏览器使用:需要加虚拟目录(项目的访问路径)

建议虚拟目录动态获取:request.getContextPath()

, 重定向...

resp.sendRedirect(req.getContextPath() + "/b/bb/bbb/bbb.html");

给服务器使用:不需要加虚拟目录

转发路径

req.getRequestDispatcher("/b/bb/bbb/bbb.html").forward(req, resp);

3. 标签, 用于在页面中指定当前位置的默认地址.

标签为页面上的所有链接规定默认地址或默认目标。使用 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。

标签必须位于 head 元素内部。

绝对路径=base路径+引用路径(img_src,a_href等等内设置的路径)

假设图像的绝对地址是:

pic.gif

现在我们在页面中的 head 部分插入 标签,规定页面中所有链接的基准 url:

在上例中的页面上插入图像时,我们必须规定相对的地址,浏览器会寻找文件所使用的完整 URL:

pic.gif

4. 后台代码中的路径问题

> web.xml中的路径, /表示项目根路径

> 页面跳转时的路径问题

- 请求转发, /代表是项目根路径

- 响应重定向, /代表是服务器根路径

路径相关代码

3fc9dba0e8798c13b752c491c3fd11b8.png

前台的路径问题

在前台代码中/代表服务器根路径 http://localhost:8080/

Title

AAAA

当前位置

服务器根路径

项目根路径

后台配置文件及Servlet中的路径问题

> 在web.xml中, /代表项目根路径http://localhost:8080/14_path_war_exploded

> 在请求转发中, /代表项目根路径http://localhost:8080/14_path_war_exploded

> 在响应重定向中, /代表服务器根路径http://localhost:8080/

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

path

com.bjsxt.servlet.PathServlet

path

/c/cc/path

public class PathServlet extends HttpServlet {

@Override

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println("servlet执行了...");

// 页面跳转, 跳转到bbb.html页面

// 相对路径, 此处的当前位置是servlet的访问路径, 比较费劲, 建议使用绝对路径

// req.getRequestDispatcher("../../b/bb/bbb/bbb.html").forward(req, resp);

// 绝对路径, 还是以/开头, 此时, /代表项目根路径(http://localhost:8080/14_path_war_exploded)

// req.getRequestDispatcher("/b/bb/bbb/bbb.html").forward(req, resp);

// resp.sendRedirect("../../b/bb/bbb/bbb.html");

// 响应重定向时, /代表服务器根路径(http://localhost:8080/)

resp.sendRedirect(req.getContextPath() + "/b/bb/bbb/bbb.html");

}

}

在登录问题中的路径跳转问题

在以下跳转servlet问题中,有两种路径设置方法

一是设定一个base标签为页面上的所有链接规定默认地址或默认目标。

二是直接使用绝对路径

Title

--%>

欢迎来到学生管理系统

当前用户:

安全退出--%>

安全退出

logout

com.cw.servlet.LogoutServlet

logout

/logout

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值