servlet请求转发、包含以及重定向

24 篇文章 0 订阅
12 篇文章 0 订阅

请求转发:

方式一:

  ServletContext对象.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 必须以"/"开头,否则报错,此"/"就表示的是当前应用(绝对路径表示法)

方式二:

  request.getRequestDispatcher(目标资源的URI).forward(request,response);

  目标资源的URI "/servlet/GetParam" 如果以"/"开头,就表示的是当前应用(绝对路径表示法)。

  GetParam" 如果不以"/"开头,就表示相对路径。相对路径:两个绝对路径去掉前面相同的部分

 

由源组件转发到目标组件时,容器会清空源组件输出的数据。响应头信息是不清空的,客户端地址栏URL不变

编码原则:不要在转发前后向页面输出数据,也不要关闭输出流。

public void forward(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
//        方式一
//        RequestDispatcher rd=getServletContext().getRequestDispatcher("/servlet/NewPage");
//        方式二
        RequestDispatcher rd=request.getRequestDispatcher("NewPage");
        
        rd.forward(request, response);
    }


包含(动态包含):

request.getRequestDispatcher(目标资源的URI).include(request,response);

 

由源组件包含到目标组件时,容器会清空目标组件的头,所以源组件设置的头才有效。响应体信息是不清空的。

编码原则:不要在目标组件中设置响应头。

	public void include(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException{
		RequestDispatcher rd=request.getRequestDispatcher("/servlet/NewPage");
		rd.include(request, response);
	}

 


重定向:

response.sendRedirect("/../...")

目标资源的URI /应用名/路径.. 绝对路径,"/"后跟应用名

客户端跳转,request中数据不传递!客户端地址栏URL改变。


	public void redirect(HttpServletRequest request,
			HttpServletResponse response) throws IOException{
		response.sendRedirect("/WebProjectName/newURL");
	}



博客园博客:欠扁的小篮子


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值