Servlet 请求转发和重定向

请求转发

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");
发布了114 篇原创文章 · 获赞 8 · 访问量 5489

猜你喜欢

转载自blog.csdn.net/OVO_LQ_Start/article/details/104730570