jsp内置对象

一:request对象

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

     内置对象request实现了serveletRequest借口类的一个实例,可以在Tomcat服务器的webapps\tomcat-docs\servletapi中查找ServeletRequest接口的方法。

   1.获取用户提交的信息

     比如:

<form action="某页面" method="post">
 <input type="text" name="name" value="ok">
 <input type="submit" value="提交" name="submit">
</form>
     当用户按提交按钮后,request对象就可以用getParameter(String s)方法获取表单通过text提交的信息。

     如:request.getParameter("name");


   2.处理汉字信息

          当用request对象获取用户提交的汉字字符时,会出现乱码问题,所以对汉字字符的信息必须采取特殊的处理方式———页面中使用page指令指定编码必须是gb2312,如下:  

<%@ page contentType="text/html;charset=gb2312"%>
          可以使用两种方式避免request对象获取的信息出现乱码:

      a.对信息重新编码

String str=request.getParameter("message");
byte b[] =str.getBytes("iso-8859-1");//用ISO-8859-1对信息进行重新编码
str=new String(b);
      b.request设置编码

request.setCharacterEncoding("gb2312");//在获取信息之前使用此方法设置自己的编码为bg2312

   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)getRemoteHost()获取用户机的名称(如果找不到,就获取IP地址)。

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

      (12)getServerPort()获取服务器的名称。

      (13)getParamterNames()获取用户提交的信息题部分中name参数值的一个枚举。

  

二:response对象

     与request对象相对应的是response对象。可以用response对象对用户的请求作出动态响应。

  1.动态响应contentType属性

     由于page指令只能为contentType指定一个值来决定响应的MIME类型,如果想动态地改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。s可取:text/html、text/plain、image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、application/x-shockwave-flash、application/vnd.ms-powerpoint、apllication/vnd.ms-excel、application/msword等。

 

   2.response的http文件头

      当用户访问一个页面时,会提交一个http请求给jsp引擎,这个请求包括一个请求行、http头和信息体,如:

  post/example.jsp/HTTP.1.1    //请求行
  host:localhost:8080           //http头
  accept-encoding:gzip,deflate   //http头
      同样,响应也包括一些头。response对象可以使用方法

      addHeader(String head,String value);或setHeader(String head,String value)来动态添加新的新的响应头和头的值,将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。


   3.response重定向

      可以使用response的sendRedirect(URL url)方法实现用户的重定向。就是将当前页面转换到url页面。

 

   4.response的状态行

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

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

     b.2yy:用来表明请求成功

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

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

     e.5yy:用来表示服务器出现问题。如:500表示服务器内部发生错误。

   一般不需要改变状态行,因为服务器会自动响应。当然我们也可以用response的setStatus(int n)方法设置响应的状态行。


三:session对象

    http是一种无状态协议。一个用户向服务器发出请求request后,然后服务器返回响应response,在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一个用户。当一个用户访问web服务目录时,可能会在这个服务目录的几个页面反复连接、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种方法知道这是同一个用户。tomcat服务器可以使用内置session对象(会话)记录有关连接的信息。内置对象session由tomcat服务器创建,session是实现了HttpSession接口类的一个实例,可以在tomcat服务器的webapps\tomcat-docs\servletapi中查找HttpSession接口的使用方法。

    1.session对象的id

       当一个用户首次访问Web服务目录时,tomcat服务器会产生一个session对象,用于存储当前用户访问该服务目录时提交的所有信息。同时此session对象还被分配一个String类型的ID号,并将其发送到用户端,存放在用户的cookie中。这样session对象就同这个用户建立起了一一对应关系。当用户访问该服务目录其它页面时,服务器就不会再分配新的sessoion对象给用户,除非session对象的生命周期结束。

       同一个用户在不同的web服务目录中的session对象是互不相同的。

    2.session对象与url重写

       session对象能否和用户建立起一一对应关系依赖于用户端是否支持cookie对象。如果不支持,那么用户在不同的网页之间的session对象可能是互不相同的。我们通过如下操作设置cookie为禁止(选择浏览器菜单-工具-Internet选项-隐私,将第三方cookie设置成禁止)。

       如果用户不支持cookie,jsp页面可以通过url重写实现session对象的唯一性。所谓url重写,就是当用户从一个页面重新连接到另一个页面时,通过向这个新的url添加参数,把session对象的ID传带过去,这样就可以保证用户在该网站各个页面中的session对象时完全相同的。可以用response对象调用encodeURL()或encodeRedirectURL()方法实现URL重写。

       如String url=response.encodeRedirectURL("某个页面");

       然后将连接目标写成<%=url%>就行。


    3.session对象存储数据

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

       (1)public void setAttribute(String key,Object obj);就类似于Map类,使用key/value存储数据

       (2)public Object getAttribute(String key); 获取关键字key对应的对象

       (3)public Enumeration getAttributeNames();获取一个枚举对象

       (4)public void removeAttribute(String name);移除关键字key对应的对象


   4.session对象的生命期限

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

      “发呆”状态时间就是指用户对某个web服务目录发出的两次请求之间的间隔时间(默认的“发呆”状态时间时30分钟),可以通过修改tomca服务器下的web.xml(位于conf文件下),重新设置session对象的最长“发呆”时间。如下:

   

     同时session对象可以通过使用下列方法获取和设置与生存时间有关的信息。

      

(1)public long getCreationTime();获取session对象创建的时间,单位是毫秒
(2)public long getLastAccessedTime();获取session最后一次被操作的时间单位是毫秒
(3)public int getMaxInactiveInterval();获取session最长的"发呆"时间,单位是秒。
(4)public void setMaxInactiveInterval(int interval);设置session对象最长的"发呆"时间,单位是秒。
(5)public Boolean isNew();判断session对象是否是一个新建的对象
(6)invalidate();使session对象无效。

四:application对象

     该对象与session对象差不多,不同的是,每个web服务目录下的application对象被访问该服务目录的所有的用户所共享,但不同web服务目录下的application对象互不相同

   1.application常用方法

      (1)public String getServletInfo().获取Servelet编译器的当前版本信息。

      其余四个方法与session对象的一样。

   注意:有些服务器不支持直接使用application对象,必须使用ServeletContext类声明这个对象,再使用getServletContext()方法对这个application对象进行初始化。如下:

   

<%!
  ServletContext application;
  application=getServletContext();
 %>



当然还有其它内置对象,这里就只介绍了常用的几种。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值