JSP的九大内置对象

来源:互联网 发布:linux时钟中断 编辑:程序博客网 时间:2024/05/22 17:05

首先要先了解web服务器的运行原理(网上有)

1.application对象

通常将web应用的状态数据放入application中.

作用:(1)在整个Web应用的多个JSP,Servlet之间共享数据(交换信息)

           (2)访问Web应用的配置参数(web.xml中的配置信息)

作用范围:整个Web应用有效

方法:setAttribute(String attName,String attValue),getAttribute(String attName)

getInitParameter(String parameterName).

例如:在web.xml配置如下信息

  <!-- 在application中可以得到这些配置信息 -->
  <!-- 配置第一个参数:driver -->
  <context-param>
     <param-name>driver</param-name>
      <param-value>com.mysql.jdbc.Driver</param-value>
  </context-param>

可以在jsp中如下获取
    String driver=application.getInitParameter("driver");
 

2.config对象

配置信息.Servlet中相对较大

3 exception对象

用处如下:A.jsp的page

<%@page errorPage="error.jsp"%>

error.jsp是A.jsp的异常跳转页面

在error.jsp中的page

<%@page isErrorPage="true"%>

exception.getClass()可以获得异常的类型

exception.getMessage()可以获得异常的信息

4.request对象(JSP中重要的内置对象)

作用范围:一次请求中有效.

一般是获取form表单中的数据

form表单中的的加密方法分为post和get方法

区别在于当method="get"是,参数会随着url传递到其他页面

如URL?param1=value1&paran2=value2......paramN=valueN

而method="post"时,不会显示的传递参数

在这里说一个自己遇到的问题,当参数的值是中文时,可能会出现乱码问题.我查了多种方法,找到了一个自己认为稍微简单的方法,写一个函数如下

<%!

      public String handleStr(String s){

           try{

                byte []bb=s.getBytes("ISO-8859-1");

                s=new String(bb,"gb2312");

               }catch(Exception e){}

           return s;

       }

%>

这个函数的作用是先将s变成字节,在将字节按照指定的编码重新编码,最后返回.

request范围属性

HttpServletRequset包含两个方法,用于设置和获取request范围属性

setAttribute(String attName,Object attValue),attValue设置成request范围的属性

Object getAttribute(String attName),获取request范围的值

当forward用户请求时,请求的参数和请求的属性都不会丢失.

注:forward和response.sendRedirect()的区别

forward的目标页面可以访问原请求页面的请求参数.URL地址不会改变

response.sendRedirect(url)简单理解就是第二次请求,请求参数和request范围的属性全部丢失.


4.session对象

HTTP协议是一种无状态的协议,简单说就是客户端发送请求,服务器端响应.

但是在实际中,客户端和服务器需要保存某种联系

这种联系的保持,就衍生了session(服务器保持状态)和cookie(客户端保持状态).

同样有setAttribute(String key,Object obj)和public Object getAttrubute(String key)方法.

public void removeAttribute(String name):session对象调用该方法移除关键字key对应的对象

public Enumeration getAttributeNames():session对象调用该方法产生一个枚举,该枚举对象使用

nextElemets()遍历session中的各个对象所对应的关键字.

  1. //获取session  
  2. HttpSession   session   =   request.getSession();    
  3. // 获取session中所有的键值  
  4.     Enumeration<?> enumeration = session.getAttributeNames();  
  5. // 遍历enumeration中的  
  6.     while (enumeration.hasMoreElements()) {  
  7. // 获取session键值  
  8.     String name = enumeration.nextElement().toString();  
  9.         // 根据键值取session中的值  
  10.         Object value = session.getAttribute(name);  
  11.         // 打印结果  
  12.         System.out.println("<B>" + name + "</B>=" + value + "<br>/n");  
  13.         }