JavaWeb【404,The origin server did not find a current representation for the tar】、@webservlet、web.xml

参考1:https://blog.csdn.net/qq_40164190/article/details/84453912

 

参考1中重新配置tomcat

参考1:https://blog.csdn.net/qq_40164190/article/details/84453912

参考2:解决eclipse中Tomcat服务器的server location选项不能修改的问题https://blog.csdn.net/xiongyouqiang/article/details/79139242

 

!!!

我的错误不是参考一中的任何一个,大家可以看一看我这个

我要实现一个登陆A页面,然后点击跳转到B页面。但我跳转到B页面时出现了上面的问题。

看了下form中的代码确定没有拼写错误。最后确定是Login的servlet找不到,那我就很疑惑了,最后发现

我的A页面中url是用web.xml配置的,而B页面中的url是用@WebServlet注解,最后改成了A、B都用注解,然后就解决了上面的问题。

这个错误告诉我,一个项目的url配置方式一定要一样。

 

@webservlet作用:

1.

@WebServlet("/hello.view")
public class HelloServlet extends HttpServlet {}

这个注解告诉容器(如:tomcat),如果请求的url名称为“/hello.view”,则由helloservlet的实例提供服务。

2.@WebServlet(
name="Hello",
urlPatterns={"/hello.view"},
loadOnStartup=1
)
public class HelloServlet extends HttpServlet {

面的@WebServlet告知容器,HelloServlet这个Servlet的名称是Hello,这是由name属性指定的,而如果客户端请求的
URL是/hello.view,则由具Hello名称的Servlet来处理,这是由urlPatterns属性来指定的。在Java
EE相关应用程序中使用标注时,可以记得的是,没有设置的属性通常会有默认值。例如,若没有设置@WebServlet的name属性,默认值会是
Servlet的类完整名称。
当应用程序启动后,事实上并没有创建所有的Servlet实例。容器会在首次请求需要某个Servlet服务时,才
将对应的Servlet类实例化、进行初始化操作,然后再处理请求。这意味着第一次请求该Servlet的客户端,必须等待Servlet类实例化、进行
初始动作所必须花费的时间,才真正得到请求的处理。
如果希望应用程序启动时,就先将Servlet类载入、实例化并做好初始化动作,则可以使用
loadOnStartup设置。设置大于0的值(默认值为-1),表示启动应用程序后就要初始化Servlet(而不是实例化几个Servlet)。数
字代表了Servlet的初始顺序,容器必须保证有较小数字的Servlet先初始化,在使用标注的情况下,如果有多个Servlet在设置
loadOnStartup时使用了相同的数字,则容器实现厂商可以自行决定要如何载入哪个Servlet。

转载:https://zhidao.baidu.com/question/1498330581576980339.html

web.xml作用:

1.

web.xml文件是Java Web项目中的一个配置文件,主要用于配置欢迎页、Filter、Listener、Servlet等,但并不是必须的,一个Java Web项目没有web.xml文件也是照样能跑起来的。

2.配置详解

(1)启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml的两个节点:

    <listener></listener> 和 <context-param></context-param>;

(2)容器创建一个ServletContext(上下文);

(3)容器将<context-param></context-param>转化为键值对,并交给ServletContext;

(4)容器创建<listener></listener>中的类实例,即创建监听;

(5)容器初始化<filter></filter>,web.xml中可以定义多个 filter,初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的;

(6)容器初始化<servlet></servlet>, servlet 同 filter 类似。

那么,web项目启动时,可以知道web.xml文件各个节点的加载顺序:context-param -> listener -> filter -> servlet

转载:https://www.cnblogs.com/Jimc/p/9565603.html#mark2

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值