请求转发
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");