• Servlet服务器、客户端跳转


    服务期跳转、服务器端转发、服务器端重定向是一个意思
    使用“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()方法替代)

  • 相关阅读:
    【NOIP2009】【Vijos1752】潜伏者
    【NOIP2008】【Vijos1493】传纸条
    【NOIP2007】【Vijos1378】矩阵取数游戏
    【NOIP2006】【Luogu1063】能量项链
    【NOIP2004】【Luogu1091】合唱队形
    【NOIP2004】【Luogu1089】津津的储蓄计划
    【NOIP2005】【Luogu1052】过河
    【NOIP2004】【Luogu1090】合并果子
    【NOI2002】【Luogu1196】银河英雄传说(并查集带边权)
    【POJ3190】Stall Reservations
  • 原文地址:https://www.cnblogs.com/hasagi/p/10758751.html
Copyright © 2020-2023  润新知