JSP九大内置对象

JSP内置对象,指在JSP页面中内置的不需要定义就可以在网页中直接使用的对象。JSP定义了9种内置对象:

  • out:负责管理对客户端的输出
  • request:负责得到客户端的请求信息
  • response:负责向客户端发出响应
  • session:负责保存同一客户端一次会话过程中的一些信息
  • application:表示整个应用的环境的信息
  • exception:表示页面上发生的异常,可以通过它获得页面异常信息
  • page:表示当前JSP页面本身,就像Java类中定义的this一样
  • pageContext:表示JSP的上下文
  • config:表示此JSP的ServletConfig

下面主要是常用的五个对象out、request、response、session、application简述。

out对象

out对象作用如下:

  • 用来向客户端输出各种数据类型的内容,依靠如下两个方法:

    • void print()
    • void println()
  • 实现对应用服务器上的输出缓冲区进行管理,常用函数如下:

    • void close()
    • void clearBuffer()
    • void clear()

request对象

request对象主要用途是获取客户端的基本信息。主要方法如下:

  • String getMethod():得到提交方式
  • String getRequestURI():得到请求的URI
  • String getProtocol:得到协议名称
  • String getServletPath():得到客户端请求服务器文件的路径
  • String getQueryString():得到URI的查询部分
  • String getServerName():得到服务器的名称
  • String getServerPort():得到服务器端口号
  • String getRemoteAddr():得到服务器的IP地址

request对象获取客户端的参数常用方法:

  • String getParameter(String name):获得客户端传送给服务器的name参数的值。当传递给此参数的参数名没有实际参数与之对应时,则返回null。
  • String[] getParameterValues(String name):以字符串数组的形式返回指定参数所有值。

response对象

response对象和request对象是一对相对应的内置对象,response可以理解为客户端的响应,request可以理解为客户端的请求。

response对象具有以下用途:

  • 利用response对象进行重定向:response.sendRedirect(路径)

redirect和forward的区别:

  • 浏览器显示上:forward()方法属于服务器去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的内容不会变。redirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址显示栏会变。
  • 数据共享上:forward转发的页面之间能够共享request里面的数据,而redirect不能共享。
  • 功能上:redirect能够重定向到其他网站上的资源,forward方法只能在同一web应用程序内的资源之间转发请求,可以理解为服务器内部的一种操作。
  • 效率:forward效率较高,因为跳转仅仅发生在服务器端;redirect效率则相对较高,因为类似于再进行了一次请求。

session对象

JSP页面的session对象是跨页面保持的,当访问网站时,服务器端已经分配了一个session对象给用户使用,对于同一个用户,不管在哪个页面,它使用的都是一个session。可以用来保存登录信息和实现购物车(用户私有的)。

session的常用API:

  • void setAttribute(String name,Object obj):将一个对象放入session,如果两次调用此方法并且name相同,那么后面的内容将会覆盖以前放进去的内容。Object可以放入任意类型的数据,取出时进行强制转换即可。
  • Object getAttribute(String name):读取session中的内容,返回的是Object类型,必须进行强制转型。
  • void removeAttribute(String name):将属性名为name的内容从session中移除。

application对象

session对象中的数据可以被同一个用户在网站中的一次对话共享。但是对于不同客户来说,每个人的session是不同的。application对象对于不同客户端来说,服务器端的对象是相同的(用户共有的)。

对于一个web容器而言,所有的用户都共同使用一个application对象,服务器启动后就会自动创建application对象,这个对象会一直保存,直到服务器关闭为止。

application对象的常用API:

  • void setAttribute(String name,Object obj):将Object对象保存到application对象中
  • void getAttribute(String name):读取application对象中的内容
  • void removeAttribute(String name):将对象从application中移除

cookie操作

在JSP页面之间传递数据的方式当中,除了表单传值URL传值以外,Cookie是一种常见的方法,Cookie是一个小的文本,由服务器端生成,发送给客户端浏览器,客户端如果设置为启用Cookie,则会将这个小文本数据保存到某个目录下的文本文件内。下次登录同一个网站时,客户端浏览器会自动将Cookie读入之后,传给服务器端。一般情况下,Cookie中的值是以key-value的形式进行表达的。

基于这个原理,可以实现一个功能:在第一个页面中,将要共享的变量值保存在客户端Cookie文件内,在客户端访问第二个页面时,由于浏览器自动将Cookie读入之后,传给服务器端,因此只需要在第二个页面读取这个Cookie值即可。

<%@ page lanfuage="java" import="java.util.*" pageEncoding="gb2312"%>

<%
    //定义一个变量
    String str = "xingze";
    //将str存入Cookie
    Cookie cookie = new Cookie("name",str);
    //设置Cookie的存活期为600秒
    cookie.setMaxAge(600);
    //将Cookie保存于客户端
    response.addCookie(cookie);
%>
<%@ page lanfuage="java" import="java.util.*" pageEncoding="gb2312"%>

<%
    //从Cookie获得name
    String name1 = null;
    Cookie[] cookies = request.getCookies();
    for(int i=0;i<cookies.length;i++){
        if(cookies[i].getName().equals("name")){
 		name1 = cookies[i].getValue();
 		break;
 	}
    }
%>

Cookie和session的区别

  • 存储位置:Cookie存储在客户端浏览器上,session的数据信息存放在服务器上,会消耗服务器端的性能。
  • 存储数据大小:单个cookie保存的数据<=4KB,session的内容大小没有限制。
  • 安全性:Cookie相比于session来说不是安全的,容易被窃取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值