javaWeb四-jsp九大隐含对象

对象描述
requestHttpServletRequest 接口的实例
responseHttpServletResponse 接口的实例
outJspWriter类的实例,用于把结果输出至网页上
sessionHttpSession类的实例
applicationServletContext类的实例,与应用上下文有关
configServletConfig类的实例
pageContextPageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page类似于Java类中的this关键字  HttpJspPage类的实例
exceptionException类的对象,代表发生错误的JSP页面中对应的异常对象

 

一.有关输入输出的jsp隐含对象 :

(1)request:对象表示客户端请求的内容(request对象包含所有请求的信息,如:请求的信息来源、标头、cookies和请求相关的参数值等等)

(2)response:对象表示响应客户端的结果

(3)out:对象负责把数据结果显示到客户端的浏览器

1.request:

对自定义属性的操作: 

void  setAttribute( String name, Object value)

定义name属性的值为value

Object  getAttribute( String name )

取得name属性的值

Enumeriation  getAttributeNames( )

取得该范围的属性

void  removeAttribute ( Sting name)

移除name属性的值

获取请求参数值:

String     getParameter( String name)

取得name的参数值

String[ ]  getParameterValues( String name)

取得所有name的参数值(多选框 时,取值用它,存为数组)

Enumeriation  getParameterNames( )

取得该范围的所有参数名称

Map getParameterMap()

取得一个要求参数的Map

其他使用方法:

setCharacterEncoding (String)

在读取请求信息前先设置其编码方式

getCharacterEncoding()

获得其编码方式

getContentType()

返回客户端请求的对象类型

getContextPath()

取得Context路径(站台名,绝对路径

String getMethod()

取得http的方法(get/post)

String getProtocal()

取得所使用的协议(http1.0 / http1.1)

String getRequestedSessionId()

取得用户端的sessionID

String getRemoteAdr()

取得用户的IP地址

Cookie[ ] getCookies()

取得与请求相关的cookies

   InetAddress获取主机的参数:
     <%
        InetAddress inet = InetAddress.getLocalHost();
    %>
    访问用户IP:<%=inet.getHostAddress()%><br>
    访问用户主机名:<%=inet.getHostName()%><br>

 

获取URL:
协议://服务器名:端口号 项目根路径(/project)/
request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/"

2.response:

setCharacterEncoding (String)

在回复请求前先设置其编码方式

getCharacterEncoding()

获得其编码方式

setContentType()

设置返回客户信息的对象类型

void addCookie(Cookie cookie)

新增cookie

void addDateHead(String name,long date)

新增long类型值到name标头

void Header(String name,String value)

新增String类型的值到name标头

String sendRedirect (String url)

重定向到新的UTL

转发(forward)与重定向(redirect)的区别:

1.转发可以通过request的setAttributeh和getAttribute实现属性数据共享,重定向不支持

2. 重定向可以在url路径后面拼接参数,转发不可以

3. 转发是服务器端的操作,而重定向则是浏览器端的操作,最直观的效果就是 转发url路径不会发生变化,请求则会发生变化,重定向url路径变化

 转发过程
    客户首先发送一个请求到服务器端,服务器端发现匹配的servlet,并指定它去执行,当这个servlet执行完
之后,它要调用getRequestDispacther()方法,把请求转发给指定的student_list.jsp,整个流程都是在服务
器端完成的,而且是在同一个请求里面完成的,因此servlet和jsp共享的是同一个request,在servlet里面放的
所有东西,在student_list中都能取出来,因此,student_list能把结果getAttribute()出来,
getAttribute()出来后执行完把结果返回给客户端。整个过程是一个请求,一个响应。


重定向过程
    客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了
sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到
response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访
问student_list.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求student_list.jsp,这里
两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得
不了。可见,在sendRedirect()里面是两个请求,两个响应。



总结

转发在服务器端完成的;重定向是在客户端完成的
转发的速度快;重定向速度慢

转发的是同一次请求;重定向是两次不同请求

转发不会执行转发后的代码;重定向会执行重定向之后的代码

转发地址栏没有变化;重定向地址栏有变化

转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

(注意:一般的超链接是get请求,也是重定向)

 

 

根据response对象中的setContentType()方法来动态设定响应给客户的文件类型(很多都要写Java代码,)

MIME类型

文件类型

后缀

Application/pdf

PDF文件

.pdf

Application/msword

Word文档

.doc

Application/x-msexcel

Excel表格文件

.xls

Image/Gif

GIF图片

.gif

Image/Jpg

JPG图片

.jpg

Text/Html

HTML超文本文件

.html

Text/Plain

Plain文本

.tx

 1、通过response.setIntHeader(“Refresh”,180)让页面自己每隔3分钟 自动刷新。 

2、通过response.setHeader(“refresh”,“10;URL=http://www.sina.com”) 让页面过10秒钟后自动重定向到新的页面

3.out:

out是javax.servlet.JspWriter类的一个实例。

方法

说明

void   print( )

显示

void   println( )

显示并换行

void   clear( )

清楚缓冲区的内容

void   close( )

关闭输出流,清楚所有的内容

void   clearBuffer( )

清楚当前缓冲区的内容

int      getBuggerSize( )

取得目前缓冲区的大小(KB)

int      getRemaining( )

取得目前使用后还剩下的缓冲区的大小(KB)

Boolean isAutoFlush

如果回传为true,表示如缓冲区满了,会自动清楚 如果为false,满了则出现异常

 二.与Context有关的隐含对象:

共有三种:

session:对象提供一些机制,让服务器能个别辨认用户

application:当程序运行时,application对象能提供服务器的context,说明那些 资源是可利用的,那些资源是可获取的。

pageContext:该对象提供存取所有在此网页中可被利用的隐含对象,并且可以管理 他们的属性。(了解)

三个对象实例都有的方法:

void  setAttribute( String name, Object value)

定义name属性的值为value

Object  getAttribute( String name )

取得name属性的值

1.Session:

session对象用来保存每个用户的会话信息,以便跟踪每个用户的操 作状态。从一个客户打开浏览器并连接到服务器开始,一直到这个客 户关闭浏览器为一个回话。

当客户第一次连接到服务器请求时会为这个客户分配一个session对 象,并为这个对象分配一个id。session信息保存在容器中, sessionID保存在客户机的cookie中

当服务器发出回复内容的同时将这个id发往客户段,并写入到客户端 的cookie中,这样下次再请求的时候,服务器就可以通过该id来识别 不同的用户。

通过session对象实现跨页面的信息共享。

Session对象实现javax.servlet.http.HttpSession接口,提供如下方法:

方法

说明

long getCreationTime()

取得session产生的时间,单位是毫秒,由1970年1月1 日零时算起

String getID()

取得session的ID

long getLastAccessedTime()

取得用户最后通过这个session送出请求的时间,单位是 毫秒,由1970年1月1日零时算起

long getMaxInactiveInterval()

取得最大session不活动的时间,若超过这个时间,session将会失 效,单位为毫秒

void invalidate()

取消session对象,并将对象存放的内容完全抛 弃

boolean isNew()

判断是否为新session,产生但客户端还未使用过

void setMaxInactiveInterval(

int interval)

设定最大session不活动时间,若超过这个时 间,session将会失效,单位为毫秒

 Session对象也可以存储或取得用户相关的数据。例如:用户的名称,用户所 订购的物品、用户的权限等等。

 只有设置<%@page session=“true”%>前JSP页面才能使用session隐 含对象,默认为true;

例如:我们设定某些网页必须要求用户先登陆的动作,确定用户是合法用 户的时候才允许读取网页内容,否则把网页重新定向到登陆的网页上。 

使一个会话结束的两种方法:

1、在web.xml文件中设置他的最大活动时间(tomcat/conf/web.xml)

<!--设置 session 的过期时间,单位是分钟;-- >

<session-config>

             <session-timeout>30</session-timeout>

</session-config>

当你没对网站做任何的操作,时间超过30分钟没,session对象自动销毁

2、在JSP中通过session.invalidate()方法直接关闭一个会话

2.application: 

 Application对象是以服务器为主角,服务器的启动和关 闭决 定 了 application的生命周期。

服务器启动后会创建该服务器下的web应用程序,同时为此web应用程序新 建一个application对象,它将一直存在,直到服务器关闭。

当有用户请求web应用下的某个JSP页面时,JSP容器为该请求启动一个线程,并分配这个application对象;每个请求都共享这个application对象。

 

 Application对象实现javax.servlet.ServletContext接口,它主要功用在于 取得或更改Servlet的设定。

一个JSP被编译成Servlet时,applicate对象是如何初始化的:

pageContext = JspFactory.getPageContext(this,request,response,”errorpage.jsp”,true,8192,true); application = pageContext.getServletContext();

参数说明:

this:该servlet对象本身

true:是否需要session对象

8192:最大缓冲大小,单位字节

true:是否自动清楚缓冲区

 Javax.servlet.ServletContext接口容器相关信息的方法:

 

方法

说明

int  getMajorVersion( )

取得JSP容器主要的servlet api版本,如:2

int  getMinorVersion( )

取得JSP容器次要的servlet api版本,如:4

String  getServerInfo( )

取得JSP容器的名称和版本

<%= application.getMajorVersion()%>

<%= application.getMinorVersion()%>

<%= application.getServerInfo%>

三.exception:

当JSP网页有错误产生异常的时候调用该对象进行处理,和session对象一样,只有当<%@page  isErrorPage=“true”%>的 时候才能使用该对象。

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值