Servlet学习笔记(小进阶)

目录

Servlet映射方式

ServletConfig对象

ServletContext对象

Servlet3.0新特性

Servlet映射方式

  • 概述

    • 给指定Servlet设置访问路径

  • ①一个Servlet可以有多个访问路径

  • ②完全匹配 : 网址必须和Servlet访问路径一致

    • 以"/"开头

  • ③目录匹配 : 网址只需要和前面的目录匹配上即可

    • 以"/"开头,以"*"结尾

  • ④后缀名匹配 : 网址只需要和后缀名匹配上即可

    • 以"*"开头,以"后缀名"结尾

        一个Servlet可以有多个访问路径

<!--①一个Servlet可以有多个访问路径-->
<servlet>
    <servlet-name>Demo01Servlet</servlet-name>
    <servlet-class>com.atguigu.servlet.Demo01Servlet</servlet-class>
</servlet>
<!--②完全匹配-->
<servlet-mapping>
    <servlet-name>Demo01Servlet</servlet-name>
    <url-pattern>/demo01</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Demo01Servlet</servlet-name>
    <url-pattern>/myDemo01</url-pattern>
</servlet-mapping>

ServletConfig对象

作用

  • ①获取Servlet初始化参数

  • ②获取ServletContext对象

  • ③获取Servlet名称

  @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        ServletConfig servletConfig = getServletConfig();

        //①获取Servlet初始化参数
        String username = servletConfig.getInitParameter("username");
        System.out.println("username = " + username);
        String password = servletConfig.getInitParameter("password");
        System.out.println("password = " + password);
        Enumeration<String> initParameterNames = servletConfig.getInitParameterNames();
        while (initParameterNames.hasMoreElements()) {
            String initParameterName = initParameterNames.nextElement();
            String initParameterValue = servletConfig.getInitParameter(initParameterName);

            System.out.println("initParameterName = " + initParameterName + " , initParameterValue = " + initParameterValue);

        }
        //②获取ServletContext对象
        ServletContext servletContext = servletConfig.getServletContext();
        System.out.println("servletContext = " + servletContext);
        ServletContext servletContext2 = getServletContext();
        System.out.println(servletContext == servletContext2);

        //③获取Servlet名称
        String servletName = servletConfig.getServletName();
        System.out.println("servletName = " + servletName);

    }

ServletContext对象

  • ServletContext有很多方法用于和服务器容器进行交互,比如:获取文件的mimeType、调度请求、写日志文件。

  • 每一个JVM每一个项目就有一个ServletContext对象

作用

  • ①实现Servlet资源共享(作为域对象)

  • ②获取全局初始化参数

  • ③获取资源在服务器上的真实磁盘路径(部署路径)

  • ④获取文件的mimeType

共享:

  @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int num = 250;
        //存储到ServletContext
        getServletContext().setAttribute("num",num);
    }




@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取num
        Object num = getServletContext().getAttribute("num");
        System.out.println("num = " + num);
    }



@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //移除
        getServletContext().removeAttribute("num");
    }

Servlet3.0新特性

概述

  • Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本 (Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。

  • 注解配置替代XML配置

①完整语法

@WebServlet(
        name = "Demo10Servlet",
        urlPatterns = {
                "/demo10",
                "/myDemo10"
        },
        loadOnStartup = 1,
        initParams = {
                @WebInitParam(name = "username", value = "root"),
                @WebInitParam(name = "password", value = "root")
        }
)
public class Demo10Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Demo10Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

②简洁语法

@WebServlet("/demo11")
public class Demo11Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Demo11Servlet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值