servletContext

本文详细介绍了Web开发中请求转发与重定向的概念及其区别。包括转发与重定向的工作原理、如何在Servlet中实现转发,以及它们在地址栏变化、资源共享方面的不同。同时,还讨论了转发与包含的共同点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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接口
forword(),include();
实现的两种方式
  • 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);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值