ServletContext中的转发

客户端向服务器发送请求,服务器将请求进行转发,获得响应信息,客户端只发送一次请求,地址栏信息不变。

服务器接收类,进行转发

package com.itheima.zhuanfa;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletContextDemo3 extends HttpServlet{

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
//		转发
		//获得ServletContext对象
		ServletContext sc=getServletContext();
		System.out.println("转发前");
		resp.getOutputStream().write("before".getBytes());
		//获得转发器
		RequestDispatcher rd=sc.getRequestDispatcher("/Demo4");//得到请求转发器
		rd.forward(req,resp);
		/*
		 * 转发的特点:请求的地址栏不变,两者共享request和response对象
		 * 转发前和转发后的页面输出都不会发送到客户端
		 * 转发前不要刷新response中的内容,会吧response中的内容清空
		 */
		System.out.println("转发后");
		resp.getOutputStream().write("after".getBytes());

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

	}

}

转发到的类把这个类的信息传到客户端

package com.itheima.zhuanfa;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletContextDemo4 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.getOutputStream().write("转发成功,我来自Demo4".getBytes());
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

	}

}
时间: 2024-10-14 00:13:46

ServletContext中的转发的相关文章

ServletContext中常用方法(getRsource和getResourceAsStream)

转自:http://blog.csdn.net/yakson/article/details/9203267 一..获取Tomcat的Context的初始化参数. 1.获取Tomcat的server.xml中设置Context的初始化参数. 例如: [html] view plaincopy <Context path="/testcontext" docBase="/context" privileged="true" antiResou

java web 中的转发和重定向

假设应用程序的 contextPath 为 /ctx,在 http://localhost:8080/ctx/a/b 资源中,我们转发和重定向到 http://localhost:8080/ctx/x/y 资源,分别应该怎么写? 转发,是在同一个应用程序中,请求从由资源 A 处理,到由资源 B 处理.资源 A 和资源 B 属于同一个应用程序的资源,它们总是相对于该应用程序的 contextPath 而言的.转发的资源可以使用相对路径(不以 "/" 开头)和绝对路径(以 "/&

采用Spring实现在容器启动时把用ConcurrentHashMap实现的并发缓存加载到ServletContext中

1.ConstantDataDTO.java,一定要重写hashcode和equals方法 import java.io.Serializable; import java.util.Date; /** * ConstantDataDTO.java * * @author steveguoshao * @created 2014年07月10日 下午6:15:55 * @version 1.0 */ public class ConstantDataDTO implements Serializa

触发更新 ServletContext 中的全局变量值

[前情提要] ServletContext对象--三大域对象 Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放. (1)request,一个用户可有多个: (2)session,一个用户一个: (3)而servletContext,所有用户共用一个.所以,为了节省空间,提高效率,ServletContext中,要放必须的.重要的.所有用

Servlet中的转发

Servlet中可以把当前的请求和响应转发到另一个Servlet中,并由另一个Servlet负责输出响应.转发时,源Servlet会把它的ServletRequest对象和ServletRespnse对象都传递给目标Servlet.转发需要调用javax.servlet.RequestDispatcher接口的forward方法.转发的路径在生成RequestDispatcher实例的时候传入.有两种方法可生成RequestDispatcher实例,分别: ServletContext的getR

servlet中的转发和重定向问题

重定向和请求转发在学习servlet的时候很容易混淆,故在此特意记录. 1. 重定向---------sendRedirect()方法 Servlet响应请求有两种方式,一个是重定向,返回一个页面给客户端,另一种方式是直接向客户端输出内容. 重定向功能是让浏览器重新发生请求,但是将请求的是另外一个Servlet. A.使用方法: response.sendRedirect("/ServletProject/fristServlet"). forward(request, respons

iOS中消息转发的实现

嗯,运行时,运行时是个好东西.在Objective-C语言中,这个特性可以帮助我们干很多的事情. 首先这个特性是把代码的决策从编译和链接时变成运行的时候,这样我们就可以用这个特性来做一些只有在运行的时候才能做到的东西,具体包括: 1.swizzling (交换两个方法的实现) 2.动态方法(可以在运行的时候对一个类进行方法的增加,我们这篇博客会主要讲解这个) 3.相关引用(可以把一个类和一个对象使用一个key进行关联) 4.内省(判断一个对象是否可以调用一个方法) 5.使用emoji字符作为方法

关于OC中消息转发机制的理解以及在项目中的实际应用

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">关于OC中的消息转发机制想必大家都很了解,现在来温习一下:</span> 一.什么是消息转发? @selector 是什么? 1一种类型 SEL 2代表你要发送的消息(方法), 跟字符串有点像, 也可以互转.: NSSelectorFromString()   /   NSS

Java Web中请求转发和请求包含

1.都是在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在AServle中setAttribute()保存数据在BServlet中由getAttribute()取出数据 3.在AServlet转发到BServlet,那么整个请求都是由BServlet来完成,AServlet不再插手 4.AServlet 包含BServlet,那么两个Servlet共同完成请求 5.请求转发和请求包含都需要使用一个对象RequestDispatcher. A