JSP内置对象

0.JSP内置对象

在jsp页面中可以不加声明和创建就可以在脚本中使用。
JSP脚本中包含9个内置对象:
1.out向客户端输出;
2.request 封装用户请求;
3.response 向用户做出响应 在servlet中使用;
4.session 客户和服务器间的会话;
5.application 于服务器启动时开始运行,用来存放全局变量,在用户间共享;
6.pageContext 用于访问page的各种对象;
7.exception 异常;
8.config 初始化要用的参数;
9.page JSP页面本身。

1.内置对象——out

1.out对象是javax.servlet.jsp.JspWrite的实例;
2.out = pageCintext.getOut();
3.该实例代表JSP页面的输出流,用于向客户端输出数据;
eg:<%out.print("< p>helloOut< /p>";%>
<%String str = “helloOut”;%>
<%out.print("< p>"+str+"< /p>";%>
注意:需要在WEB-INF下的lid包中导入jsp-api.jar包


<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--
    jsp内置对象(属于java对象)
    就是在jsp中,预先已经内置好的9个对象,我们可以直接使用。

    1.javax.servlet.jsp.JspWrite out = null
    out=pageContext.getOut()
    作用:在服务器端向客户端输出数据
--%>
    <%
        out.write("out对象,是从服务器端向客户端响应内容");
    %>
    ${"aa"}
</body>
</html>

2.JSP内置对象——request/response

1.request是javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象里。
2.response是HttpServletResponse类的实例,response对象包含了响应客户端请求的有关信息。
3.request实现请求转发:

  • 请求转发是指将请求再转发到另一资源。此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变;
  • 请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另一个资源,并让该资源对浏览器的请求进行响应。
if(account.equals("admin") && password.equals("111")){
            //request对象中可以用来存储数据
            req.setAttribute("acc",account);//键值对的形式存储一组数据,键是String类型,值是Object类型


            RequestDispatcher requestDispatcher = req.getRequestDispatcher("success.jsp");//获得请求转发对象
            requestDispatcher.forward(req,resp);//执行转发动作
        }else {
            req.setAttribute("msg","账号密码错误!");
            req.getRequestDispatcher("login.jsp").forward(req,resp);

        }

4.request请求传递对象:

request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其他web资源处理:

  • setAttribute(“name”,value)
  • getAttribute(“name”)
  • removeAttribute(“name”)

5.response实现请求重定向

  • 重定向是指页面重新定位到某个新地址,之前的请求失败,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址。
  • 重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求。
resp.sendRedirect("login.jsp");

3.内置对象——session

1.session对象是javax.servlet.http.HttpSession的实例,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。
2.servlet API中,定义了HttpSession接口,用来封装会话对象。
3.HttpSession是接口,会话对象时Web容器创建的在servlet中使用,HttpServletRequest中的方法获得会话对象。

  • public HttpSession getSession();获得跟当前请求相关的session,如果不存在session,就创建一个新的session对象返回。
    4.JSP文件中使用会话对象的方法:
  • JSP文件中有内置对象session,可以直接调用HttpSession接口中任意方法。
    5.使用session实现会话机制的过程:
  • 当容器创建一个新的HttpSession对象后,即生成一个随机数,称为会话ID,并将ID值封装成一个名字为JSESSIONID的session,返回给客户端。在这里插入图片描述
  • 调用request.getSession方法获得会话对象时,容器先从request中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,返回使用。在这里插入图片描述
  • 如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话对象,重复第一个步骤。
    6.HttpSession接口中定义了一系列的方法:
  • void setAttribute(String key,Object value):以key/value的形式保存对象值;
  • Object getAttribute(String key):通过key获取对象值;
  • void removeAttribute(String key):通过key删除属性;
  • int getMaxInactiveInterval():获取session的有效非活动时间,以秒为单位;
  • void setMaxInactiveInterval(int interval):设置session的最大非活动时间,以秒为单位,超时将被销毁;
  • Stirng getId():获取session对象的编号;
  • void invalidate():设置session对象失效;
  • boolean isNew():判断一个session对象是不是一个新创建的会话对象。
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/2/26
  Time: 14:21
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--
    request对象的生命周期:开始于一次请求的发起,结束于一次请求的响应

    session(会话)
    session对象是用来管理会话的,(在会话的过程中回产生一些数据,使用session对象进行管理)


    会话:就是客户端与服务器端的一次交互过程,开始于浏览器打开链接上服务器 到浏览器关闭
    HttpSession session

    session对象在会话中具体的作用:
        1.客户端与服务器端的会话识别
        2.在同一个会话中可以存储共享数据

    session对象的生命周期:
    创建:打开浏览器 第一次连接到服务器,在服务器端创建session对象

    销毁:1.长期不使用的session对象,服务器将其自动销毁(默认是30分钟)
         2.强制销毁session对象  invalidate() 安全退出
         3.服务器关闭   需要注意(有的服务器会缓存,当服务器关闭时,服务器会将session对象序列化到文件中,服务器启动时再反序列化)。


        浏览器关闭,session对象销毁。是错误的
        浏览器关闭后,服务器端知道吗?不知道
        服务器端的session对象并没有及时销毁,仍然存在与服务器端

 --%>
    <%
        out.print(session.getId()+"<br/>");
        out.print(session.isNew()+"<br/>");
        //session.setMaxInactiveInterval(10);
        //1800  服务器最长销毁时间
        out.print(session.getMaxInactiveInterval());

        session.setAttribute("name","admin");
        request.setAttribute("age",22);
        out.print(session.getAttribute("name"));
        out.print(request.getAttribute("age"));
    %>
</body>
</html>

7.会话对象生命周期:
会话对象是容器创建的,并保存在容器中,如果客户端连接到服务器后,却置之不理,不做任何操作,那么容器维护这些会话对象将占用很多资源。因此,容器都会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。除了根据有效时间使会话对象失效外,还可以调用HttpSession中的invalidate方法,使会话失效,立即销毁会话对象。
创建:打开浏览器 第一次连接到服务器,在服务器端创建session对象
销毁:1.长期不使用的session对象,服务器将其自动销毁(默认是30分钟)
2.强制销毁session对象 invalidate() 安全退出
3.服务器关闭 需要注意(有的服务器会缓存,当服务器关闭时,服务器会将session对象序列化到文件中,服务器启动时再反序列化)。
8.设置会话时间:

  • 可以在web.xml中进行配置,修改默认时间,例如,修改为50分钟销毁:
<session-config>
  <session-timeout>50</session-timeout>
</session-config>
  • 可以使用HttpSession接口中的setMaxIntervalTime设置,以秒为单位,如果参数是负数,表示永远不失效。例如:将会话的有效时间设置为两小时:session.setMaxInactiveInterval(26060)。

4.内置对象——exception

1.是java.lang.Throwable的实例:
该实例代表其他页面中的异常和错误。只有当页面是错误实例页面,即编译指令page的isErrorPage属性为true时,该对象才可以使用。
2.常用的方法有:

  • exception.getMessage();返回异常信息字符串;
  • exception.toString();异常信息简单描述。
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/2/26
  Time: 16:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    阿偶 程序走神了!
    <%--开发期间需要显示异常信息--%>
    <%
        exception.printStackTrace();
        out.print(exception.getMessage());
        out.print(exception.toString());
    %>
</body>
</html>

5.内置对象——page

page是java.lang.Object类的对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值