[JSP]内置对象

内置对象

1. 定义

        - 可以不用声明和创建,就可以直接在JSP页面脚本(Java程序片和Java表达式)中使用的成员变量

2. 为什么不用声明和创建?

        - 内置对象必须由支持JSP的容器去创建

3. 九大内置对象

        - request请求对象 (重点)              

        - response响应对象(重点)

        - session会话对象(重点)               

        - out输出对象(重点)

        - page页面对象                                  

        - application应用程序对象

        - pageContext面上下文对象             

        - config配置对象

        - exception异常对象

request

1. 定义

        - 客户端的请求信息被封装在request对象中,通过它才能了解客户的需求,然后做出响应

2. 方法

        1) getParmeter(String name): 获取表单提交的信息,以字符串形式返回某个请求参数的值;当没有参数与之对应,返回null

        2 )getParameterNames():获得客户端传送给服务器端的所有参数,其结果是一个Enumeration(枚举)实例。

        3)getCharacterEncoding():返回客户端请求中的编码方式。

        4)getContentLength():以字节为单位返回客户端请求的大小

        5) getHeader(String name): 用户获取HTTP协议文件头信息中指定名字的值。

        6 )getHeaderNames():  返回HTTP协议所有文件头信息,其结果是一个Enumeration(枚举)实例。

        7)getMethod():返回客户端请求的方法(get or post)。

        8)getProtocal():获取客户端向服务器端传送使用的协议。

        9) getRequestURL(): 用户获取客户端URL地址。

        10)getRemoteAddr():  获取客户端IP地址。

        11)getRemoteHost():获取客户端主机名字。

        12)getServerName():获取服务器端主机的名字。

        13)getServerPort():获取服务器端口号;

        14) removeAttribute(String name): 删除请求的一个属性。

        15)setAttribute(String name,Object object):   request对象设置属性。

        16)getAttribute(String name):获取request对象属性为name的值。

        17)getAttributeNames(): 返回request对象所有属性值,结果是一个Enumeration(枚举)实例。

// RequestTest.jsp
<%@ page import="java.util.Enumeration" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@
        page errorPage="error.jsp"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Insert title here</title>
</head>
<body>
<%
  //1 获得login页面传来的参数
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  out.println(username);
  out.println(password);

  Enumeration names = request.getParameterNames();
  while(names.hasMoreElements()){
    out.println("this is "+names.nextElement());
  }

  out.println(request.getCharacterEncoding());
  out.println(request.getContentLength());

%>


</body>
</html>

//login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录界面</title>
<link href="../CSS/login.css" rel="stylesheet" >
</head>
<%--
任务:

1)合理使用页面跳转或者重定向;

2)使用session控制系统登录入口;

3) 通过session控制会话过期时间;

4)系统加入异常页面处理逻辑;
--%>
<body>
<div class="login">
	<div class="loginTitle">用户登录</div>
	<div class="loginForm">
<%--		<form action="validDate.jsp" method="post">--%>
	<form action="RequestTest.jsp" method="post">
			<table class="loginTable">
				<tr>
					<td>账号:</td>
					<td><input id="username" name="username" type="text"></td>
				</tr>
			
				<tr>
					<td>密码:</td>
					<td><input id="password" name="password" type="password">&nbsp;&nbsp;
					<a href="#">忘记密码?</td>
				</tr>
				<tr>
					<td></td>
					<td>
						<input type="submit" value="提交">
						<input type="reset" value="重置">
						
					</td>
				</tr>
			
					
			</table>
		</form>
	</div>
</div>
</body>
</html>

getParameter(String name) 和 getAttribute(String name)

1. 当两个页面为链接关系(从客户端到服务器端),通过getParameter()来获得请求参数

2. 当连个页面为转发关系(服务器端内部跳转forward),通过getAttribute()来获得请求参数

3. getParameter()返回字符串,getAttribute()返回Object

response

1. 定义

        - 用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应       

2. 方法

        1) addCookie(Cookie cook): 用户给用户添加一个Cookie,保存客户端相关信息。

        2 )addHeader(String name, String value):添加带有指定名字和字符串的HTTP文件头信

        3)getCharacterEncoding():返回响应的字符串编码方式。

        4)sendError():向客户端发送错误信息;

        5) sendRedirect(): 重新定向客户端请求。

        6)setCharacterEncoding():设置响应的字符串编码方式。

3. request.redireact("XX.jsp")

        1. 效果:跳转到XX.jsp文件

<jsp:forward pag=""/> & request.redireact("XX.jsp")区别

1. <jsp:forward pag=""/> 在服务器中跳转界面,因此网址不会变化,网址是进入服务器的时的网址

2. request.redireact("XX.jsp")服务器和客户端一来一回的跳转

session

1. 定义

        - JSP利用servlet提供的HttpSession接口来识别一个用户,存储这个用户的所有访问信息。默认情况下,JSP允许会话跟踪,一个新的HttpSession对象将会自动地为新的客户端实例化。

2. 方法

        1) public Object getAttribute(String name): 返回session对象中与指定名称绑定的对象,如果不存在则返回null。

        2 )public Enumeration getAttributeNames():返回session对象中所有的对象名称,其结果是一个Enumeration(枚举)实例。

        3)public long getCreationTime():返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起
        4) public String getId(): 返回session对象的ID。

        5 )public long getLastAccessedTime():返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起。

        6)public int getMaxInactiveInterval():返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开

        7) public void invalidate():将session无效化;

        8) public void removeAttribute(String name): 移除session中指定名称的对象

        9 )public void setAttribute(String name, Object value) :使用指定的名称和值来产生一个对象并绑定到session中

        10)public void setMaxInactiveInterval(int interval):用来指定时间,以秒为单位,servlet容器将会在这段时间内保持会话有效;

<%
  session.setAttribute("attr1", "demo1");
  String attr1 = (String)session.getAttribute("attr1");
%>
session attr1 is:<%=attr1%><br>

<%
  String id = session.getId();
  // 获取session创建时间
  Date createTime = new Date(session.getCreationTime());
  // 获取最后访问页面的时间
  Date lastAccessTime = new
          Date(session.getLastAccessedTime());
%>


<%!
  int count =1;
%>
<%
  if(session.getAttribute("count")==null){
    count++;
    session.setAttribute("count",1);
  }
%>
<%=count%>

out

1. 定义

        - out对象在浏览器客户端输出内容(页面缓冲区输入,当缓冲区满或者页面执行结束时,将缓冲区的内容输出)。

2. 方法

        1) void println():向客户端打印字符串。

        2)void flush():将缓冲区内容输出到客户端。

        3)void clear():清除缓冲区,在flush()方法之后调用会异常。

        4)void clearBuffer():清除缓冲区,在flush()之后调用不会异常;

        5)int getBufferSize():返回缓冲区字节数大小; 

区别

out输出是先往页面缓冲区中写,缓冲区满或者页面执行结束,然后再输出;

- response.Writer是直接输出

application

1. 定义:

        - 实现用户之间数据的共享,为全局变量。Tomcat服务器的启动和关闭决定了application的生命周期。

2. 方法       
        1) public Object getAttribute(String name): 返回applicaltion对象中与指定名称绑定的对象,如果不存在则返回null。
        2 )public Enumeration getAttributeNames():返回applicaltion对象中所有的对象名称,其结果是一个Enumeration(枚举)实例。
        3)public void setAttribute(String name ,Object value):设置application属性及其值。
        4) public void removeAttribute(String name): 删除applicaltion对象中属性及其对应的值。
        5 )public String getServerInfo():返回Servet编译器版本信息。

<%
  Integer sum = (Integer) application.getAttribute("sum");;
%>
<%
  if(sum==null){
    sum =1;
    session.setAttribute("count",1);
  }else{
    if(session.getAttribute("count")==null){
      sum++;
      session.setAttribute("count",1);
    }
  }
  application.setAttribute("sum",sum);
//  更新sum值
%>


pageContext

1. 定义:

        - 实现获得当前JSP页面所有对象和命名空间的访问。        

2. 方法:
        1) getRequest(): 返回当前的request对象。

        2) getResponese():返回当前的response对象。

        3)   getSession():返回当前的session对象。

        4)   getOut():返回当前的out对象。

page

- 指向当前JSP页面本身,有点像类中的this指针,它是java.lang.Object类的实例。

config

- 代表当前JSP 配置信息,但JSP 页面通常无须配置,因此也就不存在配置信息

exception

- 是Throswable实例,代表JSP脚本中产生的错误和异常,是JSP页面机制的一部分

生命周期

- 小->大
        - page对象:仅在当前页面存在        
        - request对象: 从一个页面到另外一个页面访问请求。
        - session对象: 某一个用户的会话,只要浏览器不关闭或者会话时间未过期,就一直存在。
        - application: 所有用户的共同会话,所有用户共享的成员变量。只要Tomcat未关闭,就一直存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值