JSP内置对象

JSP内置对象包括request对象、response对象、session对象、out对象、application对象、page对象、exception对象、pageContext对象、config对象。这些对象在客户端和服务器端交互的过程中分别完成不同的功能。

1.Request对象

Request对象是javax.servlet.http.HtupServletRequest类的实例。代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。比如表单中的数据、网页地址后带的参数等。
常用方法 方法介绍

方法 说明
String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String,Object) 存储此请求中的属性
Object getAttribute(String name) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所用的端口号
String getCharacterEncoding() 返回字符编码方式
void setCharacterEncoding() 设置请求的字符编码方式
int getContentLength() 返回请求体的长度(以字节数)
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRealPath(String path) 返回一虚拟路径的真实路径
String request.getContextPath() 返回上下文路径
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <h1>用户注册</h1>
    <form name="regForm" action="request.jsp" method="get">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="username" /></td>
            </tr>
            <tr>
                <td>爱好:</td>
                <td><input type="checkbox" name="favorite" value="read">读书
                <input type="checkbox" name="favorite" value="music">音乐
                <input type="checkbox" name="favorite" value="moive">电影
                <input type="checkbox" name="favorite" value="internet">上网</td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="提交" /></td>
            </tr>
        </table>
    </form>
    <br>
    <br>
    <a href="request.jsp?username=xxx">测试URL传参数</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
    <h1>request内置对象</h1>
    <%
        request.setAttribute("password", "123456");
    %>
    用户名:<%=request.getParameter("username")%>
    <br> 
    爱好:
    <%
        if (request.getParameterValues("favorite") != null) {
            String[] fav = request.getParameterValues("favorite");
            for (int i = 0; i < fav.length; i++) {
                out.println(fav[i] + "&nbsp;&nbsp;");
            }
        }
    %>
    <br> 
    密码:<%=request.getAttribute("password")%><br> 
    请求体的mime类型:<%=request.getContentType()%><br>
    协议类型及版本号:<%=request.getProtocol()%><br> 
    服务器主机名:<%=request.getServerName()%><br>
    请求的端口号:<%=request.getServerPort()%><br> 
    字符编码方式:<%=request.getCharacterEncoding()%><br>
    请求体的长度:<%=request.getContentLength()%><br> 
    返回发送请求的客户端IP地址:<%=request.getRemoteAddr()%><br>
    返回虚拟路径的真实路径:<%=request.getRealPath("request.jsp")%><br> 
    返回上下文路径:<%=request.getContextPath()%><br>

</body>
</html>

2.Response对象

Response对象是javax.servlet.http.HttpServletResponse类的实例。代表响应对象,主要用于向客户端发送数据。

方法 说明
addCookie 添加一个Cookie对象
addHeader 添加Http文件指定名字头信息
containsHeader 判断指定名字Http文件头信息是否存在
encodeURL 使用sessionid封装URL
flushBuffer 强制把当前缓冲区内容发送到客户端
getBufferSize 返回缓冲区大小
getOutputStream 返回到客户端的输出流对象
sendError 向客户端发送错误信息
sendRedirect 把响应发送到另一个位置进行处理
setContentType 设置响应的MIME类型
setHeader 设置指定名字的Http文件头信息
<%
    response.sendRedirect("login.jsp");  //重定向到登录页面
%>

设置页面自动刷新

通过设置HTTP头还可以实现页面的自动刷新。

示例:使页面每隔10秒自动刷新一次。

<%
    response.setHeader("refresh", "10");
%>

定时跳转网页

通过设置HTTP头还可以实现定时跳转页面功能。

示例:使页面5秒后自动跳转到指定的网页。

<%  response.setHeader("refresh", "5;URL=login.jsp");%>

禁用缓存

在默认情况下,浏览器将会对显示的网页内容进行缓存,这样可以提高网页的显示速度。对于一些安全性要求比较高的网站,通常需要禁用缓存。

示例:通过设置HTTP头的方式实现禁用缓存。

<%
    response.setHeader("Cache-Control", "no-store");
    response.setDateHeader("Expires", 0);
%>

1)如果使用request.getRequestDispatcher().forward() 这种方式进行跳转页面,前后页面共享一个request,存储在request里面的数据也会一起发送过去下一个页面, 。
2)如果用response.sendRedirect()是重新定向,前后页面不是一个request。

你在页面中写的request,当这个jsp页面被servlet容器编译成servlet,再生成html流,通过response输出到前端时生命周期才算结束,你的request在编译、执行期间都是有效的,这次请求响应的周期直到response.write才算结束。不要弄混淆,你写的JSP和用户在前端看到的并不是同一个东西,JSP只是脚本,用户看到的是脚本解释执行后输出的结果

3.Out对象

Out对象是javax.servletjspjspWriter类的实例。主要用于向客户端浏览器输出数据。

print()方法

示例:通过两种方式向客户端浏览器输出文字。

<%  out.print("数字:");%>

println()方法

println()方法也可以用于向客户端浏览器输出信息,该方法输出内容后,还输出一个换行符。

示例:使用println()方法向客户端浏览器输出文字。

<pre>
<%
    out.print("数字:");
    out.println("1");
    out.println("2");
    out.println("3");
    out.println("<b>4</b>");
%>
</pre>

说明:使用println()方法输出内容要有换行的效果,需要同时使用HTML的<pre>标记括起来,否则无法显示换行效果。

4.session对象

session在网络中被称为会话。由于HTTP协议是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。为了弥补这一缺点,HTTP协议提供了session。通过session可以在应用程序的Web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。但是,如果在一个会话中,客户端长时间不向服务器发出请求,session对象就会自动消失。这个时间取决于服务器,例如,Tomcat服务器默认为30分钟。不过这个时间可以通过编写程序进行修改。

方法 说明
setAttribute(String name Object value) 该方法用于将信息保存到session范围内。
Object getAtribute(String name) 该访法用于获取session信息,返回值为Object类型。
removeAttribute(String name) 移除session对象。
invalidate() 销毁session对象。
long getL astAccessedTime() 返回客户端最后- -次与会话相关联的请求时间。
int getMaxinactiveInterval() 以秒为单位返回一个会话内两次请求最大时间间隔。
setMaxinactiveInterval(int interval) 以秒为单位设置session的有效时间。
long getCreationTime() 返回session对象被创建的时间,以毫秒为单位,从1970年1月1号凌晨开始算起。
String getld) 返回session对象的ID。
boolean isNew() 返回是否为- -个新的客户端,或者客户端是否拒绝加入session.
<%
    session.setAttribute("userName", "admin");           //保存session对象
    String userName = session.getAttribute("userName").toString();  //获取session对象
%>

5.Application对象

Application对象是javax.servlet.ServletContext类的实例。主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享。

方法 说明
String getInitParameter(String name) 获取已命名的应用程序初始化参数值。
Enumeration<String> getInitParameterNames() 获取所有已定义的应用程序初始化参数名的枚举。
Enumeration<String> getAttributeNames() 获取所有application对象使用的属性名。
Object getAttribute(String name) 从application对象中获取指定对象名。
void setAttribute(String key,Object obj) 使用指定名称和指定对象在application对象中进行关联。
void removeAttribute(String name) 从application对象中去掉指定名称的属性。

6.PageContext对象

PageContext对象是javax.servlet.jsp.PageContext类的实例。用来管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由JSP容器来完成的。

方法 说明
forward(String relativeUrlPath) 把页面转发给另一个页面。
getAttribute(String name) 获取参数值。
getAttributeNamesInScope(int scope) 获取某范围的参数名称的集合。
getException() 获取exception对象。
getRequest() 获取request对象。
getResponse() 获取response对象。
getSession() 获取session对象。
getOut() 获取out对象。
setAttribute(String name,Object value) 为指定范围内的属性设置属性值。
removeAttribute(String name) 删除指定范围内的指定对象。

7.Config对象

config对象主要用于取得服务器的配置信息。当一个Servlet初始化时,容器把某些信息通过config对象传递给这个Servlet。开发者可以在web.xml文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
config对象的常用方法如下:

方法 说明
getServletContext() 获取Servlet上下文。
getServletName() 获取Servlet服务器名。
getInitParameter(String name) 获取服务器所有初始化参数名称。
getInitParameterNames() 获取服务器中name参数的初始值。

8.Page(相当于this)对象

Page对象是javax.servlet.jsp.HttpJspPage类的实例。用来处理JSP网页,它指的是JSP页面对象本身,或者说代表编译后的servlet对象,只有在JSP页面范围之内才是合法的。

方法 说明
getClass() 返回当前Object的类。
hashCode() 返回该Object的哈希代码。
toString() 把该Object类转换成字符串。
equals(Object obj) 比较该对象和指定的对象是否相等。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page对象各方法的应用</title>
<meta name="author" content="">
</head>
<body>
<%! Object object;  //声明一个Object型的变量        %>
<ul>
    <li>getClass()方法的返回值:<%=page.getClass()%></li>
    <li>hashCode()方法的返回值:<%=page.hashCode()%></li>
    <li>toString()方法的返回值:<%=page.toString()%></li>
    <li>与Object对象比较的返回值:<%=page.equals(object)%></li>
    <li>与this对象比较的返回值:<%=page.equals(this)%></li>
</ul>
</body>
</html>

9.Exception对象

Exception对象是java.lang.Throwable类的实例。处理JSP文件执行时发生的错误和异常只有在JSP页面的page指令中指定isErrorPage=“true”后,才可以在本页面使用exception对象。

方法 说明
getMessage() 返回exception对象的异常信息字符串。
getLocalizedMessage() 返回本地化的异常错误。
toString() 返回关于异常错误的简单信息描述。
fillInStackTrace() 重写异常错误的栈行轨迹。

JSP四大作用域:

范围 说明
pageContext范围 只在一个页面保留数据(javax.servlet.jsp.PageContext(抽象类))
request范围 只在一个请求中保存数据(javax.servlet.httpServletRequest)
Session范围 在一个浏览器范围在一次会话中保存数据,仅供单个用户使用(javax.servlet.http.HttpSession)
Application范围 在整个服务器中保存数据,全部用户共享(javax.servlet.ServletContext)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容