JSP内置对象

Jsp内置对象是Web容器创建的一组对象,不适用new关键字来创建就能直接使用

如out.print();;里的out就是JspWrite的一个内置对象


Jsp有九大内置对象:out   request   response   session   application  五个常用对象 及page, pageContext, enception, config四个不常用对象

1)out:

JspWrite类的实例,向客户端输出的常用对象;

常用方法:

1:void print()  打印字符串

2.void flush()  将缓冲区内容输出

3.void clear()  清除缓冲区内容,在flsh()之后会抛出异常

4.void clearBuffer()   除缓冲区内容,在flsh()之后不会抛出异常

5.void close() 关闭输出流


2)request

表单的两种提交方式:post和get

get:以明文的方式通过url提交数据,适合提交数据量低于2kb,安全性较低的数据,如果使用该方式传输账号密码,则账号密码会在地址栏中显示出来,使用post则不会

post:提交的信息封装在HTML HEADER里,适合提交数据量较大,安全性较高的数据

<span style="font-size:14px;"><form name="regForm" action="request.jsp" method = "post">
		<table>
			<tr>
				<td>用户名:</td>
				<td><input type="text" name="username"/></td>
			</tr>
			<tr>
				<td>密码:</td>
				<td><input type="password" name="password"/></td>
			</tr>
			<tr>
		<tr>
			  <td colspan="2"><input type="submit" value="提交"/></td>
			</tr>
				
		</table>
	</form></span>

request对象:

客户端的请求信息被封装在reqest对象中,request对象具有请求域,在完成客户端请求之前,该对象一直有效.


常用方法:

1.String getParameter(String name)返回name指定的参数值

2.String[] getParameterValues(String name)返回包含参数name的所有值得数组

3.void setAttribute(String,Object)存储一对键值和存储值

4.object getAttribute(String name)使用键值,返回指定属性的属性值

5.String getProtocol() 返回请求用的协议类型及版本号

6.String getServerName()  返回接收请求的服务器主机名

<span style="font-size:14px;">用户名:<%=request.getParameter("username") %><br>
    	爱好:<%
    		String favorites[] = request.getParameterValues("favorite");
    		for(int i = 0; i < favorites.length;i++)
    		{
    			out.println(favorites[i] + "  ");
    		}	
    	 %>
    	 密码:<%= request.getAttribute("password") %><br>
    	 MIME类型:<%=request.getContentType() %><br>
    	 协议类型及版本号: <%=request.getProtocol() %><br>
    	 服务器主机名:<%= request.getServerName() %><br>
    	 服务器端口号:<%= request.getServerPort() %><br>
    	 文件长度:<%= request.getContentLength() %><br>
    	 客户端的IP地址:<%= request.getRemoteAddr() %><br>
    	 请求的真实路径:<%=request.getRealPath("request.jsp") %><br>
    	 请求的上下文路径:<%= request.getContextPath() %><br></span>

运行结果


3)response对象

response对象包含了响应客户请求的有关信息,它是HttpServletResponse类的实例,response对象具有页作用域,即访问一个页面时,该页面的response

对象只能这次访问有效,其他页面的response对象对当前页面无效.


常用方法:

String getCharacterEncoding()  返回响应用的是何种字符编码

void setContentType(String type)  设置响应的MIME类型

PrintWriter getWriter() 返回可以向客户端输出字的一个对象

sendRedirect(java.lang.String location )   重新定向客户端的请求


请求转发以请求重定向:

请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次请求对象不会保存,地址栏的URL地址会改变


请求转发:服务器行为,request.getRequestDisoatcher().forword(req.resp);是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变


4)session对象

</pre><p><pre name="code" class="java">

session对象用于在会话范围内,记录每个客户端的访问状态,以便于跟踪每个客户端的操作状态,在会话存储的信息,在浏览器发出后续请求时可以获取这些会话的有效数据。
在jsp页面中可以直接使用session对象(jsp的内置对象),也可以通过pageContext.getSession()或者request.getSession重新回去session对象。
session可以保存用户的信息和实现购物车等功能。
HTTP协议是一种无状态协议,客户向服务器发出的请求request,然后服务器返回响应response,连接就被关闭了,在服务器不保存连接的有关信息,因此在下一次连接时,服务器已经没有以前的连接信息了,无法判断这一次连接和上一次连接时同一个客户信息,因此,必须使用会话记录有关连接的信息。
从客户打开浏览器连接到服务器,到客户关闭浏览器离开这个服务器,称做一个会话。当客户访问服务器是,可能会反复连接这个服务器上的几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这时就需要session对象。
session的工作原理如下:
1、客户首次访问服务器的一个页面时,服务器就会为该用户分配一个session对象,同时为这个session指定唯一的ID,并且将该ID发送到客户端并写入到cookie中,使得客户端与服务器的session建立一一对应的关系;
2、当客户端继续访问服务器端的其它资源时,服务器不再为该客户分配新的session对象,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效,客户端与服务器的会话结束。
3、当客户重新打开浏览器访问网站时,服务器会重新为客户分配一个session对象,并重新分配sessionID。
session对象主要用于属性操作和会话管理,常用方法如下:
1、public void setAttribute(String name,String value)设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。
2、public Object getAttribute(String name)在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。
3、public void removeAttribute(String name),删除指定名字的session属性,若该属性不存在,则出现异常。
4、public void invalidate(),使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。
5、public String getId( ),获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。
6、public void setMaxInactiveInterval(int interval) 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。
7、public int getMaxInActiveInterval(),获取会话的最大持续时间。
8、使用session对象的getCreationTime()和getLastAccessedTime()方法可以获取会话创建的时间和最后访问的时间,但其返回值是毫秒,一般需要使用下面的转换来获取具体日期和时间。
     Date creationTime = new Date(session.getCreationTime());
    Date accessedTime = new Date(session.getLastAccessedTime());
<%@ page language="java" import="java.util.*" contentType="text/html;charset=GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>session对象方法</title>
   
 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">   
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css">
 -->
  </head>
 
  <body>
    <b>
    会话ID:<%=session.getId() %> <br>
    是否新会话:<%=session.isNew() %><br>
    设置和获取属性对象:用户名 =
    <%session.setAttribute("用户名","bing"); %>
    <%=session.getAttribute("用户名") %><br>
    <%
    Date creationTime = new Date(session.getCreationTime());
    Date accessedTime = new Date(session.getLastAccessedTime());
     %>
     会话创建时间:<%=creationTime %><br>
     上次访问时间:<%=accessedTime %><br>
     会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
     <%session.setMaxInactiveInterval(12); %>
     修改后的会话持续时间(s):<%=session.getMaxInactiveInterval() %><br>
     <%session.invalidate(); %>
     </b>
  </body>
</html>

当Session对象处于无任何操作状态30分钟,将会自动关闭


调用session.invalidate()方法可以销毁当前会话session对象

设定一个session对象的自动关闭时间有两种方法

第一种是:使用session.setMaxInactiveInterval();单位是秒

第二种是:在web.xml中配置

<session-config>
  <session-timeout>
    1
  </session-timeout>
</session-config>   
单位是分钟

5)application对象

application对象实现了用户间数据的共享,可以存放全局变量,application开始于服务器的启动,终止于服务器的关闭

application对象属于整个服务器,而不属于某一个项目,所以从任何地方都可以访问到application对象

<span style="font-size:14px;"><h1>application内置对象</h1>
    <%
    	application.setAttribute("city", "北京");
    	application.setAttribute("postcode", "10000");
     %>
         所在城市是:<%=application.getAttribute("city") %><br>
    属性有:
    <%
    	Enumeration attributes = application.getAttributeNames();
    	while(attributes.hasMoreElements())
    	{
    		out.println(attributes.nextElement() + "  ");
    	}
     %><br>
     版本数据:<%= application.getServerInfo() %></span>

6)page内置对象

page对象就是jsp页面本身,类似于this

是java.lang.Object类的实例,其主要方法也和Object类相似

7)pageContext对象

pageContext对象提供了对JSP页面所有的对象及名字空间的访问

它可以访问本页session

主要方法:

HttpSession getSession();   返回当前页的Session对象

ServletREquest getRequest();返回当前页的Servletrequest对象

void forward(String relativeUrlPath)   使当前页面跳转到另一页面

void include(String relativeUrlPath)  在当前位置包含另一文件


8)Config对象

config对象是在一个Servlet初始化时,JSP引擎向他传递信息用的,此信息包括Servlet初始化时所要用到的参数以及服务器的有关信息

常用方法:

ServletContext getServletContext()   返回服务器相关信息的ServletContext对象

String getIniParameter(String name)返回初始化参数的值

Enumeration getInitParameterNames() 返回Servlet初始化所需要的所有参数的枚举


9)Exception对象

exception对象是java.lang.Throwable的一个异常对象,当一个页面在运行过程中发生异常,就产生这个对象,如果一个人JSP页面药应用这个对象,就必须先把isErrorpage设为true,否则无法编译


主要方法:

String getMessage() 返回描述异常的消息

String toString()返回关于异常的简短描述信息

void printStackTrace(0  显示异常及其栈轨迹

throwable FillStackTrace()  重写异常的执行栈轨迹


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值