JavaWeb路径问题打包总结--小心出门右转404
话说,培训和自学就不是一个回事,两周讲完java基础,两天讲完jsp,两节课讲完servlet,还真不是一般人能受得了的,这两天学习jsp和servlet频繁被路径问题困扰,倒不是出错,只是各种action,各种请求转发,又各种重定向,还要配置web.xml的url-pattern,很头大,花了一晚上时间,整理了javaweb学习过程中的路径问题:
首先我来整理一下会涉及到路径的几个相关操作:
一:客户端路径
1:超链接 (<a href="........"></a>)
2: 表单(<form action="......"></form>)
3: 重定向 (response.sendRedirect("........"))
二:服务器端路径
4: 转发(request.getRequestDispatcher("......").forword(request,response))
5: 包含(request.getRequestDispatcher("......").include(request,response))
6: url-pattern( <url-pattern>.......</url-pattern>)
ok,首先我们来说客户端路径,这种路径分为三种:
*绝对路径
*以“/” 开头的相对路径
*不以“/”开头的相对路径
绝对路径没什么好说的,如你的路径为“http://localhost:8080/javaWeb/index.jsp”,访问绝对不会出问题,最终访问的页面,就是你输入的页面。
如果你以“/”开头,那么最终访问的路径是相对当前主机的,路径中要加项目名,
如“/javaWeb/index.jsp”,它最终访问的页面是“http://localhost:8080/javaWeb/index.jsp”
如果不以“/”开头,那么最终的访问路径是相对于当前页面的,假设你当前处在“http://localhost:8080/javaWeb/a.jsp”下,而你输入的路径为“index.jsp”,那么它最终的访问页面是“http://localhost:8080/javaWeb/index.jsp”
个人感觉还是使用“/”开头的路径比较好,先是项目名,再是要访问的文件名,这样看上去一目了然。
接下来再说服务器端路径,服务器端路径很明显不能是绝对路径,必须是相对路径,但相对路径有两种形式:
*以“/” 开头的相对路径
*不以“/”开头的相对路径
这里着重说明一下,以“/”开头的相对路径,对于服务端和客户端路径来说是不同的,上面说的以“/”开头的客户端路径是相对于当前主机,而以“/”开头的服务器端路径是相对于当前应用,举个例子,假设你在一个Aservlet页面上执行请求转发操作,Aservlet所在路径为“http://localhost:8080/javaWeb/servlet/Aservlet“ ,
你写的路径为request.getRequestDispatcher("/Bservlet").forword(request,response),那么最终访问的页面将是“http://localhost:8080/javaWeb/Bservlet”!看到区别没有??并不是“http://localhost:8080/Aservlet”哟!!假设你写的路径是request.getRequestDispatcher("Bservlet").forword(request,response),这次是不带“/”的路径,那么你将访问到的路径是“http://localhost:8080/javaWeb/servlet/Bservlet, 对于请求包含操作是一样的道理,看到区别没有,总结一下就是:
以"/"开头的服务器端路径是相对于当前应用的,即当前项目名下的!
不以"/"开头的服务器段路径是相对于当前操作页面的,即当前页面所在文件夹中的。
最后说一下,url-pattern路径,一句话就是:此路径必须为“/”开头,是相对于当前应用的。
总结完毕,以上皆为手打,可能有手误,作为参考,希望各位看完对路径能有更深入的了解,至少做到各回各家各找各妈,不要走错道了就ok了~
首先我来整理一下会涉及到路径的几个相关操作:
一:客户端路径
1:超链接 (<a href="........"></a>)
2: 表单(<form action="......"></form>)
3: 重定向 (response.sendRedirect("........")) 二:服务器端路径 4: 转发(request.getRequestDispatcher("......").forword(request,response))
5: 包含(request.getRequestDispatcher("......").include(request,response))
6: url-pattern( <url-pattern>.......</url-pattern>)
ok,首先我们来说客户端路径,这种路径分为三种:
*绝对路径
*以“/” 开头的相对路径
*不以“/”开头的相对路径 绝对路径没什么好说的,如你的路径为“http://localhost:8080/javaWeb/index.jsp”,访问绝对不会出问题,最终访问的页面,就是你输入的页面。
如果你以“/”开头,那么最终访问的路径是相对当前主机的,路径中要加项目名,
如“/javaWeb/index.jsp”,它最终访问的页面是“http://localhost:8080/javaWeb/index.jsp”
如果不以“/”开头,那么最终的访问路径是相对于当前页面的,假设你当前处在“http://localhost:8080/javaWeb/a.jsp”下,而你输入的路径为“index.jsp”,那么它最终的访问页面是“http://localhost:8080/javaWeb/index.jsp”
个人感觉还是使用“/”开头的路径比较好,先是项目名,再是要访问的文件名,这样看上去一目了然。
*不以“/”开头的相对路径
这里着重说明一下,以“/”开头的相对路径,对于服务端和客户端路径来说是不同的,上面说的以“/”开头的客户端路径是相对于当前主机,而以“/”开头的服务器端路径是相对于当前应用,举个例子,假设你在一个Aservlet页面上执行请求转发操作,Aservlet所在路径为“http://localhost:8080/javaWeb/servlet/Aservlet“ ,
你写的路径为request.getRequestDispatcher("/Bservlet").forword(request,response),那么最终访问的页面将是“http://localhost:8080/javaWeb/Bservlet”!看到区别没有??并不是“http://localhost:8080/Aservlet”哟!!假设你写的路径是request.getRequestDispatcher("Bservlet").forword(request,response),这次是不带“/”的路径,那么你将访问到的路径是“http://localhost:8080/javaWeb/servlet/Bservlet, 对于请求包含操作是一样的道理,看到区别没有,总结一下就是:
不以"/"开头的服务器段路径是相对于当前操作页面的,即当前页面所在文件夹中的。
最后说一下,url-pattern路径,一句话就是:此路径必须为“/”开头,是相对于当前应用的。
总结完毕,以上皆为手打,可能有手误,作为参考,希望各位看完对路径能有更深入的了解,至少做到各回各家各找各妈,不要走错道了就ok了~
JavaWeb路径问题打包总结--小心出门右转404的更多相关文章
- Vue build打包之后,刷新页面出现404解决方案
Vue build打包之后,刷新页面出现404,HTML5 History 模式 原因分析: vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于 ...
- webpack踩坑之路——图片的路径与打包
转自:http://www.cnblogs.com/ghost-xyx/p/5812902.html 刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不 ...
- webpack图片的路径与打包
转的http://www.cnblogs.com/ghost-xyx/p/5812902.html 今天写 react遇到打包图片,之前都是通过url在css里,没遇到问题,今天在 react里直接用 ...
- JavaWeb(七)之详解JavaWeb路径
前言 在我们的实际开发中,经常要写路径,不管是链接,重定向还是转发,这都是需要路径的.那这一篇我给大家详细的分享一下Web中的各种路径问题. 世界上一切东西都是相对的,对于这点而言,相信大家并不陌生, ...
- webpack踩坑之路 (2)——图片的路径与打包
刚开始用webpack的同学很容易掉进图片打包这个坑里,比如打包出来的图片地址不对或者有的图片并不能打包进我们的目标文件夹里(bundle).下面我们就来分析下在webpack项目中图片的应用场景. ...
- JavaWeb 路径问题
路径问题 CreateTime--2016年9月22日15:19:56 Author:Marydon 一.jsp页面 src="../demo/clazz/clazz_add.js&qu ...
- vue打包之后找不到图片路径,打包项目时,dist文件夹内部分图片找不到
1.打包项目时,会默认把存放在public内的小于4k的图片转换成base64,作为内联样式. 可以在vue.config.js中修改默认大小,在chainWepack:config=>{}中添 ...
- eclipse实现JavaWeb应用增量打包
很多情况下,项目是不允许全量发布的,所以你得把有做修改的文件一个个挑出来,如果有成千上百的文件,你是不是要头大了? 以下方法应该可以让你得到解救!前提是你是用装有svn plugin的eclipse上 ...
- JavaWEB路径总结
这篇文章是小编一直想写的一篇,主要是对web阶段中各个路径进行的一些总结,希望读者看过之后对于路径方面有一个清晰的认识.首先声明一点:世界上一切东西都是相对的,对于这点而言,相信大家并不陌生,从初中开 ...
随机推荐
- android的EditText重新获取焦点问题
在android开发过程中关于EditText在setFocusable(false);后,当需要再次获得焦点输入时设置setFocusable(true);后还是无法获得焦点的问题: 解决办法: 对 ...
- 【luogu】 P1880 石子合并
原题原题原题原题原题 先贴上错误代码... ↓错误代码↓ #include <iostream> #include <cstdio> #include <cstring& ...
- mongodb的修改器
在mongodb中通常文档只会有一部分要更新,利用原子的更新修改器,可以做到只更新文档的一部分键值,而且更新极为高效,更新修改器是种特殊的键,用来指定复杂的更新操作,比如调整.增加.或者删除键,还可以 ...
- java基本类型的默认值及其取值范围
- PHP的函数应用
1.全部变量 全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的结尾.和其他编程语言不同,全局变量不是自动设置为可用的.在PHP中,由于函数可以视为单独的程序片 ...
- Mysql修改root密码
一.启动命令行,输入: taskkill /f /im mysqld.exe //关闭mysql 二.转入mysql的bin目录下 三.输入:mysqld --skip-grant-tables // ...
- shell简单用法笔记(一)
一.linux中主要用的bash shell:查看linux系统中支持的shell种类可用: vim /etc/shell 执行shel脚步的方式: 1.赋予脚步可执行权限,使用相对或绝对路径调用该脚 ...
- SQLite3
记录一个基础的IOS下SQLite的例子: @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSAr ...
- 旺信UWP正式版发布
下载链接:https://www.microsoft.com/store/apps/9nblggh5lq9x 各位园主好,在旺信Beta版发布后近两个月,我们的新版本1.1.0终于上线了,并且更名为旺 ...
- [开源]C#二维码生成解析工具,可添加自定义Logo
二维码又称 QR Code,QR 全称 Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的 Bar Code 条形码能存更多的信息,也能表示更多的数据类型:比如:字 ...