服务期跳转、服务器端转发、服务器端重定向是一个意思
使用“req.getRequestDispatcher(“跳转路径”).forward(req,resp)”实现服务器端转发
客户端发送请求后数据传输过程:
1、客户端发送请求至服务器;
2、服务器将请求分配给对应的控制器(servlet)处理,并在控制器中调用业务层方法获取数据;
3、将获取的数据保存至request内置对象;
4、在跳转页将保存至request内置对象的数据提取并在客户端上显示;
注:上述过程中“.html”文件无法获取保存request内置对象的数据,需要将html文件替换为动态页面“.jsp”
总结:
1、服务器端转发(跳转)的特征
1.实现的方式是调用RequestDispatcher类的forward()方法;
2.服务器端转发(跳转)并不会改变浏览器地址栏;
3.使用服务器端转发后,将在“.jsp”页面中取得保存request内置对象的属性;
2、使用${参数名}在“.jsp”中取得对应的值,该表达式就是EL表达式
客户端转发简介:
实现客户端的转发方式有很多(超链接转发、表单提交以及“JS”中使用的“Windows.location.href”),但是都基于客户端的直接实现。在servlet中实现客户端转发需要使用“sendRedirect("跳转路径")”
注:在服务器端转发可能在服务器端执行多次,但是对于客户端来说只发送了一次请求,但是客户端的转发每次转发都是客户端的一个新请求
总结:
1、客户端转发会改变浏览器的地址栏信息,而不再是表单提交的路径;
2、一次客户端转发过程至少发送两次请求(一次在提交表单时发送,一次在serlvet中调用sendRediect方法时);
3、客户端转发之后保存在request内置对象的数据将不存在(request只能保存本次请求的数据,而跳转请求有两个所以无法保存,可以使用setSession().setattribute()方法替代)
原文地址:https://www.cnblogs.com/hasagi/p/10758751.html