1.请求转发与重定向
ServletContext中没有转发的方法,但是它里面有getRequestDispatcher这个方法,通过getRequestDispatcher传递一个请求转发的地址,返回一个对象叫RequestDispatcher
RequestDispatcher对象里面有两个方法forward()和include(),这两个方法都能实现转发
在Servlet中实现转发的步骤如下:
/*要利用ServletContext对象实现转发*/
ServletContext context = this.getServletContext();
context.setAttribute(“name”,”redarmy”);
/*RequestDispatcher对象*/
//在Web开发中没有绝对路径 使用相对路径../代表的是:url地址
//http://localhost:8080/20111019/servlet/demo.do
RequestDispatcher rd = context.getRequestDispatcher(“/index.jsp”);
//request 对象 response对象转发
rd.forward(request, response);
//response.sendRedirect(“./index.jsp”);
//rd.include(request, response);
response.getWriter().print(“haha”);
2.请求转发与重定向的区别:
第一: 转发 地址栏不发生变化 转发页面成功。而重定向地址栏发生变化。
第二:请求转发能够把在request中存的值 在项目转发相应的页面中能够获取web动态资源的值 而重定向不能
3.转发和包含
共同点:
- 源组件和目标组件处理的都是同一个客户请求。
- 源组件和目标组件共享同一个ServletRequest对象和ServletResponse对象
- 目标组件都可以是Servlet,JSP,HTml文档。
- 都依赖于JAVAX。servlet.RequestDispatcher接口
- ServletContext的getRequestDispatcher(String path)//path为绝对路径
- ServletRequesr的getrequestDispatcher(String path)//path绝对路径和相对路径都可以。
4.重定向
- 返回302,请求另一个组件。
- 实现方法:HttpservletResponse sendRedirect(String location)
5.获取资源
使用getResourceAsStream("path")
IntputStreamin =this.getServletContext.getResourceAsStream(“”);
Properties props=new Properties();
Porps.load(in);
String url = Props.getProperty(“rul”);
传统的fileInputStream
Stringpath=This.getServletContext().getRealPath("path");
FileInputStream in =newFileInputStream(path);
类装载器
InputStream in = UserDao.class.getClassLoader().getResourceAsStream(''文件名“);
Properties pro =new Properties();
prop.load(in);