JSP页面请求与响应以及保存页面状态
JSP内置对象简介
request
通过getParameter()方法能够得到请求的参数,请求类型(GET,POST,HEAD等)以及HTTPheaders(Cookies,Referer等)。request是ServletRequest而不是HTTPServletRequest的子类,但是request还没有Http之外其他可实际应用的协议。
该对象的作用域:为用户请求期间。
response
它的作用是向客户端返回请求。注意输出流首先需要进行缓存。虽然在Servlet中,一旦将结果输出到客户端就不再允许设置HTTP状态以及response头文件,但在JSP中这些设置是合法的。
该对象的作用域为页面执行期间。
out
这是一个javax.servlet.JspWriter类型的对象,将结果输出到客户端。为了区分response对象,JspWriter是具有缓存的PrinterWriter.我们可以通过page属性调缓存的大小,甚至关闭缓存。
该对象的作用域为页面执行期间
session
该对象适用于在同一个应用程序中各个客户端的各个页面中共享数据,session对象通常应用于保存用户/管理员信息,和购物车信息。
该对象的作用域为会话期间。
application
该对象适用于同一个应用程序中各个用户间共享数据,application对象通常应用在计数器或是聊天室。
该对象的作用域为整个应用程序执行期间。
page
适用于操作JSP页面自身,在开发Web应用很少,用来表示JSP页面Servlet的一个实例,相当于Java中this关键字。
该对象的作用域为页面执行期间。
pageContext
该对象的作用域为页面执行期间。
config
该对象的作用域为页面执行期间。
是用于读取服务器配置信息。
exception
仅在处理错误页面信息时有效,可以用来处理捕获的异常。
该对象的作用域为页面执行期间。
页面输出对象
方法名称 | 使用说明 |
---|---|
clear() | 清除缓冲区里的数据,而不把数据写到客户端 |
clearBuffer() | 清除缓冲区当前内容,并把数据写道客户端 |
flush() | 输出缓冲区的数据 |
getBufferSize() | 返回缓冲区以字节数的大小 |
getRemainning() | 获取缓冲区剩余空间大小 |
isAutoFlush() | 返回缓冲区满时,是自动清空还是抛出异常 |
close() | 关闭输出流,从而可以强制终止当前页面的剩余部分像浏览器输出 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>管理缓冲区</h2>
<%
out.print("<h2>梦天</h2>");
out.clearBuffer();//清除当前缓冲区内容并把当前数据写到客户端
out.print("Hello out对象<br/>");
out.flush();//输出缓冲区的数据
out.print("剩余缓冲区大小:"+out.getRemaining()+"bytes<br/>");
out.print("默认缓冲区大小:"+out.getBufferSize()+"bytes<br/>");
out.print("剩余缓冲区大小:"+out.getRemaining()+"bytes<br/>");
out.print("是否使用默认AutoFlush:"+out.isAutoFlush());
%>
</body>
</html>
页面对象page
方法名称 | 使用说明 |
---|---|
hasCode() | 返回页面中的hasCode |
getClass() | 返回网页的类信息 |
toString() | 返回代表当前网页的文字字符串 |
equals(Object o) | 比较o对象和指定对象是否相等 |
getServletConfig() | 获得当前的config对象 |
getServletInfo() | 返回关于服务器程序的信息 |
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" pageEncoding="GBK" info="使用page对象" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
out.print("返回服务器程序信息");
String info;
info=((javax.servlet.jsp.HttpJspPage)page).getServletInfo();
out.print(info);
%>
<%!
Object obj;//声明一个Object对象
%>
<p>返回网页类信息,getClass()方法:<%=page.getClass()%></p>
<p>返回当前网页文字字符串:<%=page.toString()%></p>
<p>返回文件网页中的hasCode:<%=page.hashCode()%></p>
<p>与Object对象比较的返回值:<%=page.equals(obj)%></p>
<p>与this对象比较的返回值:<%=page.equals(this)%></p>
</body>
</html>
页面请求对象request
request对象的生命周期是由JSP容器自动控制的,当客户端通过HTTP请求一个JSP页面时,JSP容器就会创建request对象并将请求信息包装到request对象中,当JSP容器处理完请求后,request对象就会被销毁。
<%@ page import="java.util.Enumeration" %><%--
Created by IntelliJ IDEA.
User: gao
Date: 2019/9/21
Time: 10:07
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>使用request对象获取客户端的基本信息</title>
<table border="2" cellpadding="3" cellspacing="3"><!--cellpadding单元格与内容间隔 cellspacing 单元格与单元格之间-->
<tr>
<td>客户使用和协议为</td>
<td><%=request.getProtocol()%></td>
</tr>
<tr>
<td>接收客户提交信息的页面:</td>
<td><%=request.getServletPath()%></td>
</tr>
<tr>
<td>接收客户提交信息的长度:</td>
<td><%=request.getContentLength()%></td>
</tr>
<tr>
<td>客户提交信息的方式:</td>
<td><%=request.getMethod()%></td>
</tr>
<tr>
<td>获取Http头文件中User-Agent的值:</td>
<td><%=request.getHeaders("User-Agent")%></td>
</tr>
<tr>
<td>获取HTTP头文件中accept的值:</td>
<td><%=request.getHeaders("accept")%>></td>
</tr>
<tr>
<td>获取HTTP头文件中Host的值:</td>
<td><%=request.getHeaders("Host")%>></td>
</tr>
<tr>
<td>获取HTTP头文件中accept-encoding的值:</td>
<td><%=request.getHeaders("accept-encoding")%>></td>
</tr>
<tr>
<td>获取客户的IP地址</td>
<td><%=request.getRemoteAddr()%></td>
</tr>
<tr>
<td>获取客户机的名称</td>
<td><%=request.getRemoteHost()%></td>
</tr>
<tr>
<td>获取服务器的名称</td>
<td><%=request.getServerName()%></td>
</tr>
<tr>
<td>获取服务器的端口号</td>
<td><%=request.getServerPort()%></td>
</tr>
<tr>
<td>获取头名字的一个枚举</td>
<td>
<%
Enumeration enum_headed= request.getHeaderNames();
while(enum_headed.hasMoreElements()){
String s=(String) enum_headed.nextElement();
out.print(s);
}
%>
</td>
</tr>
<tr>
<td>获取头文件中指定头名字的全部值的一个枚举:</td>
<td>
<%
Enumeration enum_headedValues= request.getHeaders("cookie");
while(enum_headedValues.hasMoreElements()){
String s=(String) enum_headedValues.nextElement();
out.print(s);
}
%>
</td>
</tr>
</table>
</head>
<body>
</body>
</html>
页面响应对象 response
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<form name="login" action="pre.jsp" method="post">
用户名<input type="text" name="userName"/><Br/>
密码:<input type="password" name="password"/><br/>
<input type="submit" value="提交" name="submit"/>
<input type="reset" value="重置" name="reset"/>
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String username=request.getParameter("userName");
String password=request.getParameter("password");
if(username.equals("admin")&&password.equals("888888")){
response.sendRedirect("main.jsp");
}else{
response.sendError(404,"用户名或者密码错误");
}
%>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
登陆成功
</body>
</html>
全局应用程序对象application
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>application</title>
</head>
<body>
<%
Integer number=(Integer) application.getAttribute("number");
if(number==null){
number= new Integer(1);
application.setAttribute("number",number);
}else{
number=new Integer(number.intValue()+1);
application.setAttribute("number",number);
}
out.print("欢迎您!您是本站第"+number+"位访客");
%>
</body>
</html>
posted on 2019-09-20 15:45 一颗小白杨站在哨所旁 阅读(913) 评论(0) 编辑 收藏 举报