问题详情
在最近的Servlet的学习中,我意外的发现以前写在webapp文件夹里的页面文件使用idea打开全部都有问题。
html文件
可以打开,但显示异常,大家可以看看有什么问题
导航栏显示如下:localhost:63352/web(项目名称)/src/main/webapp/a.html?(参数)
首先服务器使用的端口是随机生成的63352,并不是Tomcat的8080,另外我的html也不需要参数赋值
jsp文件
直接是以文件的形式打开,显示源代码
导航栏显示如下:文件|D:/中间是文件的磁盘路径/
解决办法
临时方法
我在论坛上翻了10个帖子就有8个说的都是这种,就是在文件路径前删掉磁盘路径,将localhost:8080(你的服务器端口号)就可以打开。但是这个方法只能救急,而且只能打开单独的jsp文件。如果我的a.jsp要跳转到b.jsp文件上,即使我打开a.jsp的时候加上了路径,跳到b页面的时候任然是文件的源码。
长期办法
这个就是其他楼主说的是web.xml文件的问题,是写Spring 项目的时候把杠※改成/就好了,我的项目也没有用Spring框架,而且也没有写过 /.但问题的关键就是web.xml。最近刚学了Servlet的生命周期和如何注册,于是我将对应的注册代码全部注释掉,结果就恢复正常了。太不容易了。
后面我翻到了另外一个博主的帖子,和我的情况一样,我的想法是可能Tomcat自己内置了一个类似Servlet的东西,可以处理浏览器上的请求并发送响应,把对应的jsp转换为html。但是我们自己注册了Servlet之后就不用内置的那个了,就和构造器一样,这只是我的一点想法,后面查到官方资料会分享给大家的。
webServlet
那注册没了是可以正常用了,但我的Servlet不装载了,怎么办,自从
Servlet3.0以后可以不用再web.xml里面注册servlet,只需要加上@WebServlet注解就可以设置该servlet的属性了。
以我为例。
对应的属性分别为:
name对应的是Servlet的名字,同注册中的
<servlet-name>first</servlet-name>-->
<servlet-class>servlet.FirstServlet</servlet-class>-->
urlpattern对应的是注册中的路径
<servlet-name>first</servlet-name>-->
<url-pattern>/first</url-pattern>-->
loadOnStartup对应注册中的 加载顺序,只能填大于0的整数
,数字越小越先加载
<!-- 使Servlet被加载时自动装载,实例化,初始化,中间放大于等于0的数,数字
表示第几个被加载-->
<!-- <load-on-startup>30</load-on-startup>-->
这是我来CSDN写的第一篇博客,希望各位大佬有不对的地方及时指出,共同进步