Servlet基本用法总结

一、ServletConfig
在Servlet的配置文件web.xml中,可以使用一个或多个标签为servlet配置一些初始化参数。

  <servlet>
        <servlet-name>HelloServlet2</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
        <init-param>
            <param-name>username</param-name>
            <param-value>root</param-value>
        </init-param>
   </servlet>

当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,我们通过ServletConfig对象就可以得到当前servlet的初始化参数信息。

          1、可以获取Servlet程序的别名servlet-name的值
        System.out.println("HelloServlet程序的别名是:" + servletConfig.getServletName());
//        2、获取初始化参数init-param
        System.out.println("初始化参数username的值是;" + servletConfig.getInitParameter("username"));
//        3、获取ServletContext对象
        System.out.println(servletConfig.getServletContext());

二、ServletContext对象
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

在web.xml文件中使用<context-param>标签配置WEB应用的初始化参数,如下所示:
 <context-param>
        <param-name>username</param-name>
        <param-value>context</param-value>
 </context-param>
   1、获取web.xml中配置的上下文参数context-param
        ServletContext context = getServletConfig().getServletContext();

        String username = context.getInitParameter("username");
        System.out.println("context-param参数username的值是:" + username);
          2、获取当前的工程路径,格式: /工程路径
        System.out.println( "当前工程路径:" + context.getContextPath() );
//        3、获取工程部署后在服务器硬盘上的绝对路径
        /**
         *  / 斜杠被服务器解析地址为:http://ip:port/工程名/  映射到IDEA代码的web目录<br/>
         */
        System.out.println("工程部署的路径是:" + context.getRealPath("/"));
        System.out.println("工程下css目录的绝对路径是:" + context.getRealPath("/css"));
        System.out.println("工程下imgs目录1.jpg的绝对路径是:" + context.getRealPath("/imgs/1.jpg"));

        context.setAttribute("key1", "value1");
        System.out.println("Context1 中获取域数据key1的值是:"+ context.getAttribute("key1"));

三、HttpServletRequest对象和HttpServletResponse对象

 //        i.getRequestURI()					获取请求的资源路径
        System.out.println("URI => " + request.getRequestURI());///contextService
//        ii.getRequestURL()					获取请求的统一资源定位符(绝对路径)
        System.out.println("URL => " + request.getRequestURL());//http://localhost:8080/contextService
//        iii.getRemoteHost()				获取客户端的ip地址
        System.out.println("客户端 ip地址 => " + request.getRemoteHost());
//        iv.getHeader()						获取请求头
        System.out.println("请求头User-Agent ==>> " + request.getHeader("User-Agent"));
//        vii.getMethod()					获取请求的方式GET或POST
        System.out.println( "请求的方式 ==>> " + request.getMethod() );//GET

        // 获取请求参数
        String username1 = request.getParameter("username");
         String[] hobby = request.getParameterValues("hobby");
      
        req.setAttribute("key1","柜台1的章");

        /**
         * 请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/ , 映射到IDEA代码的web目录<br/>
         *
         */
        RequestDispatcher requestDispatcher = req.getRequestDispatcher("/servlet2").forward(req,resp);
        
       resp.sendRedirect("http://localhost:8080");
       resp.getWriter().write("response2's result!");

四、cookie对象

        //1 创建Cookie对象
        Cookie cookie = new Cookie("key4", "value4");
        cookie.setMaxAge(60 * 60); // 设置Cookie一小时之后被删除。无效
        //2 通知客户端保存Cookie
        resp.addCookie(cookie);

        Cookie[] cookies = req.getCookies();

五、 session对象

        // 先获取Session对象
        HttpSession session = req.getSession();
        // 设置当前Session3秒后超时
        session.setMaxInactiveInterval(3);
        session().setAttribute("key1", "value1");
        session.getAttribute("key");
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值