jsp内置对象,servlet+jsp书写简单项目

javaWeb

一、课程目标

【理解】jsp内置对象
【掌握】jsp四大作用域
【掌握】使用mvc+dao+servlet完成学生管理系统的实现

二、jsp内置对象

2.1 概念

类似于js中bom对象与dom对象,由浏览器自己创建的对象无需声明,在jsp中(本质是servlet)无需创建就可以直接使用的对象称之为内置对象

在这里插入图片描述

2.2 九大内置对象

out JspWriter类的实例,用于把结果输出至网页上

request HttpServletRequest 接口的实例

用于封装客户端请求时携带的数据(请求头、请求参数、请求方式)

response HttpServletResponse 接口的实例

用于封装服务器返回客户端的数据

session HttpSession类的实例

用于封装当前用户本次会话相关的信息

application ServletContext类的实例,与应用上下文有关

用于封装当前应用运行期间保存的所有数据信息

config ServletConfig类的实例

用于封装当前jsp对应servlet的相关配置数据信息

pageContext PageContext类的实例

提供对JSP页面所有对象以及命名空间的访问

page 类似于Java类中的this关键字

指代当前的jsp代表的对象

exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

当页面发生异常时创建对应的异常对象,将异常对象交由统一的异常处理页面,异常处理页面根据异常的类型打印相应的异常信息

三、jsp四大作用域

3.1 概念

类似于java中的访问权限修饰符的封装,使用不同的访问权限修饰修饰属性、变量限制其使用的范围。jsp中通过作用域限制放置在对应作用域中的数据的访问范围

在这里插入图片描述

3.2 四大作用域

“作用域"就是"信息共享的范围”,也就是说一个信息能够在多大的范围内有效。
JSP的四种范围,分别为page,request,session,application

拥有统一的获取与设置的方法

setAttribute(“key”,value);在指定作用域中存储数据
getAttribute(“key”);获取在指定作用域中指定key的数据
removeAttribute("key");移除指定作用域中指定key的数据

也可以通过pageContext对象对四大作用域中的数据进行处理

3.2.1 application应用作用域

application:服务器启动到停止这段时间。Application 的作用范围在服务器一开始执行服务,到服务器关闭为止Application 的范围最大、停留的时间也最久,所以使用时要特别注意不然可能会造成服务器负载越来越重的情况。—所以很少用。-最多存个服务器的版本号 作者等不会变的信息。只要将数据存入application对象,数据的范围范围 (Scope) 就为Application ;

实例

完成指定服务jsp在当前应用执行过程中被请求的次数

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    Integer click=null;
    Object o = application.getAttribute("click");
    if(o!=null){
      click= (Integer) o+1;
    }else{
      click=1;
    }

    application.setAttribute("click",click);
  %>
  <%="当前访问次数:"+click+"次"%>
  </body>
</html>

3.2.2 session会话对象

session:HTTP会话开始到结束这段时间。Session 的作用范围为一段用户持续和服务器所连接的时间,但与服务 器断线 ,这个属性就无效。只要将数据存入session对象,数据的范围就为Session;

session的开始时刻比较容易判断,它从浏览器发出第一个HTTP请求即可认为会话开始。但结束时刻就不好判断了,因为浏览器关闭时并不会通知服务器,所以只能通过如下这种方法判断:如果一定的时间内客户端没有反应,则认为会话结束。Tomcat的默认值为30分钟

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

只要在指定时间内,客户端继续发生请求就可以保证会话的持续,否则会终止会话

实例

完成当前用户本次会话请求次数统计

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
    Integer click=null;
    Object o = session.getAttribute("click");
    if(o!=null){
      click= (Integer) o+1;
    }else{
      click=1;
    }

    session.setAttribute("click",click);
  %>
  <%="session当前访问次数:"+click+"次"%>
  </body>
</html>

3.2.3 request请求作用域

request:HTTP请求开始到结束这段时间。Request 的范围是指在一JSP 网页发出请求到另一个JSP 网页之间,随 这个属性就失效。设定Request 的范围时可利用request 对象中的setAttribute( )和getAttribute( );
一个HTTP请求的处理可能需要多个Servlet合作,而这几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。

实例

通过jspA设置作用域数据请求jspA转发到jspB,jspB可以获取请求中的数据,但是直接请求则没有数据

requestA.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
request.setAttribute("username","zhangsan");
request.setAttribute("password","123456");
%>
<jsp:forward page="requestB.jsp"/>

</body>
</html>

requsetB.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<input type="text" value="<%=request.getAttribute("username") %>">
<input type="text" value="<%=request.getAttribute("password") %>">
</body>
</html>

3.2.4 page页面作用域

page:当前页面从打开到关闭这段时间。标名pageContext.setAttribute("","");它只能在同一个页面中有效;
request和page的生命周期都是短暂的,它们之间的区别:一个request可以包含多个page页(include,forward及filter)

实例

page作用域只能用于当前页面进行数据的存储,由于范围较小,再次请求页面与刷新页面都会离开作用域,所以在实际开发过程中较少使用

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <%
   for(int i=1;i<=5;i++){
     Integer click=null;
     Object o = pageContext.getAttribute("click");
     if(o!=null){
       click= (Integer) o+1;
     }else{
       click=1;
     }

     Thread.sleep(500);
     pageContext.setAttribute("click",click);
     out.print("pageContext当前访问次数:"+click+"次<br>");
   }
  %>
  </body>
</html>

3.2.5 作用域使用场景

作用域大小:page<request<session<appilcation

关系为:包含多个关系

使用场景:

page:一般使用局部变量进行数据保存即可,有时涉及到数据保存的安全性可以直接存储到pagecontext作用域中

request:一般用于传递本次请求携带的数据,也可以通过转发将servlet获取的数据发送到jsp中,例如:查询数据的结果

session:一般用于保存当前会话不经常修改的数据,例如用户名

application:一般用于保存服务器的配置信息或通用信息,例如服务条款

练习

在这里插入图片描述

完成如上页面使用LayUI提供的表单验证进行验证,将数据提交至后台并存储至数据库中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值