JSP学习笔记(3)-JSP内置对象
有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用,这些对象就是JSP的内置对象。
JSP常用的内置对象有request,response,session,application,out.
其中两个重要的request和response对象提供了服务器和浏览器通信方法的控制。
1.request对象(请求对象)
作用:封装用户提交的信息,获取封装信息等
1.1.获取用户提交信息
request.getParameter(String s);//获取提交信息
如果该方法获取是得到空对象会出现NullPointerException异常,处理该异常
String s=request.getParameter("s");
if(s==null){s="";}
1.2.处理汉字信息
(1)对信息重新编码
request将获取的信息重新编码,用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后将这个数组转换成字符串。
String str=request.getParameter("s");
byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
String str=new String(request.getParameter("s").getBytes("ISO-8859-1"),"utf-8");
(2)request设置编码
request在获取信息之前使用setCharacterEncoding()方法将自己的编码设置成utf-8
request.setCharacterEncoding("utf-8");
1.3常用方法
(1)getProtocol()获取用户向服务器提交信息所使用的通信协议,比如http/1.1
(2)getServletPath()获取用户请求的JSP页面文件的目录
(3)getContextPath()获取用户请求的当前Web服务目录
(4)getContentLength()获取用户提交的整个信息的长度
(5)getMethod()获取用户提交信息的方式,比如post或get
(6)getHeader(String s)获取HTTP头文件中由参数s指定的头名字的值。s可取值:accept,accept-language,content-type,accept-encoding,user-agent,host,content-length,connection,cookie等。
(7)getHeaderNames()获取头名字的一个枚举
(8)getHeaders(String s)获取头文件中指定头名字的全部值得一个枚举
(9)getRemoteAddr()获取用户的IP地址
(10)getServertName()获取服务器的名称
(11)getRemoteHost()获取用户机的名称(如果不能获取就获取IP地址)
(12)getServerPost()获取服务器的端口号
(13)getParmaeterNames()获取用户提交的信息体部分中name参数值的一个枚举
1.4作用域内管理属性
在进行请求转发操作时,把一些数据带到转发后的页面处理。这时,就可以使用request对象的setAttribute()方法将数据设置在request范围内存取。在request作用域中,设置转发数据的方法使用格式如下:request.setAttribute("key",value);
参数key为String类型的键名。在转发后的页面取数据时,通过这个键名来获取数据;参数value为Object类型的键值,代表需要保存在request范围内的数据。在requet作用域中,获取转发数据的方法使用格式如下:
Object object=request.getAttribute("name");
1.5获取Cookie
request对象中的getCookies()方法获取Cookie中的数据,
格式: Cookie[] cookie= request.getCookies();
该方法返回值是Cookie数组。
2.response对象(响应对象)
作用:对用户的请求做出动态响应,向用户端发送数据
2.1动态响应contentType属性
使用setContentType(String s)来改变contentType的属性
2.2页面重定向
在某些情况下响应用户时,需要将用户重新引导至另外一个页面,可以使用sendRedirect(URL url)方法实现。
JSP页面还可以使用response对象中的sendError()方法指明一个错误状态,该方法接受一个错误及一条可选的错误信息。该信息将在内容主体上返回给客户。
例如: response.sendError(500,”请求页面存在错误”);
上两个方法都中止当前的请求和响应。
response对象中用于重定向的方法如下:
sendError(int number):使用指定的状态码向客户发送错误响应。
sendError(int number,String msg):使用指定的状态码和描述性消息向客户发送错误响应。
sendRedirect(String location):指定的重定向位置URL并向客户发送重定向响应,可以使用相对URL。
response状态码
1xx:主要是实验性质的
2xx:用来表示请求成功
3xx:用来表明在请求之前应采取进一步的行动
4xx:当浏览器给出无法满足的请求时,返回该状态代码
5xx:用来表示服务器出现问题
2.3缓冲区输出
缓冲可以有效地在服务器与客户之间传输内容。
HttpServletResponse对象为支持jspWriter对象而启用了缓冲区配置。response对象可以为JSP页面设置缓冲区容量,检测缓冲区的状态。
response对象中用于相应缓冲的方法如下:
flushBuffer():强制把缓冲区中内容发送给客户。
getBufferSize():返回响应所使用的实际缓冲区大小,如果没使用缓冲区,则该方法返回0。
setBufferSize(int size):为响应的主体设置首选的缓冲区大小。
boolean isCommitted():表示响应是否已经提交,提交的响应已经写入状态码。
reset():清除缓冲区存在的任何数据,同时清除状态码。
3.session对象(会话对象)
HTTP是一种无状态协议,一个用户向服务器发起请求,然后服务器返回响应,在服务器端部保留连接的有关信息。
作用:记录有关连接的信息
3.1创建与获取客户端的session
session.setAttribute(String key ,Object obj)
将Object指定的对象obj添加到session对象中,如果添加对象的关键字相同,则先添加的对象被清除。
session.getAttibue(String key)
获取关键字是key的对象。由于任何对象都可以添加到session对象中,取回对象时应强制转化为原来的类型。
java.util.Enumeration getAttributeNames()
获取在session中所有对象的名称,该方法返回一个枚举类型的对象
3.2移除删除session对象
removeAttribute()移除相应的对象移除,语法如下:
void removeAttribute(java.lang.String name)
参数name为String类型的值,代表移除的对象的名称。
invalidate()方法删除已经保存到session中所有对象。invalidate()方法的语法如下:
void invalidate()
3.3超时管理
session.getLastAccessedTime()获取客户端最近访问服务器端的保存时间
session.getMaxInactiveInterval()获取客户端停止访问服务器端的保存时间
session.setMaxInactiveInterval(int value)设置客户端停止时session在服务器端的保存时间
3.4其他方法
session.getId() 获取session对象的编号。
session.getCreationTime() session的创建时间。
session.getLastAccessedTime() 最近请求的时间。
session.getMaxInactiveInterval() 两次请求间隔多长时间此session对象被取消。
session.isNew() 是否是新创建的session对象。
4.application对象(多客户端共享对象)
作用:保存所有应用系统中的公共数据,web服务器启动并自动创建application对象后,只要没有关闭服务器,appliaction对象一直存在,所有用户可以共享appliaction对象。
4.1常用方法
setAttribute(String key, Object obj) 将Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引
getAttribute(String name) 获取指定的属性值。
removeAttribute(String name) 删除指定Application的值。
getAttributeNames()获取一个包含所有可用属性名的枚举。 getContext(String uripath) 获取指定资源的application对象
getResource(String path)获取指定资源(文件及目录)URL路径
getResourceAsStream(String path) 获取指定资源的输入流
getServlet(String name) 返回指定的Servlet。
log(String msg) 把指定消息写入Servlet的日志文件。
getRealPath(".") 返回文件的当前路径。
getRealPath("/") 返回服务器的主目录。
5.out对象(输出对象)
作用:向web浏览器内输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值是8KB。
5.1常用方法
print()/println()输出各种类型数据。
clearBuffer()清除缓冲区的数据,并将数据写入客户端。
clear()清除缓冲区的当前内容,但不将数据写入客户端。
flush()输出缓冲区中的数据。
newLine()输出一个换行符号。
close()关闭输出流。
6.page对象(页面对象)
6.1常用方法
getClass()获取page对象的类。
hashCode()获取page对象的hash码。
equals(Object obj)判断page对象是否与参数中的obj相等
copy(Object obj)把此page对象复制到指定的Object对象中
clone()克隆当前的page对象
toString()把page对象转换成String类型的对象
7.pageContext对象(页面上下文对象)
作用:取得任何范围的参数,通过pageContext对象可以获取JSP页面的out、request、response、session、application等对象,或者可以重新定向客户的请求等。
7.1常用方法
setAttribute(String name, Object attribute) :设置默认页面范围或特定对象范围之中的已命名对象。
getAttribute(String name[,int scope] ):获取name对象的属性,可选参数scope表示在特定范围内。
removeAttribute(String name [,int scope]):删除指定范围内的某个属性。
forward(String relativeUrlPath):重定向到其它的页面。
include(String relativeUrlPath):在当前位置包含另一文件。
release():释放pageContext对象所占用的资源。
getServletContext():获取当前页的ServletContext对象。
getException():获取当前页的Exception对象。
8.config对象(配置对象)
作用:取得服务器的配置信息。config对象被封装为javax.servletConfig接口,通过pageContext.getServletConfig()方法可以获取一个config对象。
8.1常用方法
getServletContext()获取当前的Servlet上下文。
getInitParameter(String name)获取指定的初始参数的值。
getInitParameterNames()获取所有的初始参数的值。
getServletName()获取当前的Servlet名称。
8.2获取初始化参数
1)、在web.xml文件中配置初始化参数:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<servlet>
<servlet-name>sanyang</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<init-param> <!--设置初始化参数-->
<param-name>email</param-name>
<param-value>wy9wy163@163.com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>sanyang</servlet-name>
<url-pattern>/index.jsp</url-pattern>
</servlet-mapping>
</web-app>
2)、在JSP页面中通过config对象中的getInitParameter()方法获取在web.xml文件中初始化的参数,程序代码如下:
<%@ page contentType="text/html; charset=gb2312"%>
<body>
<center>
邮箱地址:<%=config.getInitParameter("email")%>
</center>
</body>
9.exception对象(异常对象)
9.1错误机制
exception异常对象指的是web应用程序所能够识别并能够处理的问题。在Java语言中,通过“try/catch”的关键在来处理异常信息情况,如果在JSP页面中出现没有捕捉到的异常信息,那么系统会自动生成exception对象,并把这个对象传送到page指令元素中设定的错误页面中,然后在错误提示页面中处理相应的exception对象。
Exexception对象只能在错误页面中才可以使用,并在页面指令元素里存在isErrorPage=true的页面。
9.2常用方法
getMessage()获得当前的错误信息
getLocalizedMessage()本地化语言的异常错误
printStackTrace()以标准错误的形式输出一个错误和错误的堆载跟踪
fillInStackTrace()重写异常的执行栈轨迹
toString()关于异常错误的简单信息描述
9.3设置错误指定页面
首先,建立一个自定义的错误页面“error.jsp”,即在该页面的开始部分<%@ page%>标识符中添加代码: <%@ page isErrorPage=”true”%>
然后,将其他页面指向该错误页面。在<%@page%>标识符中添加代码: <%@ page errorPage=”error.jsp”%>
JSP学习笔记(3)-JSP内置对象的更多相关文章
- jsp学习笔记之:内置对象
application对象: 设置一个名为name,值为val的应用内共享的数据 <% application.setAttribute("name",val); %> ...
- JavaWeb学习笔记--2.3内置对象
参考资料:http://www.cnblogs.com/qqnnhhbb/archive/2007/10/16/926234.html 目录 1. JSP内置对象分类2. 属性保存范围 2.1 pag ...
- javascript学习笔记 - 引用类型 单体内置对象
七 单体内置对象 1.Global对象 不属于任何对象的属性和方法,都归于它.全局作用域中定义的变量.函数,都属于Global对象 1.1 URI编码 encodeURI <=>deco ...
- 学习笔记:javascript内置对象:字符串对象
1.字符串的创建 var str = "Hello Microsoft!"; 2.字符串属性 constructor 返回创建字符串属性的函数 length ...
- JavaScript学习笔记(12)——JavaScript内置对象
1.Number Javascript只有一种数字类型,可以有小数也可以没有,也可以使用科学计数法. var z=123e-5; // 0.00123 JavaScript 不是类型语言.与许多其他编 ...
- 学习笔记:javascript内置对象:数组对象
1.数组对象的创建 1.设置一个长度为0的数组 var myarr=new array(); 2.设置一个长度为n的数组 var myarr=new arr(n); 3.声明一个赋值的指定长度 ...
- 学习笔记:javascript内置对象:日期对象
2.日期对象的常用函数 2.日期对象的常用函数 Date 对象方法 方法 描述 Date() 返回当日的日期和时间. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). ...
- 学习笔记:javascript内置对象:数学对象
1.数学对象 -Math 2.对象常用属性 3.常用函数 4.对数值类型数据保留小数的函数
- JSP学习(三)JSP中的九个内置对象
JSP中的九个内置对象 NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.Htt ...
- JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象
1 什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的 ...
随机推荐
- Redux其实很简单(原理篇)
在这一篇文章中,笔者将带大家编写一个完整的Redux,深度剖析Redux的方方面面,读完本篇文章后,大家对Redux会有一个深刻的认识. 核心API 这套代码是笔者阅读完Redux源码,理解其设计思路 ...
- jzoj5950
我們發現如下結論: 1.只有編號小的點才會對編號大的點產生影響 2.當當前點的y坐標大小為1~i最大的,則不會被以前的點影響 於是,維護一個斜率單調遞增的隊列 當當前點的y坐標大小為1~i最大的,則這 ...
- QQ个人信息保护 | 攻的对面叫防
近来我们愈来愈重视个人信息保护,当接到骚扰电话时,你心里或许在想(我手机号怎么又被别人知道的?别人是怎么知道我手机号的?),现在的时代,手机已或不可缺,QQ几乎每个人都在用.而有些人总想保护个人QQ资 ...
- zookeeper链接数导致kafka storm不能正常工作
报错信息: java.lang.RuntimeException: java.lang.RuntimeException: java.lang.RuntimeException: org.apache ...
- 通过sessionStorage来根据屏幕宽度变化来加载不同的html页面
因为项目需要,分别写了移动端和PC端的两个html页面,现在需要根据不同的屏幕宽度来加载对应的页面. 先说一下本人的思路-- 刚开始我直接在加载页面的时候判断屏幕宽度,然后加载相应的页面,大家是不是也 ...
- javascript数据结构与算法--二叉树遍历(先序)
javascript数据结构与算法--二叉树遍历(先序) 先序遍历先访问根节点, 然后以同样方式访问左子树和右子树 代码如下: /* *二叉树中,相对较小的值保存在左节点上,较大的值保存在右节点中 * ...
- Window History对象
History 对象属性 length 返回浏览器历史列表中的 URL 数量. History 对象方法 back() 加载 history 列表中的前一个 URL. window.history.b ...
- CentOS 安装Scrapy
本文python版本是python3.5.3,关于升级python和安装pip请到:http://www.cnblogs.com/technologylife/p/6242115.html 安装相关包 ...
- java I/O系统总结
1. InputStream : 从文件.网络.压缩包等中读取 需要的信息到程序中的变量 read(); read(byte []b ); mark(int readlimit); reset ...
- linux 系统清除日志 .sh
clear.sh #!/bin/sh cat /dev/null > /var/log/syslogcat /dev/null > /var/adm/sylogcat /dev/null ...