自动注解实现步骤:用xml配置文件方式是Servlet2.5版本规范的,经过逐步演变注解来时流行,因为更方便了,Servlet3.0以后也支持注解开发了。
- 创建JavaWeb工程,并移除web.xml
- 编写Servlet,继承HttpServlet
- 重写get、post方法
- 在类上使用@WebServlet注解配置
演示:
@WebServlet("/webServletDemo")
public class WebServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("注解版Servlet运行");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
WebServlet详解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@documented
public @interface WebServlet {
String name() default "";
String[] value() default {};
String[] urlPatterns() default {};
int loadOnStartup() default -1;
WebInitParam[] initParams() default {};
boolean asyncSupported() default false;
String smallIcon() default "";
String largeIcon() default "";
String description() default "";
String displayName() default "";
}
手动注解实现步骤:
- 定义类继承HttpServlet
- 重写get、post
- 定义类实现ServletContainerInitializer接口
- 在src创建meta-INF的包
- 在meta-INF包下创建一个services的包
- 在services包下创建ServletContainerInitializer文件
- 文件内容为容器实现类的全类名
- 在容器实现类的onStartup方法中完成注册Servlet
- 启动测试
演示:
定义类继承HttpServlet
public class WebServletDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("手动注解开发");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
定义类实现ServletContainerInitializer接口,在容器实现类的onStartup方法中完成注册Servlet
public class Register implements ServletContainerInitializer {
@Override
public void onStartup(Set> set, ServletContext servletContext) throws ServletException {
// 创建对象
WebServletDemo02 ws2 = new WebServletDemo02();
// 在servletContext对象中添加Servlet,并得到Servlet动态配置对象 第一个参数是名称,第一个是对象
ServletRegistration.Dynamic registration = servletContext.addServlet("webServletDemo02", ws2);
// 配置Servlet 相当于xml里的mapping 映射访问路径的
registration.addMapping("/webServletDemo02");
// 还可以添加加载时机
registration.setLoadOnStartup(1);
}
}



