javaweb中的网络路径问题

最近在学习javaweb的过程中,各个地方的路径写法都不同,有时候需要带着项目名,有时候不带,下面来看一下。

先来看需要带着项目名的:

1.在表单的action属性中:

2.servlet中的重定向:

 

再来看不需要写项目名的:

1.servlet中的注解配置:

2.servlet请求转发中的 :

 

看到上述两个例子,头肯定很大。为什么有的需要加项目名,有的不需要?又为啥要在前面加一个 / 斜杠

首先我们得弄清楚路径可以分成三种:绝对路径,相对路径,根路径。我们在javaweb中多使用根路径,即/开头的路径。

 

首先搞清楚什么是绝对路径:

        在javase中,绝对路径很好理解,比如:F:\数据结构课设\中xxx地图.txt 这就是一个绝对路径,表示F磁盘下的数据结构课设目录下的一个txt文件。

        而在javaweb中,绝对路径指的是从协议比如http写到IP地址,在写到端口,再写项目名,再写资源文件名字。这才算得上是一个绝对路径。比如 http://localhost:8080/XiaoMiShopping/register.jsp这就是绝对路径。

 

什么是相对路径:

下面这是几个相对路径的使用例子,文件的目录结构如上图

javaweb中相对路径并不推荐使用,因为容易引起混乱。

在网上查到说:servlet相对路径跳转是相对于servlet配置的xml路径(或servlet3.0注解路径)

 

什么是根路径:开头是 / 的路径:比如/MyServletCls103。但是其中的 / 需要引起注意,这个 / 代表着什么?

可以看出:如果要在浏览器中解析/,那么这个/代表的是http://localhost:8080/ ,只解析到端口号,所以还需要我 们写上项目名。

                  如果是在服务器中解析 /,那么/代表的是 http://localhost:8080/项目名,已经把项目名解析出来了,所以不需要我们写项目名。

还有两个小疑问:

        1. 在浏览器地址栏输入 http://localhost:8080/XiaoMiShopping/register.jsp 为什么可以直接拿到register.jsp这个资源?我们在编写程序的时候明明是有目录结构的,register.jsp上级目录明明是webcontent,如图:

这是项目XiaoMiShopping在eclipse中的截图

为什么可以不用写webcontent就能拿到这个资源??

答:因为我们在eclipse中写好的程序在发布到tomcat服务器的时候,目录经过了改变,tomcat只拿取了webcontent目录下的文件。比如这个XiaoMiShopping项目,发布到tomcat之后,tomcat服务器中的目录结构是这样的:

可以看到,在tomcat结构中,register.jsp是直接位于XiaoMiShopping这个项目之下的。所以我们访问的时候可以直接写项目名/register.jsp就能拿到这个资源。

 

2. 那么为什么在javaweb中访问src下的包中的servlet也可以直接这样:http://localhost:8080/XiaoMiShopping/UserServlet  就是项目名下直接写该servlet的名字就可以访问到,不需要写src和包名?

 答:因为Servlet在配置文件中被虚拟路径映射到了项目的根目录下,和前端页面位于同一级目录

 

 

以上解答参考网址:https://blog.csdn.net/yuanmomoya/article/details/82527334

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值