【idea】关于idea中Java Web项目的访问路径问题

关于本篇,可以结合之前一篇来理解:

【IDEA】javaweb下的web.xml文件中出现servlet should have mapping问题/servlet的映射问题

另外本篇博客参考了另外一位大佬博主(@WinstonLau)的文章,非常感谢大佬

idea中Java Web项目的访问路径问题

另外,IDEA确实是一款很好用的IDEA,在逐步上手后我逐渐喜欢上了它……

————————————————————————————————————————————————————————

IDEA在出上手学习时,甚至说在刚开始学习JSP时,我们最大的一个问题在于对文件路径的使用

这是我的一个:

项目结构

如图看出,大体上我们的创建的项目文件为两大部分,一部分在包中,一部分在web文件夹中

默认访问路径

  • 项目的基本配置后(基本配置方法在这里),启动 Tomcat,会发现直接出现的是 index.jsp 页面,此时浏览器的地址栏显示的是:localhost:8080,也就是说项目默认跳转到了 index.jsp 页面,而且打开 web.xml 文件后,我们发现这里并没有配置 index.jsp 为首页(注:关于首页问题,也可以参考:在这里
  • 非常重要的一点:做开发测试时,如果用了 index.jsp 这个页面做测试,一定要分清楚项目是启动的时候直接就跳转到了这个页面,还是经过了其它的路径才跳转到了这个页面,如果没有这个意识的话,很可能在实际开发中会出现问题,所以一般不推荐用 index.jsp 作为测试页面
  • 还是之前的设置不变,当我们在浏览器输入 localhost:8080/index.jsp 时,会发现显示的仍然是 index.jsp 页面,也就是说,jsp 页面的访问路径是直接从项目的 web 目录的下一级目录开始的,我们这里的 index.jsp 由于就是直接处于 web 目录的下一级,所以直接在 localhost:8080/ 后面加上文件名
     

idea中独有的路径配置

如图,这里的值是idea一个非常独特的路径地址设置

Application context 中填写的值会直接加到 localhost:8080 的后面

以之前的例子来说,本来 index 的访问路径是 localhost:8080/index,如果在 Application context 中填写的是 /haha,那么其访问路径就变成了 localhost:8080/haha/index

这对于类和 jsp 页面的访问路径也是同样的道理


jsp页面的访问路径

因为默认访问路径就是web 目录的下一级目录

所以在使用时直接/name.jsp即可

如果在web目录的某个文件夹下,则变成/文件夹/name.jsp即可

servlet文件的访问路径

  • servlet 文件的访问路径我们可以在 web.xml 中自己配置(使用的是 url-pattern 标签,搭配mapping使用,详情见:【IDEA】javaweb下的web.xml文件中出现servlet should have mapping问题/servlet的映射问题),或者是使用注解的形式(使用的是 urlPatterns 属性)
  • 不管采用哪种形式,其对应的值都和我们的访问路径有关(如果两种形式同时采用,实测只有 web.xml 中的配置生效,也就是说此时如果以注解中配置的路径来访问 servlet 是会报 404 的)

web.xml 中自己配置的方式:

如果我们在 web.xml 中对其所做配置如下,则访问路径为 localhost:8080/save 或者是 localhost:8080/taor.no72.save

特别注意:如果这里mapping里的 url-pattern 的值写的是 /*,那么当我们在浏览器的地址栏输入 localhost:8080 甚至是 localhost:8080/index.jsp 或者是 localhost:8080 后面跟上任何合法的字符串,访问的都是save这个 servlet 类,换而言之,基本上通过这个方式可以实现屏蔽用户的自由访问

使用注解的形式:

(这里直接引用@WinstonLau的文章)

如果我们使用注解的方式对其所做配置如下,则访问路径为 localhost:8080/DemoServlet

特别注意:name 属性的值需要和web-inf中对应的servlet类名一致!

 

注意!mapping和注解在使用上还是有区别的!

刚刚在写留言本页面时,使用了jsp的form表单传递给servlet,然后再在原jsp上显示新增留言内容的一个结构

刚开始使用mapping,最后出现jsp页面提交后刷新一下没变化(没提交到servlet,使用debug模式没有到断点)

之后在改用注解

@WebServlet("/show")//这里原先使用了mapping功能,失败后使用注解成功

并且将相关的servlet在web.xml文件中注释掉后,则留言本刷新成功

这里出现的原理日后研究后,会在这里给出

  • 24
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值