解决servlet404报错
servlet 404
大家好,我是EverdayForCode。你,今天学习了吗!
写在前面:tomcat从7.0版本开始就支持Servlet3.0,在Eclipse中不再需要web.xml配置servlet,而通过注解的方式找寻servlet。本环境安装tomcat v8.5
采用注解方式配置servlet。
第一种:servlet 编译生成class位置不对
解决方案
项目上右键–>Build path --> Configure Build Path–>Source 目录必须是"项目名/WebContent/WEB-INF/classes
假如没有classes,先在WebContent/WEB-INF目录下建立classes文件再更改
还有,最重要一点的就是必须要确保菜单栏Project选项卡里buid automatically被选中,否则不会自动生成class文件
第二种调用servlet的URl配置错误
当jsp页面不在webcontent根目录下面,而是在webcontent其他目录下面时
例如:
如果在jsp中调用servlet的url直接写为
则会出现404错误
解决方案
url 变为 “${pageContext.request.contextPath}/url-pattern”
action="${pageContext.request.contextPath}/uploadimg"
当这里404报错就解决了
如何新建servlet自动配置xml可参考:
解决在Eclipse新建web项目没有自动生成web.xml和在新建servlet的时候自动生成web.xml配置
${pageContext.request.contextPath}
是什么
${pageContext.request.contextPath}
是JSP取得绝对路径的方法,等价于<%=request.getContextPath()%>
。
也就是取出部署的应用程序名或者是当前的项目名称。
WebServlet参数
属性名 | 类型 | 作用 |
---|---|---|
name | String | 指定Servlet 的 name 属性,等价于 <servlet-name> 。如果没有显式指定,则该 Servlet 的取值即为类的全限定名。 |
value | String[] | 该属性等价于 urlPatterns 属性。两个属性不能同时使用。 |
urlPatterns | String[] | 指定一组 Servlet 的 URL 匹配模式。等价于<url-pattern> 标签。 |
loadOnStartup | int | 指定 Servlet 的加载顺序,等价于 <load-on-startup> 标签。 |
initParams | WebInitParam[] | 指定一组 Servlet 初始化参数,等价于标签。 |
asyncSupported | boolean | 声明 Servlet 是否支持异步操作模式,等价于<async-supported> 标签。 |
description | String | 该 Servlet 的描述信息,等价于 <description> 标签。 |
displayName | String | 该 Servlet 的显示名,通常配合工具使用,等价于 <display-name> 标签。 |
WebServlet参数参考:
Servlet中@WebServlet属性详解