Servlet中的九大对象

一、Servlet中的九大对象
1、out 对象:向客户端发送数据的对象,与”response”对象不同,通过out对象发送的内容是浏览器需要显示的内容,可以通过out对象直接向客户端写一个由程序动态生成的HTML文件
作用域:page页面

创建out对象
PrintWriter out = response.getWriter();
out.print();

2、request对象:接收客户端发来的请求
常用方法:

       request.setCharacterEncoding("utf-8");//设置请求的编码集,只针对post请求
       
        String [] vlaues = request.getParameterValues("key");//获取请求参数为key的值集合,值类型为String数组
        Map<String,String[]> map =  request.getParameterMap();//获取所有请求参数的对象,返回一个map集合*/

        String value1 = request.getParameter("name");//获取参数为name的值
        String [] value4 = request.getParameterValues("love");//获取参数为love的值

        //利用集合获取表单中所有的值
        Map<String,String[]> map = request.getParameterMap();
        Set<String> keys = map.keySet();
        System.out.println(keys);
        Collection<String[]> val =  map.values();
        for(String[] s:val){
            System.out.println(Arrays.toString(s));
        }
        //向request集合中存放内容,第一个参数是String类型,第二个参数是Object类型的值
        request.setAttribute("A","郑爽");
        request.setAttribute("B",31415926);
        //从容器中获取内容,参数为key,返回类型为key对应的值,是Object类型
        Object obj1 = request.getAttribute("A");
        Object obj2 = request.getAttribute("B");
        System.out.println(obj1);
        System.out.println(obj2);

        //删除容器中指定的key内容
        request.removeAttribute("A");
        System.out.println(request.getAttribute("A"));//A的值被删除,这里输出null


        request.setAttribute("C","1");
        request.setAttribute("C",2);
        request.setAttribute("C","3");
        Object  objects1 = request.getAttribute("C");
        System.out.println(objects1);//重复键的值被最后一个值覆盖,这里输出3
 //remote都是客户端的东西,Servlet都是服务短的东西
        String user = request.getRemoteUser();//获取用户名
        String reqUrl = request.getRequestURI();//获取请求的域名
        String remoteAddr = request.getRemoteAddr();//获取客户端地址
        String remotehost = request.getRemoteHost();//获取客户主机号
        int remotePort = request.getRemotePort();//获取用户端口号
        String scheme = request.getScheme();//获取使用的协议
        String serNAme = request.getServerName();//获取服务器名称
        String serPsth = request.getServletPath();//获取服务器地址
        String methdName = request.getMethod();//获取使用的方法
 //跳转到1.html页面
 request.getRequestDispatcher("1.html").forward(request,response);//跳转到a.html页面(转发)

request的生命周期:
从服务端接收浏览器时请求开始,服务端对浏览器做出响应时请求结束
3、response对象:响应客户端的请求
常用方法

       //设置响应的编码集,注意针对于out对象的输出
        response.setCharacterEncoding("utf-8");
        //获取到out对象的方法
        PrintWriter out = response.getWriter();
        //页面跳转到1.html
        response.sendRedirect("1.html");

4、session对象:会话对象,HttpSession当前浏览器和服务器之间的一次通话(关闭浏览器后重新打开一次浏览器又是另外一次会话,每一次的sessionId是不同的)
常用方法:

        //获取到session 对象
        HttpSession session = request.getSession();

        //获取session的编号
        String seesionId = session.getId();

        //获取当前session创建的时间(和1970年1月1日的时间差)
        long creationTime = session.getCreationTime();

        //获取session最后一次请求的时间(和997年1月1日的时间差)
        long lastAccessedTime = session.getLastAccessedTime();

        //获取到session的最大存活时间(默认30min)
        long maxInactiveInterval = session.getMaxInactiveInterval();

        //设置session的最大存活时间(设置-1代表永久)
        session.setMaxInactiveInterval(3000);

        //判断会话是否是新会话
        boolean isNew = session.isNew();

        //销毁当前session
        session.invalidate();

        //向session容器中存放内容
        /*
        第一个参数是:String类型,代表Key
        第二个参数:Object类型,代表value
         */
        session.setAttribute("A","张三");
        session.setAttribute("B","李四");
        session.setAttribute("B",99);
        Object value1 = session.getAttribute("A");
        Object value2 = session.getAttribute("B");

        session.removeAttribute("A");
        
        System.out.println(value1);//null
        System.out.println(value2);//99

session生命周期
开始:第一次请求时开始
结束:①服务器关闭
②浏览器关闭
③调用invalidate()方法销毁会话
④超时,超出了session最大存活时间(时间是和最后一次请求时间比较)
5、application对象:全局对象,ServletContext的实例
常用方法:

        //获取application对象
        ServletContext applicantion = request.getSession().getServletContext();
        applicantion.setAttribute("A","张三");
        Object value = applicantion.getAttribute("A");
        System.out.println(value);//张三

生命周期:
服务器启动时开始
服务器关闭时结束
6、config对象:配置对象,ServletConfig的对象,进行Servlet的配置

//获取config对象
ServletConfig config = new ServletConfig();

7、exception对象:异常对象,等同与Java异常处理的对象,是Throwable的子类,exception只能在isErrorPage="true"页面中出现

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
出错原因是:
<%
    out.print(exception.getMessage());
%>

</body>
</html>

8、page对象:当前对象,等同于this,是Object的一个类型

<%@ page import="java.text.SimpleDateFormat" %>
<%@page language="java" pageEncoding="UTF-8" errorPage="error.jsp" %>
<%--
page中包含的import指令:可以出现多次的指令,引入需要的包
page中包含的pageEncoding指令,设置当前页面的编码集
--%>

page生命周期:当前页面
9、pageContext对象:上下文对象,相当于管理层。PageContext的实例,获取其他对象,操作控制其他对象
二、request、response、session三大容器
(1)生命周期不同

a)	request(HttpServletRequest):服务端接受请求时开始,服务端做出响应时结束
b)	session(HttpSession):
    开始:第一次请求时开始
	结束: 服务器关闭(如果浏览器未关闭,重启服务器后有		些浏览器记录上次会话)
	浏览器关闭(用户点击关闭时,服务器并不能实时获取)
	调用invalidate()方法
	超时,超出了session最大存活时间(和最后一次请求时间做比较)
c)	application(HttpContext):服务器启动时开始,服务器关闭时结束

(2)数据有效范围

request:数据在本次请求时有效
session:会话结束,数据失效
application:会话结束,数据有效

(3)作用范围(由大到小)

application > session > request

(4)适用场景

session:保存当前用户信息,购物车
application:统计当前在线人数
request:接收客户端发来的请求
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值