1. 注解


Servlet3.0版本之后,推出了各种Servlet基于注解式开发。优点:

1)开发效率高,不需要编写大量的配置信息。直接在java类上使用注解进行标注。
2)web.xml文件体积变小了。

1.1. @WebServlet

类路径:jakarta.servlet.annotation.WebServlet,WebServlet注解有哪些属性?

1)name:用来指定Servlet的名字。
2)urlPatterns:用来制定Servlet的映射路径,可以指定多个字符串。
3)loadOnStartUp:用来指定在服务器启动阶段是否加载该Servlet。
4)value:当注解属性名称为value的时候,使用注解的时候,value属性名可以省略。

  • 不是必须将所有属性都写上,只需要提供需要的。(需要什么用什么)
  • 属性是一个数组,如果数组中只有一个元素,使用该注解的时候,属性值的大括号可以省略。
  • 注解对象的使用格式:@注解名称{属性名=属性值}

1.2. 解析注解

// 使用反射机制将类上面的注解进行解析
// 获取类Class对象
Class<?> welcomeServletClass = Class.forName("com.xxx.WelcomeServlet");
// 先判断这个类上面有没有这个注解对象,如果有这个注解对象,就获取该注解对象
if(welcomeServletClass.isAnnotationPresent(WebServlet.class)) {
    // 获取这个类上面的注解对象
    WebServlet webServletAnnotation = welcomeServletClass.getAnnotation(WebServlet.class);
    // 获取注解的value属性值
    String[] value = webServletAnnotation.value();
    for(int i=0;i<value.length;i++) {
        System.out.println(value[i]);
    }
}

1.3. 解决类爆炸

一个请求对应一个方法,一个业务对应一个Servlet类:

@WebServlet({"/dept/list", "/dept/save", "/dept/edit", "/dept/detail", "/dept/delete", "/dept/modify"})
public class DeptServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepiton {
        // 获取servlet path
        String servletPath = request.getServletPath();
        if ("/dept/list".equals(servletPath)) {
            doList(request, response);
        } else if ("/dept/save".equals(servletPath)) {
            doSave(request, response);
        } else if ("/dept/edit".equals(servletPath)) {
            doEdit(request, response);
        } else if ("/dept/detail".equals(servletPath)) {
            doDetail(request, response);
        } else if ("/dept/delete".equals(servletPath)) {
            doDelete(request, response);
        } else if ("/dept/modify".equals(servletPath)) {
            doModify(request, response);
        }
    }

    private void doList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepiton {
    }

    private void doSave(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepiton {
    }

    ...
}

1.4. 视频

start:https://www.bilibili.com/video/BV1Z3411C7NZ?p=34
end:https://www.bilibili.com/video/BV1Z3411C7NZ?p=35

results matching ""

    No results matching ""