企业Java学习----JSP--九个内置对象---JavaBean开发技术

发布于:2022-12-06 ⋅ 阅读:(491) ⋅ 点赞:(0)

前言

  • JSP中9个内置对象
  • JavaBean开发技术

九个内置对象

  • request
  • response
  • out
  • session
  • application
  • pageContext
  • page
  • config
  • exception

分类

  • JSP内置对象是 Web 容器加载的一组类
  • 它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象
  • 内置对象的名称是 JSP 的保留字
  • JSP 使用Java 定义的内置对象来访问网页的动态内容

在这里插入图片描述

输入/输出对象

  • 控制页面的输入和输出
  • 访问与所有请求和响应有关的数据
  • 输入和输出对象包括request、response 和out

request对象

  • 表示客户端对网页的请求

  • 实现javax.servlet.http.HttpServletRequest接口

  • 使用HTTP 协议处理客户端的请求
    在这里插入图片描述

  • javax.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端请求参数都被封装在该对象里。这是一个常用的对象。

  • 常用的方法:

  • getParameter(String paramNarne) 获得参数的数据getParameterValues(String paramName)获得参数的数据集合

  • getAttribute(String attributeName) 获得request范围内存在的指定对象

  • request其他主要的方法:

  • getCookies():返回客户端的Cookie对象,结果是一个Cookie数组。

  • getHeader(String name):获得HTTP协议定义的传送文件头信息,例如,request.getHeader(“User-Agent”)含义为:返回客户端浏览器版本号、类型。

  • getDateHeader():返回一个Long类型的数据,表示客户端发送到服务器的头信息中的时间信息。

  • getHeaderNames():返回所有request Header的名字,结果集是一个Enumeration(枚举)类的实例。得到名称后就可以使用getHeader、getDateHeader等得到具体的头信息。

  • getServerPort():获得服务器的端口号。

  • getServerName():获得服务器的名称。

  • getRemoteAddr():获得客户端的IP地址。

  • getRemoteHost():获得客户端的主机名,如果该方法失败,则返回客户端的IP地址。

  • getProtocol():获得客户端向服务器端传送数据所依据的协议名称。

  • getMethod():获得客户端向服务器端传送数据的方法。

  • getServletPath():获得客户端所请求的脚本文件的文件路径。

  • getCharacterEncoding ():获得请求中的字符编码方式。

  • getSession(Boolean create):返回和当前客户端请求相关联的HttpSession对象。

  • getRequestURI():获得发出请求字符串的客户端地址。

  • getContentType():获取客户端请求的MIME类型。如果无法得到该请求的MIME类型,则返回1。

response对象

  • 处理JSP生成的响应

  • 将响应发送给客户端

  • 实现javax.servlet.http.HttpServletResponse接口

  • 使用HTTP协议将响应发送给客户端
    在这里插入图片描述

  • response对象实现HttpServletResponse接口,对客户的请求做出动态的响应,向客户端发送数据,如Cookies、HTTP文件的头信息等。

  • 通常,很少使用该对象直接响应,输出响应使用out 对象,response对象常用于重定向操作。

  • 常用的方法:
    void sendRedirect(String name)

  • response对象其他主要方法:

  • addHeader(String name,String value):添加HTTP头文件,该头文件将会传到客户端去,如果有同名的头文件存在,那么原来的头文件会被覆盖。

  • setHeader(String name,String value):设定指定名字的HTTP文件头的值,如果该值存在,那么它将会被新的值覆盖。

  • containsHeader(String name):判断指定名字的HTTP文件头是否存在,并返回布尔值。

  • flushBuffer():强制将当前缓冲区的内容发送到客户端。

  • addCookie(Cookie cookie):添加一个Cookie对象,用来保存客户端的用户信息,可以用request对象的getCookies()方法获得这个Cookie。

out对象

  • 表示输出流
  • javax.servlet.jsp.JspWriter类的实例
  • 使用write()、print()和println()方法

在这里插入图片描述

  • 使用out对象进行JSP编程
<html>
<body>
<% 
out.print(“欢迎来到 JSP:隐式对象”) ;
out.write(“欢迎来到 JSP:隐式对象”) ;
%>
…
</body>
</html>

作用域通信对象

  • 作用域通信对象包括session、application 和pageContext

session对象

  • 该对象代表一次会话。从客户端浏览器与站点建立连接起,开始会话,直到浏览器与服务器断开时结束会话。

  • javax.servlet.http.HttpSession接口的实例,session中存储有关用户会话的所有信息。

  • session对象最常用的方法有:

  • void setAttribute(String name, Object value)
    以键/值的方式,将一个对象的值存放到session 中

  • Object getAttribute(String name)
    根据名称去获取session中存放对象的值

  • session对象其他方法如下:
    getAttributeNames():返回session对象存储的每一个属性对象名,结果集是一个Enumeration类的实例。
    getCreationTime():返回session对象被创建的时间,单位为毫秒。
    getId():返回session对象在服务器端的编号。
    getLastAccessedTime():返回当前session对象最后一次被操作的时间。
    getMaxInactiveInterval():获取sessionn对象的生存时间,单位为秒。
    setMaxInactiveInterval (int interval):设置session对象有效时间。
    removeAttribute(String name):删除指定属性的属性名和属性值。
    invalidate():注销当前的session对象。

<%
session.setAttribute(“name”, “admin”);
%>

application对象

  • 该实例代表JSP所属的 Web应用本身,可用于JSP页面,或者Servlet之间交换信息。

  • javax.servlet.ServletContext接口实例

  • application对象最常用的方法有:

    • void setAttribute(String name, Object value)
      以键/值的方式,将一个对象的值存放到application中
    • Object getAttribute(String name)
      根据名称去获取application中存放对象的值
  • application对象其他主要方法如下:
    getAttributeNames():返回所有application对象属性的名字,结果集是一个Enumeration类型的实例。
    getServerInfo():返回Servlet编译器当前版本信息。
    removeAttribute(String name):删除一个指定的属性。

<%
application.setAttribute(“ChartRecord”, “hihi”);
%>

application、session、request 区别

  • 下面用实例说明它们三者之间的区别。
  • 首先,建立项目Application_Session_Request。在项目中建立一个JSP页面first.jsp,用于这三个对象保存数据。
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<body>
    <%
    	request.setAttribute("request","保存在Request中的内容");
    	session.setAttribute("session","保存在Session中的内容");
    	application.setAttribute("application","保存在Application中的内容");
      %>
      <jsp:forward page="second.jsp"></jsp:forward>
</body>
</html>
  • 然后,再建立另一个JSP页面second.jsp,用于获取这三个对象保存的值。
<%@ page language="java" pageEncoding="gb2312"%>
<html>
<head>
</head>
<body>
    <%
     	out.println("request:"+(String)request.getAttribute("request")+"<br>");
      	out.println("session:"+(String)session.getAttribute("session")+"<br>");
      	out.print("application:"+(String)application.getAttribute("application")+"<br>");
    %>
</body>
</html>
  • 部署运行,打开IE,输入“http://localhost:8080/Application_Session_Request/first.jsp”,会发现这三个对象保存的内容都能取出,如图所示。

在这里插入图片描述

  • 由于在first.jsp中运用了<jsp:forward page=“second.jsp”></jsp:forward>,页面跳转到second.jsp,但是在浏览器中的地址也就是请求并没有改变,属于同一请求。这时这三个对象保存的内容都可以取到,也就是说在同一请求范围内,该三个对象都有效。

  • IE中再输入“http://localhost:8080/Application_Session_Request/second.jsp”,结果如图所示。
    在这里插入图片描述

  • 在不同请求中,request对象就失效了,但是由于用的是同一个IE,也就是同一会话,session和application仍然有效。

  • 如果再重新打开一个IE,然后直接输入“http://localhost:8080/Application_Session_Request/second.jsp”,结果如图所示。
    在这里插入图片描述

pageContext对象

  • 该对象代表该JSP 页面上下文,使用该对象可以访问page、request、session和application。

  • javax.servlet.jsp.PageContext类的实例。

  • pageContext对象最常用的方法有:

  • void setAttribute(String name,Object value)
    以键/值的方式,将一个对象的值存放到pageContext中

  • Object getAttribute(String name)
    根据名称去获取pageContext中存放对象的值

  • Object getAttribute(String name, int scope)
    根据名称去获取pageContext中指定范围存放对象值

page对象

  • page对象代表JSP页面本身,使用page对象可以访问Servlet类的变量和方法。
<% @ page info=“我的信息” contentType=“text/html;charset=GBK”%>
<html>
<body>
     <%=((javax.servlet.jsp.HttpJspPage)page).getServletInfo()%>
</body>
</html>

config对象

  • javax.servlet.ServletConfig接口实例
  • 存储在编译JSP页面过程创建的Servlet信息
  • 提供了检索Servlet初始化参数的方法,且只有在JSP页面范围内才有效

错误对象exception

  • exception对象用来处理JSP文件在执行时所发生的错误和异常。它可以配合page编译指令一起使用,通过指定某一页面为错误处理页面,把所有的错误都集中到那个页面去处理。

  • 当编译指令page 的isErrorPage属性为true时,使用该对象。exception对象是java.lang.Throwable类实例。

  • exception对象的主要方法如下:

  • getClass():返回错误类型

  • getMessage():返回错误信息。

  • printStackTrace():以标准错误的形式输出一个错误和错误堆栈

内置对象总结

  • JSP内置对象一般分为输入/输出对象、作用域通信对象 、Servlet对象和错误对象四类

  • JSP中的内置对象包括 request、response、out、session、application、pageContext、 page、config和exception。

  • JSP作用域包括 page、request、session和application:

  • application:对于整个Web应用有效,一旦JSP、Servlet将数据放入application中,该数据将可以被该应用其他所有的jsp和servlet访问;

  • session:仅对一次会话有效,一旦jsp和servlet将数据放入session中,该数据将被本次会话其他jsp和servlet访问;

  • request:仅对本次请求有效,一旦jsp、servlet将数据放入request中,该数据将可以被该次请求的其他jsp和servlet访问;

  • page:仅对当前页面有效,一旦jsp,servlet将数据放入page范围中,该数据只可以被当前页面的jsp脚本、声明部分访问。

JavaBean开发技术

Get()和Set()方法

  • get()和set()方法用于访问JavaBean的属性

在这里插入图片描述

import java.io.*;
public class MyBean
{	
private String name; 	
public MyBean() 
{	
}
public String getName() 
{
	return name;
}
public void setName(String myname) 
{
	name = myname;
}
}

JavaBean优势

  • 实现过程标准化
  • 可在多个应用程序中重用
  • 可以跨平台

JSP使用JavaBean

在这里插入图片描述

  • jsp:useBean创建一个JavaBean实例
  • <jsp:useBean id=“name” class=“classname” scope=“page | request | session | application” />
  • id:设置JavaBean的名称,利用此id,可以识别在同一个JSP程序中使用不同的JavaBean组件实例。
  • class:指定JavaBean对应的Java类名,查找该JavaBean路径。
  • scope:指定JavaBean作用范围。

<head>
<jsp:useBean id="BeanID" class="MyBean" scope="page"/>
</head>

JSP使用JavaBean范围

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到