在使用servlet时经常发生404错误,那么很可能是路径发生了错误。servlet项目中经常会使用到路径来进行跳转。
这里主要分为两种:
| 客户端发送请求 | 服务器内部跳转 |
|---|---|
| 超链接跳转:< a href=“url”>< /a > 表单提交:< form action=“url”> 重定向:response.sendRedirect(“url”) 等 | 请求转发:request.getRequestDispatcher(“url”).forward(request, response) 请求响应:web.xml或注解中响应路径的配置 等 |
要注意的是,重定向虽然是在servlet中进行处理,但是相当于客户端向服务端发送请求之后,服务器返回一个响应,客户端接收到响应之后又向服务端发送一次请求,因此归纳在客户端中。
在路径的使用中," / "表示的是根目录,在客户端和服务器中,根目录代表了不同的路径。
1.客户端
在客户端中,根目录表示的是站点,也就是服务器的地址。也就是说 ," / " 代表的是 " http://localhost:8080/ " 。例如,我需要访问项目下html文件的hello.html,就需要将路径写为 " /项目名/html/hello.html " ,这也就是我们说的绝对路径。
而若是不使用绝对路径,通过 " " 使用相对路径,那么在客户端中代表的是应用的地址,代表的是 " http://localhost:8080/项目名/ " 。因此我们使用相对路径来找到应用下的文件就方便多了,同样是访问项目下html文件的hello.html,我们只需要将路径写为 " html/hello.html " 就可以了。
2.服务器端
在服务器端中,根目录 " / " 代表的就是应用的地址,也就是 " http://localhost:8080/项目名/ " ,相对路径也是代表着应用的地址,不过建议在服务器端都使用绝对路径。如果在web.xml或注解中配置了使用相对路径的url来进行相应的话,会产生java.lang.IllegalArgumentException的错误。
在html页面中,配置好路径后,可以按着Ctrl并左键点击配好的路径,来检查是否可以正确地跳转。
总结:
客户端中
| " / " | " " |
|---|---|
| http://localhost:8080/ | http://localhost:8080/项目名/ |
服务器端中
| " / " | " " |
|---|---|
| http://localhost:8080/项目名/ | http://localhost:8080/项目名/(不建议使用) |
如有错漏,请指出,谢谢。
628

被折叠的 条评论
为什么被折叠?



