Servlet 请求转发和重定向

本文深入探讨了请求转发和重定向的区别,包括它们的工作原理、数据传递方式、地址栏变化及应用场景。请求转发使浏览器仅发出一次请求,数据可在内部资源间共享;而重定向则涉及两次请求,地址栏会更新,适用于跨应用跳转。

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

请求转发

1.浏览器只发出一次请求,收到一次响应
2.请求转发到的资源中可以直接获取到请求中所携带的数据
3.浏览器地址栏显示的为用户所提交的请求路径
4.只能跳转到当前应用的资源
servlet1

		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		System.out.println(name);
		System.out.println(age);
		request.getRequestDispatcher("other").forward(request, response);

servlet2

		String name=request.getParameter("name");
		String age = request.getParameter("age");
		System.out.println("name="+name+" age="+age);
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write(name+age+"this is pages");

重定向

1.浏览器发出两次请求,接受到两次响应
2.重定向到的资源不能直接获取到用户提交请求的数据
3.浏览器地址栏显示的为重定向的请求路径,而非用户提交请求的路径。可以防止表单的重复提交。
4.重定向不仅可以跳转到当前应用的其他资源,还可以跳转到其他应用的资源。
5.重定向可以减少消耗服务器的资源。
one servlet

request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		String age = request.getParameter("age");
		System.out.println(name);
		System.out.println(age);
		name = URLEncoder.encode(name, "utf-8");//解决重定向时的乱码问题:编码
		response.sendredircect("other");

other Servet

		String name=request.getParameter("name");
		String age = request.getParameter("age");
		name = URLDecoder.decode(name, "utf-8");//解码
		System.out.println("name="+name+" age="+age);
		response.setContentType("text/html;charset=utf-8");
		response.getWriter().write(name+age+"this is pages");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值