JSP知识点3——JSP内置对象

问:什么是JSP内置对象?

答:JSP内置对象就是指有些对象不用声明就可以在JSP页面的Java程序片和表达式部分使用。

 概述:

(1)JSP的常用内置对象有request、response、session、application和out。其中response和request对象是JSP内置对象中较为重要的两个,这两个对象提供了对服务器和浏览器通信方法的控制

(2)HTTP协议被称作“请求和响应”协议,是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。

(3)浏览器请求有某种结构,HTTP请求包括一个请求行、头域和可能的信息体。

一、request对象:

  在JSP中,内置对象request封装了用户提交的信息,那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信息。

1、获取用户提交的信息:用户通常使用HTML表单向服务器的某个JSP页面提交信息,

                            表单的一般格式是: <form  action= “JSP页面”  method= get | post  >    

                                                                   提交手段

                                                              </form>

                   JSP页面可以让request对象使用getParameter(String s)方法获取表单提交的信息。

2、处理汉字信息:使用两种方式避免request对象获取的信息出现乱码。

(1)、对信息重新编码:

request将获取的信息重新编码,即用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串。

例如: String str=request.getParameter("message"); byte  b[]=str.getBytes("ISO-8859-1"); str=new String(b); 

(2)、request设置编码:

  request在获取信息之前使用setCharacterEncoding方法设置自己的编码为gb2312:      

                       request.setCharacterEncoding("gb2312");

3、request内置对象常用的方法:

***getProtocol()  获取用户向服务器提交信息所使用的通信协议,比如http/1.1等。

       ***getServletPath()  获取用户请求的JSP页面文件的目录。

       ***getContextPath() 获取用户请求的当前Web服务目录。

       ***getRemoteAddr()  获取用户的IP地址。

       ***getRemoteHost()  获取用户机的名称(如果获取不到,就获取IP地址)。

       ***getServerName()  获取服务器的名称。

       ***getServerPort()  获取服务器的端口号。

4、处理HTML标记:

(1)<form>标记:

                       <form   action= "提交信息的目的地页面"  method= get| post  name="表单的名字">    

                         数据提交手段部分  

                       </form>

其中<form…>…</form>是表单标记,其中的method属性取值get或post。

get方法和post方法的主要区别是:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中,而用post方法提交的信息不会显示在地址栏中。提交手段包括:文本框、列表、文本区等。

(2)<input>标记:

                     <input  type="输入对象的GUI类型"  name= "名字">

GUI类型

(1)文本框text   :   <input type="text" name="me"  value="hi"   maxlength="30">

(2)单选框radio  :  <input type="radio"  name="rad"  value="red"   algin= "top"  checked="java" >

(3)复选框checkbox  : <Input type="checkbox"  name= "ch"  value="pink"   algin= "top"  checked="java">

(4)口令框password  : <input type= "passwordt"  name= "me" size= "12"  maxlength="30">

(5)隐藏hidden  :  <input type= "hidden"  name="h"  value= "123"  >   request对象调用getParemeter方法,通过name的名字来获取由value指定的值。

(6)提交键submit :<input type="submit" value="送出" name="submit">

(7)重置键:reset   :   <input type="reset" >

(3)<select>、<option>标记:

下拉式列表和滚动列表通过<select>和<option>标记来定义,经常作为<form>的子标记为表单提供选择数据的GUI。<select>标记将<option>作为子标记,形成下拉列表或滚动列表。

下拉列表的基本格式是:

                                      <select  name="myName">  

                                          <option  value="item1">  

                                          <option  value="item2">

                                          …

                                     </select>

在select中增加size属性的值就变成滚动列表,size的值是滚动列表的可见行的数目。

滚动列表的基本格式是:

                                    <select name="myName"  size="正整数">  

                                        <option  value="item1">  

                                        <option  value="item2">

                                         …

                                    </select>

request对象通过name获取滚动列表中被选中的option的值(参数value指定的值)。

(4)<textArea>标记:

<textArea>是一个能输入或显示多行文本的文本区,在表单中使用<textArea> 作为子标记可以提交多行文本给服务器。

<textArea>的基本格式为:

                                    <textArea  name="名字"  rows= "文本可见行数"  cols= "文本可见列数"  >

                                    </textArea>

(5)<table>标记:

表格以行列形式显示数据,不提供数据输入功能。经常将某些数据或GUI放置在表格的单元格中,让界面更加简练、美观。

表格由<table>标记定义,一般格式是:

                                     <table >    

                                           <tr  width="该行的宽度">        

                                                    <th  width= "单元格的宽度" >单元格中的数据</th>          

                                                    …        

                                                    <td  width= "单元格的宽度" >单元格中的数据</td>

                                                    …    

                                           </tr>

                                          …  

                                      </table>

其中  <tr> …</tr>定义表格的一个行,<th>或<td>标记定义这一行中的表格单元。二者的区别是<th>定义的单元着重显示,<td>称为普通单元,不着重显示。一行中的着重单元和普通的单元可以交替出现,也可以全是着重单元或普通单元。<table >中增加选项border可指明该表格是否带有边框。

(6)<image>标记:

使用<image>标记可以显示一幅图像。

<image>标记的基本格式为:

                                          <image  src="图像文件的URL" >描述文字</image>

如果图像文件和当前页面在同一Web服务目录中,图像的文件的地址就是该图像文件的名字;如果图像文件在当前Web服务目录的一个子目录中 ,比如image子目录中,那么“图像文件的URL”就是“image/图像文件的名字”

<image>标记中可以使用width和height属性指定被显示的图像的宽为和高,如果省略width和height属性,<image>标记将按图像的原始宽度和高度来显示图像。

(7)<embed>标记:

使用<embed>标记可以播放音乐和视频,当浏览器执行该标记时,会把浏览器所在机器上的默认播放器嵌入到浏览器中,以便播放音乐或视频文件。

<embed>标记的基本格式为:

                                            <embed  src="音乐或视频文件的URL" >描述文字</embed >

如果音乐或视频文件和当前页面在同一Web服务目录中,<embed>标记中src属性的值就是该文件的名字;如果视频文件在当前Web服务目录一个子目录中,比如avi子目录中,那么<embed>标记中src属性的值就是“avi/视频文件的名字”。

< embed >标记中经常使用的属性及取值如下: 

***autostart属性:取值 "true"或"false";autostart属性的值用来指定音乐或视频文件传送完毕后是否立刻播放。该属性的默认值是false。

***loop属性:取值为正整数指定音乐或视频文件重复播放的次数,取值为-1则无限循环播放。 

***width和height属性:取值均为正整数,用width和height属性的值指定播放器的宽和高。如果省略width和height属性,将使用默认值。

5、超链接处理:

在使用超链接标记还可以增加参数以及参数的值,以便向所链接的页面传递值,格式如下:      

                <a href=链接的页面地址?参数1=串值1&参数2=        串值2& 参数n=串值n >文字说明</a>        

超链接所链接的页面,使用request(参数n)获得超链接传递过来的值。

需要注意的是:<a>标记向所链接的页面传递串值时,串值中不能含有汉字字符(否则会出现乱码问题)。

二、response对象:

(1)当用户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求时,返回HTTP响应。响应和请求类似,也有某种结构,每个响应都由状态行开始,可以包含几个头及可能的信息体(网页的结果输出部分)。        

(2)与request对象相对应的对象是response对象。可以用response对象对用户的请求作出动态响应,向用户端发送数据。比如,当一个用户请求访问一个JSP页面时,该页面用page指令设置页面的contentType属性的值是text/html,那么JSP引擎将按着这种属性值响应用户对页面的请求,将页面的静态部分返回给用户,用户浏览器接收到该响应就会使用HTML解释器解释执行所收到的信息。

1、动态响应contentType属性:

(1)page指令只能为contentType指定一个值来决定响应的MIME类型,如果想动态的改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值,该方法中的参数s可取值:text/html、text/plain、image/gif等。   

(2)当用setContentType方法动态改变了contentType的属性值,即响应的MIME类型,JSP引擎就会按着新的MIME类型将JSP页面的输出结果返回给用户。

2、response的HTTP文件头:

(1)(响应也包括一些头。。。)

(2)response对象可以使用方法 :addHeader(String  head,String value);

                                         或    setHeader(String head ,String value)

动态添加新的响应头和头的值,将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。

3、response重定向:

(1)某些情况下,当响应用户时,需要将用户重新引导至另一个页面。例如,如果用户输入的表单信息不完整,就会再被引导到该表单的输入页面。      

(2)可以使用response的sendRedirect(URL url)方法实现用户的重定向。

4、response的状态行:

当服务器对用户请求进行响应时,它发送的首行称为状态行。

(1)1yy   (1开头的3位数):主要是实验性质的。

(2)2yy:用来表明请求成功的,例如,状态代码200可以表明已成功取得了请求的页面。

(3)3yy:用来表明在请求满足之前应采取进一步的行动。

(4)4yy:当浏览器做出无法满足的请求时,返回该状态代码,例如404表示请求的页面不存在

(5)5yy:用来表示服务器出现问题。例如,500说明服务器内部发生错误。      

一般不需要修改状态行,在出现问题时,服务器会自动响应,发送相应的状态码。也可以使用response对象的setStatus(int n)方法来改变响应的状态行的内容。

5、常见的状态代码:

三、session对象:

 (1) HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(response),在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一用户。  

(2)当一个用户访问一个Web服务目录时,可能会在这个服务目录的几个页面反复连接、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种办法知道这是同一个用户。

(3)Tomcat服务器可以使用内置session对象(会话)记录有关连接的信息。

1、session对象的ID:

(1)session对象被分配了一个String类型的id号,Tomcat服务器同时将这个id号发送到用户端,存放在用户的Cookie中。这样,session对象和用户之间就建立起一一对应的关系,即每个用户都对应着一个session对象(称作用户的会话),不同用户的session对象互不相同,具有不同的id号码。

(2)用户在访问一个Web服务目录期间,服务器为该用户分配一个session对象(称作用户的会话),服务器可以在各个页面使用这个session记录当前用户的有关信息。而且服务器保证不同用户的session对象互不相同。

2、session对象的URL重写:

(1)如果用户不支持Cookie,JSP页面可以通过URL重写来实现session对象的唯一性。

(2)URL重写:就是当用户从一个页面重新连接到一个页面时,通过向这个新的URL添加参数,把session对象的id传带过去,这样就可以保障用户在该网站各个页面中的session对象是完全相同的。  

(3)可以使用response对象调用encodeURL()或encodeRedirectURL()方法实现URL重写。

             例如:如果从first.jsp页面连接到second页面,首先在程序片中实现URL重写:    

                                 String str=response.encodeRedirectURL("second.jsp");

             然后将连接目标写成<%= str %> 即可。

3、session对象存储数据:

session对象驻留在服务器端,该对象调用某些方法保存用户在访问某个web服务目录期间的有关数据。

session对象使用下列方法处理数据:

(1)public void setAttribute (String  key ,Object  obj)

                     session对象可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字。

(2)public Object getAttribute(String key)

                     获取session对象索引关键字是key的对象。

4、session对象的生存期限:

 (1)session对象的生存期限依赖于session对象是否调用invalidate()方法使得session无效或session对象达到了设置的最长的“发呆”状态时间以及是否关闭服务器。        

(2)如果关闭服务器,那么用户的session消失,“发呆”状态时间:是指用户对某个Web服务目录发出的两次请求之间的间隔时间(默认的发呆时间是30分钟)。

四、application对象:

 application由服务器负责创建,每个Web服务目录下的application对象被访问该服务目录的所有的用户共享,但不同Web服务目录下的application互不相同。

 1、application 对象的常用方法:

(1) public void setAttribute(String  key ,Object  obj)

                  application对象可以调用该方法将参数Object 指定的对象 obj添加到application对象中,并为添加的对象指定了一个索引关键字。

(2) public Object Attribute(String key)

                  获取application对象含有的关键字是key的对象。

2、用application制作留言板:

(1)使用向量这种数据结构,Java的java.util包中的Vector<V>泛型类负责创建一个向量对象。 当我们创建一个向量时不用像数组那样必须要给出数组的大小。

(2)向量创建后,对于 Vector<String> a=new Vector<String>(); 可以使用add(V o)方法把String对象a添加到向量的末尾,向量的大小会自动的增加。

五、out对象:

out对象是一个输出流,用来向用户端输出数据。

out对象可调用如下的方法用于各种数据的输出:

                         out.print(char)、    out.println(char) 、    out.print(double)、    out.println(double) 、

                         out.print(fload)、   out.println(float) 、     out.print(long)、        out.println(long) 、

                         out.print(String)、  out.println(String)、   out.newLine()、        out.flush()  

六、总结:

1、HTTP通信协议是用户与服务器之间一种提交(请求)信息与响应信息(request/response)的通信协议。在JSP中,内置对象request封装了用户提交的信息,request对象获取用户提交信息的最常用的方法是getParameter(String s);内置对象response对象对用户的请求作出动态响应,向用户端发送数据。  

2、HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(respons),但不记忆连接的有关信息。所以,Tomcat服务器必须使用内置session对象(会话)记录有关连接的信息。同一个用户在某个Web服务目录中的session是相同的;同一个用户在不同的Web服务目录中的session是互不相同的;不同用户的session是互不相同的。

3、 一个用户在某个Web服务目录的session对象的生存期限依赖于用户是否关闭浏览器、session对象是否调用invalidate()方法使得session无效或session对象是否达到了设置的最长的“发呆” 状态时间。  

4、内置对象application由服务器负责创建,每个Web服务目录下的application对象被访问该服务目录的所有用户共享;不同Web服务目录下的application互不相同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒憨憨吖~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值