请求路径的奇葩之处(一)

首先必须声明这是基于java的web请求,至于其他的语言,估计也没多大差别,因为都是通过servlet请求的。

<form action="r/addUsers" method="GET" onsubmit="return back();">
首先返回的正确路径应该是http://localhost:8080/OnlineC/r/addUsers
action中的路径一般写相对,若写绝对地址,默认是从服务器根开始(http://localhost:8080),因为container是从server开始分析的,action="/OnlineC/r/addUsers";
由此可以看出请求实际上是以项目根路径为基础路径


对于HttpServletResponse.sendRedirect(String path)
如果是相对路径就是相对当前的路径,比如当前路径是:
http://localhost:8080/OnlineC/r/findAll
想要请求到http://localhost:8080/OnlineC/r/findFiles
则可以在请求中
<h3><a href="/OnlineC/r/findFiles">查看文件</a></h3>//从servlet根开始<h3><a href="findFiles">查看文件</a></h3>//相对于当前路径
如果是web url 则可以直接请求response.sendRedirect(“http://www.baidu.com)


HttpServletRequest.getRequestDispatcher(String)
相对路径情况下生成的完整URL与sendRedirect方法相同。

绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL,即:req.getRequestDispatcher("/billList.jsp").forward(req, res);
这里会去http://localhost:8080/OnlineC/billList.jsp请求 ,正是我要的,但是url因为是转发,所以地址不变
http://localhost:8080/OnlineC/r/findAll

注意这里getRequestDispatcher  绝对路径是默认在项目根目录下http://localhost:8080/OnlineC
sendRedirect   绝对路径是servlet根目录下http://localhost:8080

但是这次自己写的项目发现一个怪出,明天搞出来后再续。


你可能感兴趣的:(Web,servlet)