一、内置对象概述
内置对象 | 定义 | 作用 |
---|---|---|
request对象 | request对象是从客户端向浏览器发送的请求,包括用户提交的信息以及客户端的一些信息 | 1.访问请求参数 2.在作用域中管理属性 3.获取Cookie 4.获取客户信息 5.访问安全信息 6.访问国际化信息 |
response对象 | response对象和request对象相对应,用于响应客户请求,向客户端输出信息。请求的数据可以是各种数据类型,甚至是文件。 | 1. 重定向网页 2.设置HTTP响应报头 3.缓冲区配置 |
session | 该对象可用来保存在服务器与一个客户端之间需要保存的数据,当客户端关闭网站的所有网页时,session变量会自动消失 | 1.创建及获取客户的会话 2.移除会话 3.销毁会话 |
application对象 | 实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭 | 1.访问应用程序初始化参数 2.管理应用程序环境属性 |
out对象 | 它是JspWriter类的实例,是向客户端输出内容常用的对象 | 1.管理响应缓存区 2.向客户端输出数据 |
二、request对象
- 访问请求参数
String userName = request.getParameter("name");
- 在作用域中管理属性
request.setAttribute("key", Object);
request.getAttribute(String name);
有时,在进行请求转发时,需要把一些数据带到转发后的页面进行处理。这时,就可以使用request对象的setAttribute()方法设置数据在request范围内存取。注意这里强调的是请求转发,而不是请求重定向。请求重定向request就会结束它当前的生命周期。看下面例题。
例题:
<%@ page contentType="text/html;charset=utf-8" %>
<%
request.setAttribute("error","sorry");
%>
<jsp:forward page="show.jsp"/>
<%@ page contentType="text/html;charset=utf-8" %>
<%out.println("错误提示信息为:"+request.getAttribute("error"));%>
运行结果:
- 获取Cookie
- cookie是什么?
Cookie是一小段文本信息,保存用户相关信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。- 具体的过程如下:
当用户访问站点时,web应用程序中创建cookie,可以利用Cookie保存用户首选项或其他信息,这样当用户下次再访问站点时,应用程序就可以检索以前保存的信息。
Cookie[] cookie = request.getCookies();
例子:
<%@ page contentType="text/html;charset=utf-8" %>
<%
Cookie[] cookies=request.getCookies();//从request中获得Cookies集
//初始化Cookie对象为空
Cookie cookie_response=null;
if(cookies!=null){
cookie_response=cookies[1];
}
out.println("本次访问时间:"+new java.util.Date().toLocaleString()+"<br>");
if(cookie_response!=null){
//输出上一次访问的时间,并设置cookie_response对象为最新时间
out.println("上一次访问时间:"+cookie_response.getValue());
cookie_response.setValue(new java.util.Date().toLocaleString());
}
//如果是第一次访问没有设置cookie的话,就添加一个
if(cookies==null){
cookie_response=new Cookie("AccessTime","");
cookie_response.setValue(new java.util.Date().toLocaleString());
response.addCookie(cookie_response);
}
%>
-
获取客户信息
例子:<%@ page contentType="text/html;charset=utf-8" %> 客户提交信息的方式:<%=request.getMethod()%> <br>使用的协议:<%=request.getProtocol()%> <br>获取发出请求字符串的客户端地址:<%=request.getRequestURI()%> <br>获取提交数据的客户端IP地址:<%=request.getRemoteAddr()%> <br>获取服务器端口号:<%=request.getServerPort ()%> <br>获取服务器的名称:<%=request.getServerName()%> <br>获取服务器的机器名称:<%=request.getRemoteHost()%> <br>获得Http协议定义的文件头信息Host的值:<%=request.getHeader("Host")%> <br>获得Http协议定义的文件头信息User-Agent的值:<%=request. getHeader("User-Agent")%>
运行结果:
-
5.访问安全信息
三、response对象
-
重定向网页
在JSP页面中,可以使用response对象中的sendRedirect()方法将客户请求重定向到一个不同的页面。例如,将客户请求转发到login_ok.jsp页面的代码如下:response.sendRedirect("login_ok.jsp");
在JSP页面中,还可以使用response对象中的sendError()方法指明一个错误状态。该 方法接收一个错误以及一条可选的错误消息,该消息将在内容主体上返回给客户
response.sendError(500,"请求页面存在错误")”
-
设置HTTP响应报头
案例:
<%@ page contentType="text/html;charset=utf-8" %>
<%
if(request.getParameter("submit1")!=null){
response.setContentType("application/msword;charset=gb2312");
}
%>
平平淡淡才是真!
快快乐乐才是福!
<form action="#" name=form1>
<input name=submit1 type=submit id=submit1 value=保存为word>
</form>
运行结果:
- 缓存区设置
缓冲可以更加有效地在服务器与客户之间传输内容。
案例:
<%@ page contentType="text/html;charset=utf-8"%>
<%
out.print("缓冲区大小:"+response.getBufferSize()+"<br><br>");
out.print("缓冲区设置之前<br>");
out.print("输出的内容是否提交:"+response.isCommitted()+"<br><br>");
response.flushBuffer();
out.print("缓冲区设置之后<br>");
out.print("输出的内容是否提交:"+response.isCommitted()+"<br><br>");
%>
运行结果:
四、session对象
- 创建及获取客户的会话
JSP页面可以将任何对象作为属性来保存。session内置对象使用setAttribute()
和getAttribute()方法创建及获取客户的会话。
和之前的request一样,只不过它们作用的范围不一样。session只要不关闭浏览器它就存在,不管请求进行多少次重定向。但request不一样。
-
从会话中移除指定的对象
session内置对象使用removeAttribute()方法将所指定名称的对象移除,也就是说,从这个会话删除与指定名称绑定的对象。removeAttribute()方法的语法格式如下:session.removeAttribute (String name);
-
销毁session
JSP页面可以将已经保存的所有对象全部删除。session内置对象使用invalidate()方法将会话中的全部内容删除。invalidate()方法的语法格式如下:
五、application对象
- 访问应用程序初始化参数
通过application对象调用的ServletContext对象提供了对应用程序环境属性的访问。对于将安装信息与给定的应用程序关联起来而言,这是非常有用的。
例如,通过初始化信息为数据库提供了一个主机名,每一个Servlet程序客户和JSP页面都可以使用它连接到该数据库并检索应用程序数据。Tomcat使用了web.xml文件,它位于应用程序环境目录下的WEB-INF子目录中。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID"version="3.0">
<context-param> <!--设置IP信息-->
<param-name>database_host1</param-name>
<param-value>192.168.1.17</param-value>
</context-param>
<context-param>
<param-name>database_host2</param-name>
<param-value>192.168.1.66</param-value>
</context-param>
</web-app>
<%
java.util.Enumeration enema=application.getInitParameterNames();
while(enema.hasMoreElements()){
String name=(String)enema.nextElement();
String value=application.getInitParameter(name);
out.println(name+",");
out.println(value);
out.print("<br>");
}
%>
- 管理应用程序环境属性
六、out对象
-
管理响应缓冲
在JSP页面中,可以通过out对象调用clear()方法清除缓冲区的内容。 这类似于重置响应流,以便重新开始操作。
如果响应已经提交,则会有产生IOException异常的副作用。
相反,另一个种方法clearBuffer()清除缓冲区的“当前”内容,而且即使内容已经提交给客户端,也能够访问该方法。
out对象用于管理响应缓冲区的方法如下表所示。 -
向客户端输出数据
<%out.println("同一世界,同一梦想");%>