在Servlet2.5规范之前,Java Web应用的绝大部分组件都通过web.xml文件来配置管理,Servlet3.0规范可通过Annotation来配置管理Web组件,因此web.xml文件可以变得更加简洁,这也是Servlet3.0的重要简化。
1.注解方式(推荐)
使用@WebServlet表示一个Servlet。 value:表示servlet的访问URL,注意必须以 /开头。 urlPatterns:表示servlet可以配置多个访问URL。
例如:
@WebServlet(value="/hello")
//@WebServlet(urlPatterns = {"/hello","/haha","/hehe"})
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("<h1>Hello,Servlet</h1>");
out.flush();
out.close();
}
}
2.xml配置方式
通过web.xml配置
<?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">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--配置多个访问路径
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/haha</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hehe</url-pattern>
</servlet-mapping>
-->
</web-app>
3.两种配置方式对比
注解访问servlet: 优点:代码少,可读性强,易于理解。 缺点:如果大量使用servlet注解,servlet类文件数量过多,不便于查找和修改。
web配置文件访问servlet: 优点:集中管理各servlet类路径的映射路径,便于修改和管理。 缺点:代码多,可读性不强,不易于理解。
无论是使用xml配置还是注解配置,尽量不要混用。要么全部使用注解方式,要么全部使用xml方式。