JSP内置对象

一、request对象

request对象是javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。

request对象封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等。通过request对象提供的相应方法可以处理客户端浏览器提交的HTTP请求中的各项参数。

1、访问请求参数

通过request对象的getParameter()方法获取传递的参数值。

request.getParameter("name");

如果指定参数不存在,将返回null;如果指定了参数名,但未指定参数值,将返回空的字符串“”。

2、在作用域中管理属性

在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时就需要使用request对象的setAttribute()方法将数据保存到request范围内的变量中。

request.setAtteribute("name",value);
requeat.getAtribute("nmae");得到变量值
request.getAttributeNames();     返回request对象的所有属性名称的集合

由于getAtteribute()方法的返回值是Object类型,所以需要调用toString()方法,将其转化为字符串类型

String name=request.getAtteribute("name").toString();
或强制转换 String name=(Stringrequest.getAtteribute("name");

3、获取cookie

cookie是小段文本信息,在网络服务器上生成,并发送给浏览器。通过使用cookie可以标记用户身份,记录用户名和密码,跟踪重复用户等。浏览器将cookie以key/value的形式保存到客户机的莫个指定目录中。

通过getCookies()方法即获得所有cookie对象的集合

Cookie[] cookies=request.getCookies();

cookie对象的方法:

String getName()   获得指名称的cookie;
Cookie getValue()  获得cookie对象的值,

将一个cookie对象发送到客户端,使用request对象的addCookie()方法。

在向cookie中保存的信息中,如果包括中文,需要调用java.net.URLEncoder类的encode()方法将要保存到cookie中的信息进行编码,和decode()方法进行解码。

4、解决文中乱码

new String (request.getParame("name").getBytes("ISO-8859-1"),"UTF-8");

5、其他常用方法

HttpSession getSession()  返回request对应的session对象,如果没有,则创建一个

Locale getLocale()   返回当前页的Locale对象,可以在response中设置(国际化)

ServletInputStream getInputStream()  返回请求的输入流

String getCharacterEncoding() 返回request的字符编码集名称 

String getContextPath() 返回request URI中指明的上下文路径

String getHeader(String name) 返回name指定的信息头

String getMethod() 返回此request中的HTTP方法,比如 GET,,POST,或PUT

String getPathInfo() 返回任何额外的与此request URL相关的路径

String getProtocol() 返回此request所使用的协议名和版本

String getQueryString() 返回此 request URL包含的查询字符串

String getRemoteAddr() 返回客户端的IP地址

String getRemoteHost() 返回客户端的完整名称

String getRemoteUser()返回客户端通过登录认证的用户,若用户未认证则返回null

String getRequestURI()  返回request的URI

String getRequestedSessionId() 返回request指定的session ID

String getServletPath() 返回所请求的servlet路径

boolean isSecure() 返回request是否使用了加密通道,比如HTTPS

int getServerPort() 返回服务器端口号

二、response对象

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。

response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等等。

response对象应用于响应客户请求,向客户端输出信息。它封装了JSP产生的响应,并发送到客户端以响应客户端的请求。请求的数据可以是各种数据类型,甚至是文件。response对象在JSP页面内有效。

1、重定向网页

使用response对象提供的sendRedirect()方法将网页重定向到另一个页面。重定向操作支持将地址重定向到不同的主机上,这一点与转发不同,在客户端浏览器上将会得到跳转的地址,并重新发送请求链接,用户可以从浏览器的地址栏中看到跳转后的地址。进行重定向操作后,request中的属性全部失效,并且开始一个新的request对象。

response.sendRedirect(String path);

2、处理HTTP文件头
通过response对象可以设置HTTP响应报头,其中,最常见的是禁用缓存,设置页面的自动刷新和定时跳转页面。

1)禁止缓存
在默认的情况下,浏览器会对显示的网页内容进行缓存。这样,当用户再次访问相关网页时,浏览器会判断页面是否有变化,如果没有变化则直接显示缓存中的内容,这样可以提高网页的显示速度。对一些安全性要求比较高的网站,通常需要禁止用缓存。

通过设置HTTP头的方法实现禁用缓存:

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

2)设置页面自动刷新

response.setHeader("refresh","10");

3)定时跳转网页

response.setHeader("refresh","5;URL=xxx.jsp");

3、设置输出缓冲
通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出区。

void flushBuffer()      将任何缓存中的内容写入客户端

void resetBuffer()      清除基本的缓存数据,不包括响应头和状态码

void reset()            清除任何缓存中的任何数据,包括状态码和各种响应头

void setBufferSize(int size) 设置响应体的缓存区大小

boolean isCommitted()   返回响应是否已经提交到客户端

4、其他方法

String encodeRedirectURL(String url) 对sendRedirect()方法使用的URL进行编码

void addCookie(Cookie cookie)     添加指定的cookie至响应中

void setCharacterEncoding(String charset)   指定响应的编码集(MIME字符集),例如UTF-8

void setLocale(Locale loc)        设置响应的语言环境,如果响应尚未被提交的话

void setStatus(int sc)            设置响应的状态码

三、session对象

HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。
session对象是 javax.servlet.http.HttpSession 类的实例。和Java Servlets中的session对象有一样的行为。 session对象用来跟踪在各个客户端请求间的会话。通过session可以在应用程序的web页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。

1、创建及获取客户的会话

session.setAttribute(String name,Object obj);
session.getAttribute(String name);

在servlet中创建session对象:

HttpSession session=request.getSession();

2、移除绑定对象

removeAttribute(String name);

3、销毁session

session.invalidate();

4、会话超时管理

session的生命周期tomcat默认为30分钟,设置session的有效时间1000s

session.setMaxInctiveInterval(1000);

5、其他方法

public Enumeration getAttributeNames()      返回session对象中所有的对象名称

public long getCreationTime()   返回session对象被创建的时间, 以毫秒为单位,从1970年1月1号凌晨开始算起

public String getId()   返回session对象的ID

public long getLastAccessedTime()   返回客户端最后访问的时间,以毫秒为单位,从1970年1月1号凌晨开始算起

public int getMaxInactiveInterval() 返回最大时间间隔,以秒为单位,servlet 容器将会在这段时间内保持会话打开

public boolean isNew()  返回是否为一个新的客户端,或者客户端是否拒绝加入session

四、application对象

application对象用于保存所有应用程序中的公有数据,它在服务器启动时自动创建,在服务器停止时销毁。所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的”全局变量“。、

1、访问应用程序初始化参数
applicaton对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在web.xml文件中进行设置。

web.xml配置应用程序初始化url参数:

<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql:///db</param-value>
</context-param>

获得初始化参数

application.getInitParameter("url");
或application.getAttributeNames();//获得初始化参数名枚举

2、管理应用程序环境属性

application.getAttributeNames();    //获得所有application对象属性名称

getAttribute(String name);      //获得指定application对象

setAttribute(String key,Object obj);    //设置指定名称和指定对象在application对象中进行关联

removeSttribute(String name);   //删除指定名称的application对象

五、out对象

out对象用于在web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓存区中的残余数据,为其他的输出让出缓存空间。待数据输出完毕后,要及时关闭输出流。

1、向客户端输出数据

PrintWriter out = response.Writer();//在servlet创建out对象
out.print("");//不换行
out.println("");//换行

注意:html默认多个空格和换行符为一个空格,要用< pre >标签保留原格式

2、管理响应缓冲

clear();        //清除缓存区中的内容

claerBuffer();  //清除当前缓存区中的内容

flush();        //刷新流

getBufferSize() //获得缓缓冲区大小

六、其他内置对象

1、获得会话范围的pageContext对象

获取页面上下文的pageContext对象是javax.servlet.jsp.PageContext类的实例,用来代表整个JSP页面。这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。这个对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,Error,PageURL,页面scope等。JSP页面可以直接使用pageContext对象

pageContext常方法:

forward() //把网页转发到另一个页面

getAttribute(String name)  //获取参数值

getAttributeNamesINScope(int scope) //获取范围的参数名称的集合

getException()  //返回exception对象

getRequest()getResponse()getSession()getOut()getApplication() //获得各对象

setAttribute() //为指定范围内的属性设置属性值

removeAttribute() //删除指定范围内的指定属性

注意:pageContext是一个比较特殊的对象,在实际jsp开发过程中很少用,因为request和response等对象均为内置对象,如果通过pageContext获得比较麻烦,都是直接调用骑相关方法实现具体的功能。

2、读取web.xml配置信息的config对象

通过pageContext对象的getServletConfig()方法获得config对象

config对象常用方法:

getServletConText()     //获得Servlet上下文

getServletName()        //获取Servlet服务器名称

getInitPatameter()      //获得服务器所有初始化参数名称,返回值为java.util.Enumeration对象

getInitPatameterNames() //获得服务器所有参数名称

3、答应或请求的page对象

page对象代表JSP本身,只有在JSP页面内才是合法的。page对象本质上是包含当前Servlet接口引用变量,可以看作是this关键字的别名。

常用方法:

getClass()          //返回当前Object的类

hashCode()          //返回改Objext的哈希代码

toString()          //把该Object类转换乘字符串

equals(Object obj)  //比较对象是否相等

4、获取异常信息的exception对象

只有在page指令中设置为isErrorpage属性值为true的页面中才能使用。

常用方法:

getMessage()            //返回异常信息字符串

getLocalizedmessage()   //返回本地化的异常错误

toString()              //返回关于异常的简单信息描述

fillInStackTrace        //重写异常错误的栈执行轨迹

七、总结

主要详细介绍了request、response、out、session、application应用对象,这些对象在进行实际项目开发时要经常使用,需要重点掌握。最后简单介绍了其他对象,读者不必深究。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值