JSP隐式对象和错误机制

一   jsp的执行过程

JSP的执行过程主要可以分为以下几点:

(1)客户端发出请求。

(2)Web容器将JSP转译成Servlet源代码。

(3)Web容器将产生的源代码进行编译。

(4)Web容器加载编译后的代码并执行。

(5)把执行结果响应至客户端。     

二  jsp的异常处理机制

1.异常处理机制出现的原因:抓取出现的错误,使得能够更清楚的认识到错误的原因。

  2.处理异常的操作

    (1)创建一个用于异常处理的jsp页面

        1.导入<%@ page isErrorPage="true"%>之后,可以使用exception对象

在body中写异常处理的机制,即是写异常的提示

              出现了异常:<%=exception %>,请检查JSP页面。<br/>

              <!-- 输出异常处理的错误消息 -->

              <%exception.printStackTrace(new PrintWriter(out)); %>

   (2)指定页面的抛出异常的捕获:可能是哪个页面有异常,需要写入:

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

指定跳转到哪个错误页

    (3)多个页面都出现异常的捕获---在整个工程下都可以捕获,在web.xml下:

如果在每个有异常的页面都倒入<%@ page  errorPage="error.jsp"%>,会是个很麻烦的事情,所有在web.xml中设置会更好

        1、指定异常的捕获   

<error-page>

        <exception-type>java.lang.ArithmeticException</exception-type>

        <location>/error.jsp</location>

  </error-page>

      2、响应码的捕获

<error-page>

            <error-code>404</error-code>

            <location>/404error.jsp</location>

        </error-page>

    注:

(1)<error-code></error-code>和

<exception-type> </exception-type>不同时使用

(2)可以有多个</error-page>标签 

三  jsp的隐式对象

1. JSP隐式对象是Web容器加载的一组类的实例。它是可以直接在JSP页面使用的对象。分为4个主要类别:

–        输入和输出对象:控制页面的输入和输出(request、response、out)。

–        作用域通信对象:检索与JSP页面的Servlet相关的信息(session、application、pageContext)。

–        Servlet对象:提供有关页面环境的信息(page、config)。

–        错误对象:处理页面中的错误(exception)。

2.       九个隐式对象的详细介绍

(1)request对象

  request隐式对象表示客户端的请求,包含了所有的请求信息,常用的方法:

•          String getParameter(String name):根据页面表单组件名称获取请求页面提交的数据。

•          String getParameterValues(String name):获取页面请求中一个表单组件对应多个值时的用户的请求数据(例如复选框)。

(2)response 对象

  response隐式对象处理JSP生成的响应,然后将响应结果发送给客户端,常用的方法:

•          void setContentType(String name):设置作为响应生成的内容的类型和字符编码。

•          void sendRedirect(String name):发送一个响应给浏览器,指示其应请求另一个URL(会丢失数据,跳转后不再执行sendRedirect方法下面的代码)。

(3)out对象

       设置out对象的缓冲区大小

          <%@ page buffer="64kb" %>

        可能出现的问题:

       (1)输出的顺序问题

           <%

               //写到自己的缓冲区中

                out.print("111111");

               out.flush();//可以按顺序写入

               PrintWriter out1 =response.getWriter();

               //得到的是servlet引擎所得到的缓冲区

               out1.println("222222");

        %>

(2)使用冲突问题

通过字节流获取,会抛异常(java.lang.IllegalStateException),因为在这句话之前后有静态的代码,会有out.println();输出的对象

<%

            ServletOutputStream sos =  response.getOutputStream();

            sos.print("www.it315.com");    

%>

(3)页面跳转的问题

//请求的转发---系统自动的调用字节流

            response.getWriter();//以后的都是打印输出流

RequestDispatcher rd =  request.getRequestDispatcher("MyHtml.html");

       rd.forward(request,response);

    注:Out怎么得到的--

       Jspwriter out 是在Priwriter的基础上加了缓冲区

(4)pageContext对象-----作用域通信对象

pageContext对象是javax.servlet.jsp.PageContext类的实例对象

pageContext封装了当前jsp页面的运行信息

pageContext对象可以获取其他对象的方法,通过传参数在java中运行

每一个页面都有自己的pageContext对象,不会有页面的跳转,代表的是当前的页

注:

    pageContext.getAttribute("name",PageContext.REQUEST_SCOPE);

等同于

String name =  (String)request.getAttribute("name");

(5)session对象-----作用域通信对象 

     session对象表示用户的会话状况,用此项机制可以轻易识别每一个用户,能保存和跟踪用户的会话状态。session对象最常用的方法:

void setAttribute(String name, Object value)

void getAttribute(String name)

(6)application对象

–        application对象作用于整个应用程序,所有的客户端窗口都可以共享该对象,从服务器开始就存在,直到服务器关闭为止。application对象最常用的方法:

•          void setAttribute(String name, Object value):以名称/值的方式,将一个对象的值存放到application中(存的值的类型为Object)。

•          void getAttribute(String name):根据名称去获取application中存放对象的值(获取的值的类型为Object)。

补充:

在<!%   %>中定义的方法不能输出,可以给方法传一个参数,因为out对象是局部的变量,在整个类中不可能使用

       Public void fun(PageContext pageContext){

           int var =10 ;

           Try{

           pageContext.getOut().println(var) ;

}catch(Exception e){

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值