其他分享
首页 > 其他分享> > idea部署web项目,能访问jsp,访问Servlet却出现404错误的解决方法汇总,亲测有效

idea部署web项目,能访问jsp,访问Servlet却出现404错误的解决方法汇总,亲测有效

作者:互联网

 


  近期在跟着打一个javaweb项目的时候,自己搭建Tomcat环境之后,访问jsp页面之后跳转访问Servlet资源时却出现404错误,如下图:

  通常的话出现404错误肯定是先检查自己的访问路径有没有写对,我检查后我这个路径是没有错的,代码逻辑也是没问题的(因为是照着培训视频打的,同时也有把培训视频的代码替换我的代码也是运行不了),于是我就开始在网上搜索解决方案了,以下是我在网上搜到的解决方案以及自己的一点片面见解,因为别人实力较菜,写这篇文章也只是想着分享一下自己的解决方法,在说的过程中如果有错误的话,欢迎大家指出来,以免我误导别人O(∩_∩)


 

一.servlet版本与tomcat版本不对应

  这个问题真的很致命,因为我自己问题就是出现在这(我承认自己是有点弱智...),我用的Tomcat版本是8.5.x,然后一直用的是4.0的Servlet版本(版本得对应上,不过我之前没对应上的时候好像也可以运行Servlet),这一次做的项目用到了EL表达式,终于在这一次出现问题了,在网上找了那么多方案,兜兜转转原来是出现在这里,于是我重新创建了JavaEE7的项目,选择了3.1版本(我这个项目采用的是注解配置),后来重新布置了下环境,就能运行了

    

 

  这里我也给出我在网上搜到的Servlet和Tomcat对应版本的表

 

ervlet SpecJSP SpecEL SpecWebSocket SpecJASPIC SpecApache Tomcat versionActual release revisionSupported Java Versions
4.0 TBD (2.4?) TBD (3.1?) TBD (1.2?) 1.1 9.0.x 9.0.0.M9 (alpha) 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.4 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.35 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.70 6 and later
(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x 6.0.45 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

(表格来源于https://blog.csdn.net/zzy7075/article/details/61918776?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase


 

二.注解方式的WebServlet配置错误

  这个错误也是很多新人比较容易犯的错误了,采用注解配置的话,idea自动生动的Servlet的模板是

  @WebServlet( name="类名")

  但其实这样并没有配置好路径,我们可以将其改为以下两种方式

  ①@WebServlet( name="类名",urlPatterns="/路径")

  举例:@WebServlet( name="UserListSerlvet",urlPatterns="/userListServlet")

  ②@WebServlet( value="/路径")  ,此处value要是只有一个可以省略

  举例:@WebServlet( "/userListServlet")

  上面的斜杠千万不能落下


  这里开始就说我在网上看到别人出现这个错误,几个比较有代表性的解决方法

三.未能正确部署Web项目到Tomcat上

  (解决方法来源于https://blog.csdn.net/eaphyy/article/details/72513914

  1首先,右击项目,点击 open module settings  

    

  2.配置 project,主要是本地 jdk 的安装路径,还有项目编译输出的路径

  

 

  3.配置 modules ,其中 paths 定位到 web-inf/classes ;dependencies 加入jdk和项目 web-inf/lib(其实这里默认选择就可以)

      

 

 

 

 

 

  4.配置 libraries ,点击 + 号,选择 java ,然后还是选择你项目的 web-inf/lib

  

 

 

   5.配置 facets ,此步很重要,配置 web resource directories ,路径配错,就会报 404 ,一定要定位到项目根目录,也就是下面有整个项目源码的地方(这里的话我一开始也有犯了这个错误,因为在项目里面新建个模板,然后也不知道为什么路径会定位到别的地方,所幸最后改过来)

    

 

  下图是我引用的博主他犯的错误

  博主原话:“本人就是定位到了另一个地方,导致 404,本来应该到 webroot,结定位到了 web”

  

 

   6.配置 artifacts ,此步选择第二个,选择你的项目即可

  

 

 

  7、部署到 tomcat,“Run”中的“Edit Configurations...”

    

        

    

 

 

  (这里其实设置了Deployment的时候前面基本会默认帮我们修改)

 

 


 

 

 四.文件放置到错误位置(非idea)

  博文链接:https://blog.csdn.net/eickandy/article/details/78202047?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-1

  在网上搜索的时候看到了这篇文章,我觉得也应该是比较有效的解决方法,下面的评价都还不错,但看他里面说的那些文件夹的名字好像是用eclipse编辑才会产生的文件名,因为我用的是idea,所以这里就不多阐述,用eclipse的朋友可以去看一下(不过因为这篇文章已经过了两年多了,效果我也不太敢保证,就是在我看到的那一些文章中比较有代表性的吧)。


 

五.未能正确的配置web.xml文件

  这里的话针对的是用web.xml配置访问目录的,这里的话其实要是知道怎么配置基本不会出现这个问题,不过要是编辑错的话确实会出现404错误,这里就稍微提一下

 

1 <servlet>   
2     <servlet-name>HWS</servlet-name>       <!--给serverlet取名字,可任意-->
3     <servlet-class>com.web.servlet.HelloWorldServlet</servlet-class>   <!--指明servlet路径包名+类名,也就是全类名-->
4 </servlet>    
5 <servlet-mapping>   
6     <servlet-name>HWS</servlet-name>       <!--对应上面的名字-->
7     <url-pattern>/hws</url-pattern>   <!--这是在浏览器中输入访问这个servlet的资源定位符,可任意,注意斜杆-->
8 </servlet-mapping> 

 

  这里最后也给出Servlet的一些规范吧

 

  JAVA servlet 2.x规范:
    项目目录结构必须要有WEB-INF,web.xml等文件夹和文件
    在web.xml中配置servlet,filter,listener,以web.xml为java web项目的统一入口


  JAVA servlet 3.x规范:
    项目中可以不需要WEB-INF,web.xml等文件夹和文件
    在没有web.xml文件的情况下,通过注解实现servlet,filter, listener的声明,例如
    @WebServlet, @WebFilter,@WebListener,当使用注解时,容器自动进行扫描。

(原文链接:https://blog.csdn.net/m0_38059795/article/details/78694177


 

   Servlet3.1规范:https://www.cnblogs.com/heartstage/archive/2013/10/10/3362138.html

   Servlet4.0规范:https://www.ibm.com/developerworks/cn/java/j-javaee8-servlet4/index.html?ca=drs-&utm_source=tuicool&utm_medium=referral


 

 

  这篇文章是我花了比较多时间整理出来的吧,原创内容也不多,主要也是说想分享出来给那些同样出现这个问题的朋友参考下,当然可能不一定能解决您的疑惑╮(╯▽╰)╭,最后也再啰嗦一句,因为本人实力较菜,所以如果这篇文章里面有说得不对的地方,也希望大家能指出来,我也不想误导大家。

 

标签:xml,web,1.1,later,idea,blog,访问,Servlet
来源: https://www.cnblogs.com/hlyxd/p/13092615.html