servletContext

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

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);


ServletContextJava Web中的一个重要接口,它代表了Web应用程序在服务器中的上下文环境。在一个Web应用程序中,每个Servlet都可以访问同一个ServletContext对象,从而实现Servlet之间的数据共享和通信。 在Java中,可以使用ServletConfig对象的getServletContext()方法来获取ServletContext对象,然后使用该对象的方法来实现一系列操作,例如: 1. 获取Web应用程序的初始化参数:可以使用ServletContext对象的getInitParameter()方法来获取Web应用程序的初始化参数,例如数据库连接等配置信息。 ```java String username = context.getInitParameter("username"); ``` 2. 获取Web应用程序的真实路径:可以使用ServletContext对象的getRealPath()方法来获取Web应用程序的真实路径,例如获取Web应用程序中的一个文件的绝对路径。 ```java String path = context.getRealPath("/WEB-INF/config.properties"); ``` 3. 在ServletContext中保存数据:可以使用ServletContext对象的setAttribute()方法来在ServletContext中保存数据,从而实现Servlet之间的数据共享。 ```java context.setAttribute("key", value); ``` 4. 从ServletContext中获取数据:可以使用ServletContext对象的getAttribute()方法来从ServletContext中获取数据,例如获取其他Servlet保存的数据。 ```java Object value = context.getAttribute("key"); ``` 需要注意的是,ServletContext对象的作用域为整个Web应用程序,因此需要注意数据的安全性和可靠性。另外,ServletContext对象是在Web应用程序启动时创建的,因此可以在Servlet的init()方法中获取ServletContext对象并进行初始化操作,例如读取配置文件等。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值