Servlet3.0注解开发

Servlet3.0 注解开发

Servlet的配置信息都是在web.xml中完成的。如果,我们创建的Servlet非常多,就会导致web.xml中的配置非常臃肿,不便于管理。Servlet3.0为我们提供了注解支持,创建Servlet的时候。在这个Servlet类上面添加注解就可以完成Servlet的配置。

1. Servlet3.0新特性

  • 注解支持
    该版本增加了若干注解简化,Servlet、过滤器(Filter)和监听器(Listener)的声明,使得 web.xml 部署描述文件从该版本开始不再是必选的。
  • 支持web模块(servlet filter Listener)
  • 支持Servlet异步处理
  • 文件上传API简化

2. 为什么要使用注解

  1. web.xml中配置过多servlet不便于管理,容易出错;
  2. 注解开发使得开发更敏捷,效率更高;
  3. 注解开发是一种趋势;

3. 使用IDEA创建3.0版本的Servlet

新版的IDEA(2017版本)创建的Servlet默认是3.0版本的,所以我们只需要新建一个Servlet,然后用注解配置即可。
步骤:
第一步 : 新建一个Servlet :
在包上面右击New --> Servlet
第一步
给Servlet取名,之后点击OK
取名
第二步 : 配置Servlet
创建完成后,Servlet类上面会默认添加一个注解@WebServlet(name=“Servlet3Demo”)。这个@WebServlet注解就是用来配置当前这个Servlet的。

这个注解中常用的有两个属性 :
1.name属性: 相当于web.xml的(servlet-name)
2.urlPattenrns属性: 编写访问servlet的路径 类似于 (url-pattern)
我们需要手动在**@WebServlet**注解中添加URLPatterns属性用来映射路径。

package com.renly.servlet_01;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 1. name属性: 相当于web.xml的 <servlet-name>;
 * 2. urlPatterns属性: 编写访问servlet的路径  类似于 <url-pattern>
 */
@WebServlet(name = "ServletDemo",urlPatterns = "/servlet")
public class ServletDemo extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

第三步 : 启动tomcat并访问
访问路径 : http://localhost:8080/servlet
运行结果 :
运行结果

4. 优化

在doPost方法中调用doGet方法。这样代码在goGet方法中写就可以了。
4.1 优化一
优化1
4.2 优化二
基于IDEA的模板,快速创建Servlet。
【模板配置代码】

#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@javax.servlet.annotation.WebServlet("/${Entity_Name}")
public class ${Class_Name} extends javax.servlet.http.HttpServlet {
    protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
        doGet(request,response);
    }

    protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {

    }
}

模板设置
模板设置

5. Servlet开发最终版本

@WebServlet("/lastServlt")
public class LastServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

猜你喜欢

转载自blog.csdn.net/wenzhengzheng/article/details/82992194