![6c203ee6553ba43a1dd6c6a015009263.png](https://i-blog.csdnimg.cn/blog_migrate/a97e5278736ded4977746b83b055f585.jpeg)
首先先明确一下下列URL的
假设一个URL是这样的losthost:8080/myservlet/path
服务器根路径:losthost:8080/
项目根路径:losthost:8080/myservlet/
明确了服务器根路径和项目根路径之后,我们就可以开始学习后面的知识了
servlet路径问题
请求转发和重定向的相对路径写法总结:
Servlet重定向jsp
resp
Servlet请求转发jsp
req
服务器根目录
服务器的webapps目录路径 localhost:8080/
项目根目录
服务器的webapps目录下项目路径 localhost:8080/jsp/
注意:
以上两种写法其实都是相对路径,相对路径指的是从当前请求路径查找jsp所经过的路径。
请求转发和重定向的绝对路径写法总结:
重定向:
在重定向中的路径中第一个/表示服务器根目录。
示例:
resp
请求转发:
在请求转发中第一个/表示项目根目录
示例:
tDispatcher
jsp路径问题
精华总结:
- 在jsp页面中进行资源之间的跳转时,使用绝对路径 。
- 在jsp中路径中的第一个/表示服务器根目录。
- 在Myeclipse中创建的jsp页面会自动生成路径处理代码basePath而basePath的值为当前项目 根目录。
- request.getSchema()返回的是当前连接使用的协议,一般应用返回的是http、SSL返回的是https;
- request.getServerName()返回当前页面所在的服务器的名字;
- request.getContextPath()返回当前页面所在的应用的名字。
问题:
在jsp页面中进行资源之间的跳转时,如果书写的是相对路径这样会造成如果当前文件的路径发生变更,从当前路径查找资源的相对路径都要重新进行书写。
解决:
将相对路径编程绝对路径
使用:
在jsp中路径中的第一个/表示服务器根目录。
示例:
<
注意:
Myeclipse
创建的jsp页面会自动生成路径处理代码basePath
而basePath的值为当前项目根目录,并且在head标签中使用了
<base href="<%=basePath%>">
相当于将当前页面的资源全部默认定位为从项目根目录开始查找,我们就不需要写第一个/了
IDEA
需要手动输入或者更改模板
![e8f496707202d1e49c06a8daf69ea454.png](https://i-blog.csdnimg.cn/blog_migrate/06da7a4b6a8623a50c82ed280102d900.jpeg)
页面报错处理
![6069265efab3c25c98eb1af266aa5eaf.png](https://i-blog.csdnimg.cn/blog_migrate/8d7cd1558d12c5a1f47d5f933b8ac339.jpeg)
注意:
basePath方式和添加/方法只能二选一。
![54ec576b515569dcbaeb07f47a317c0c.png](https://i-blog.csdnimg.cn/blog_migrate/714757802e56f6c839a8517850565039.png)
<%
![366a55f15766003368c9a49a17d481c8.png](https://i-blog.csdnimg.cn/blog_migrate/eb84aad94f88d36052f25160a9b98447.jpeg)