servlet转发_处理异常_路径问题

来源:互联网 发布:双路由破解网络尖兵 编辑:程序博客网 时间:2024/06/05 01:10

servlet转发_处理异常_路径问题


1.转发

  (1)什么是转发

     一个web组件(servlet/jsp)将未完成的处理转交给另外一个web组件继续做。

     比较常见的情况是一个servlet将处理结果转交给一个jsp来展现。

   注:

      web组件指的是jsp或者servlet

  (2)如何转发

     step1, 绑订数据到request。

        //name:绑定名,obj:绑定值

        request.setAttribute(String name,Object obj);

     step2,获得转发器

        //uri:要转发给哪一个web组件

        RequestDispatcher rd = equest.getRequestDispatcher(String uri);

     step3,转发

         rd.forward(request,response);

     step4,在转发的目的地,可以使用request.getAttribute方法获得绑定的数据,然后进行处理。

         //如果name对应的值不存在,会返回null

         Object request.getAttribute(String name);

  (3)特点

     a.转发之后,浏览器地址栏的地址不变。

     b.转发的目的地必须是同一个应用。

  (4)注意事项

     a,转发之前,先清空response对象中的缓冲数据。

     b,转发之前,不能够调用out.close().


2.处理servlet运行时产生的异常

  (1)转发到一个异常处理页面

     step1,绑订异常提示信息到request

     step2,转发到一个异常处理页面

     step3,编写异常处理页面

  (2)交给容器来处理

     step1,将异常抛出,比如

         throw new ServletException(e)

     step2,编写异常处理页面

         eg:error2.jsp

        通常,系统异常交给容器来处理比较方便,应用异常一般使用转发来处理。

     step3,配置异常处理页面(让容器知道,当捕获到相应异常后,应该调用哪一个页面)

        <error-page>

           <exception-type>javax.servlet.ServletException</exception-type>

           <location>/error2.jsp</location>

        </error-page>

3.路径问题

  链接,表单提交,重定向,转发

  <a href="del.do"></a>

  <form action="add.do">

  response.sendRedirect("list.do")

  request.getRequestDispatcher("listEmp.jsp")

  (1)相对路径

     不以"/"开头的路径

  (2)绝对路径

     以"/"开头的路径

  (3)如何写绝对路径

     链接,表单提交,重定向的绝对路径从应用名开始写,转发的绝对路径从应用名之后开始写。
   注:

       不要将应用名直接写在路径里面,而应该使用下面的方法来获得实际部署时的应用名。

          //获得应用名“/??”  --获得部署时的应用名

         String request.getContextPath();



0 0
原创粉丝点击