栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaWeb:Servlet注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaWeb:Servlet注解

Servlet注解

jakarta.servlet.annotation.WebServlet

@WebServlet 在Servlet类上使用

WebServlet注解中存在的属性:

  • name属性:用来指定Servlet的名字。等同于:
  • urlPatterns属性:用来指定Servlet的映射路径。可以指定多个字符串。等同于:
  • loadOnStartUp属性:用来指定在服务器启动阶段是否加载该Servlet。等同于:
  • value属性:当注解的属性名是value的时候,使用注解的时候,value属性名是可以省略的。
  • 注意:不是必须将所有属性都写上,只需要提供需要的。如果属性是一个数组,且数组中只有一个元素,使用该注解的时候,属性值的大括号可以省略。

注解对象的使用格式:

  • @注解名称(属性名=属性值, 属性名=属性值, …)

注解的使用:

@WebServlet(name = "hello", urlPatterns = {"/hello1","/hello2"}, //loadOnStartup = 1,
        initParams = {@WebInitParam(name = "username", value = "root"), @WebInitParam(name="password", value = "123")})
public class HelloServlet extends HttpServlet {
    // 无参构造
    public HelloServlet() {
        System.out.println("无参构造执行。。。");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        // 打印Servlet Name
        out.print("servlet name = " + getServletName() + "
"); // 打印Servlet Path out.print("servlet path = " + request.getServletPath() + "
"); // 获取初始化参数 Enumeration names = getInitParameterNames(); while (names.hasMoreElements()) { String name = names.nextElement(); String value = getInitParameter(name); out.print(name + " = " + value + "
"); } } }
//@WebServlet(urlPatterns = {"/welcome1","/welcome2"})
// 这个value属性和urlPatterns属性一致,都是用来指定Servlet的映射路径的
//@WebServlet(value = {"/welcome1","/welcome2"})
// 属性只有一个的写法
//@WebServlet(value = "/welcome") // 写法一
@WebServlet("/welcome") // 写法二
public class WelcomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        out.print("doGet...");
    }
}
通过放射机制解析@WebServlet注解
public class ReflectAnnotation {
    public static void main(String[] args) throws ClassNotFoundException {

        // 使用放射机制解析@WebServlet注解
        // 获取类Class对象
        Class welcomeServletClass = Class.forName("cn.lwx.javaweb.AServlet.WelcomeServlet");

        // 获取类上的注解对象,先判断存不存在
        
        if (welcomeServletClass.isAnnotationPresent(WebServlet.class)) {
            // 获取注解对象
            WebServlet webServletAnnotation = welcomeServletClass.getAnnotation(WebServlet.class);
            String[] value = webServletAnnotation.value();
            for (int i = 0; i < value.length; i++) {
                System.out.println(value[i]); //welcome
            }
        }
    }
}
使用模板方法设计模式解决写的Servlet类很多的问题
// 模板类
@WebServlet({"/dept/list","/dept/save",...})
//@WebServlet("/dept/*")
public class DeptServlet extends HttpServlet {
    // 模板方法
    // 重写service方法
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取servlet path
        String servletPath = request.getServletPath();
        switch (servletPath) {
            case "/dept/list":
                doList(request,response);
                break;
            case "/dept/save":
                doSave(request,response);
                break;
            ...
            default:
                break;
        }
    }

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

    private void doSave(HttpServletRequest request, HttpServletResponse response) {
    }
    ...
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/927144.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号