JavaWeb学习-Servlet系列-10-实现Servlet的转发

继续来学习ServletContext对象的方法,这个接口中还有一个方法叫 getRequestDispatcher(java.lang.String path),这个对象下有转发的功能。下面用代码来演示下转发功能,我一个项目中有两个Servlet子类,ServletDemo1配置映射是/demo1, 而ServletDemo2配置的映射是/demo2, 转发的意思就是,浏览器访问/demo1,实际上后台执行是/demo2中的service方法。

1.RequestDispatcher对象介绍

在J2EE API文档搜索找到RequestDispatcher,这是一个接口,定义了一个从客户端SERVLET接收请求的对象,并将其传送给服务器上的任一资源,这个对象具有转发请求功能。这个接口下有一个方法forward(), 这个作用就是在服务器上把一个servlet的请求转到另外一个server映射的资源上。

2.两个Servlet对象代码

ServletDemo1.java 代码内容

package com.anthony.servlet;

import java.io.IOException;

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 ServletDemo1 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//调用GenericServlet类中的getServletContext()方法得到ServletContext对象
		this.getServletContext().getRequestDispatcher("/demo2").forward(request, response);
		System.out.println("转发结束");
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

ServletDemo2.java 代码内容

package com.anthony.servlet;

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 ServletDemo2 extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("ServletDemo2");
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

web.xml我就不贴代码了,和前面一样需要配置没一个servlet映射。

3.部署,执行测试

浏览器打开 http://localhost:8080/Servlet01/demo1

ServletDemo2
转发结束

上面输出效果是在ServletDemo2中doGet方法中的代码,浏览器请求的是ServletDemo1映射的/demo1,这个就是转发的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值