您的位置:首页 > 其它

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

2015-11-07 18:15 477 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: