使用配置文件注册servlet实现登录功能可以跳转主页,但是用注释注册servlet,访问显示404。
解决方案:
将web.xml中的metadata-complete属性改为false
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="false"> </web-app>
metadata-complete属性的作用
在启动@webservlet注解的时候,需要配合web.xml配置文件属性才能生效,否则容易报如下访问错误:
需要将metadata-complete设置为false,或者不设该属性。
metadata-complete属性讲解
Servlet 3.0 的部署描述文件 web.xml 的顶层标签 有一个 metadata-complete 属性,该属性指定当前的部署描述文件是否是完全的。如果设置为 true,则容器在部署时将只依赖部署描述文件,忽略所有的注解(同时也会跳过 web-fragment.xml 的扫描,亦即禁用可插性支持,具体请看后文关于 可插性支持的讲解);如果不配置该属性,或者将其设置为 false,则表示启用注解支持(和可插性支持)