一、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");