Servlet之间跳转

  • Servlet之间的跳转:
  • 转发Forward
    • 请求转发原理
    • Forward相关方法
    • 重定向Redirect
    • 重定向和请求转发的区别

Servlet之间的跳转:

  • Servlet之间可以实现跳转,从一个Servlet跳转到另一个Servlet,利用Servlet的跳转技术可以很方便的把一块业务模块分开,比如使用一个Servlet接收用户请求,根据业务规则转到其他Servlet进行处理,最后跳转到另一个Servlet把处理结果展示出来。
  • 是实现MVC模式的基础(modle,view,controller)

MVC:一种业务、数据、显示分离的方式组织代码,将业务逻辑聚集到一个部件中,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出在一个逻辑的图形化用户界面的结构中。

Servlet提供了两种跳转方式:

  • request对象提供的:请求转发Forward
  • response对象提供的:重定向Redirect

转发Forward

请求转发原理

在Servlet中,如果当前的Web资源不想处理请求或完成部分功能处理,可以通过forward方式,将当前的请求再传递给其他的web资源处理,这种方式为请求转发。

转发流程图:

Forward相关方法

1)RequestDispatcher对象

可以通过request.getRequestDispatcher()方法获取
调用这个对象的forward方法就可以实现请求转发

2)转发过程中携带数据:

request本身也是一个域对象,reques可以携带数据传递给其他web资源,作用域范围是当前请求

  • setAttribute方法
  • getAttribute方法
  • removeAttribute方法
  • getAttributeNames方法

案例:登录错误时显示错误界面(要求显示错误原因)

分析:

  1. 用户输入用户名密码,点击登录
  2. 跳转到/login处理请求,验证用户名和密码是否正确
  3. 如果错误跳转到“error.jsp”页面
  4. 错误的原因需要从/login传递给error.jsp页面
  5. 之前学过ServletContext,可以在整个web范围传递数据,但此处不能使用,并发访问时,错误信息无法准确记录
  6. 考虑使用request对象,通过setAttribute记录错误信息,再将请求转发给“error.jsp”页面

步骤:

  1. 创建登录页面,包括用户名、密码,点击登录跳转到/login

  2. 创建LoginServlet,urlPatterns = “/login”,在doPost方法中,验证用户名记密码

  3. 如果用户名及密码错误,将错误信息写入request对象
    request.setAttribute(“errorMsg”,“错误原因”);

  4. 将request对象转发到"error.jsp"页面
    request.getRequestDispatcher("/error.jsp").forward(request,response);

  5. 1在"error.jsp"页面获取请求中错误原因,并显示
    <%=request.getAttribute(“errorMsg”)%> //暂时了解一下即可,后续课程会讲到

重定向Redirect

重定向概念

重定向是根据服务器返回的状态码来实现的。客户端浏览器在请求服务器的时候,服务器会返回一个状态码。服务器通过HttpServletResponse的setStatus(int status)方法来设置状态码。如果服务器这个时候返回的状态码是301或者302,则浏览器就会按照返回的网址重新请求该资源。服务器的响应中会带着这个新资源的地址。

重定向相关代码

//设置状态码为302,SC_MOVED_TEMPORAILY就是302的静态常量response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);//在请求头中携带新的资源地址response.setHeader("Location","http://www.baidu.com");为了使用方便HttpServletResponse中将setStatus和setHeader这两种方法合并到一起叫做sendRedirect(String location);

重定向和请求转发的区别

重定向和请求转发的区别:

  • 请求转发,网址不会改变,请求重定向,网址会改变
  • 请求转发只有一个request和response,请求重定向,有两个request和response
  • 服务器外部资源只能是请求重定向,内部资源两者皆可
  • 需要向下一个Servlet通过请求传递数据,需要考虑使用请求转发

Servlet之间跳转相关推荐

  1. Servlet之间的跳转

    Servlet之间的跳转 1. 转向(Forward) 转向(forward)是通过RequestDispatcher对象的forward(HttpServletRequest request, Ht ...

  2. Web之间跳转和信息共享、Servlet的三大作用域对象、动态网页JSP

    一:Web之间跳转和信息共享 01.为什么需要Servlet之间的交互 Web组件(Servlet/JSP)的交互:Web组件之间的跳转,数据共享.为什么Web组件之间需要跳转,需要数据共享.![we ...

  3. JSP与servlet之间的传值方式

        总结JSP与servlet之间的传值 JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 se ...

  4. jsp form提交到后台中文乱码_JSP与servlet之间的数据传递

    [51] Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp:使用request.response对象完成传值,具体实现如下: Jsp与Serv ...

  5. Jsp与Servlet之间传值方式

    JSP与servlet之间的传值方式 JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 sessio ...

  6. JSP与Servlet之间传值

    JSP与Servlet之间传值 Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp:使用request.response对象完成传值,具体实现如 ...

  7. httpservlet.java:131_Servlet学习1:Http状态码、多个Servlet之间调用规则、多个Servlet之间数据共享实现方案...

    Http状态码 1.介绍: 1)由三位数字组成的一个符号. 2)Http服务器在推送响应包之前,根据本次请求处理情况将Http状态码写入到响应包中[状态行]上 3)如果Http服务器针对本次请求,返回 ...

  8. 去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码...

    从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import " ...

  9. Ionic创建页面以及页面之间跳转、页面添加返回按钮、新增底部页面

    场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...

最新文章

  1. nodejs之connect
  2. 第二讲 无穷级数的性质
  3. 用MySQL创建数据库和数据库表
  4. Delphi利用MSCOMM控件进行GPS数据采集
  5. 在线考试计算机文化基础,计算机文化基础在线考试.pdf
  6. 数学也浪漫 数学的几句贴心话
  7. php 表情选择,php imagettftext和特定的表情符号
  8. python的核心理念是什么_Python 面向对象编程的核心概念知识点简介
  9. java 调用谷歌翻译API(直接可以使用)
  10. DSP技术-2-DSP的C语言同主机C语言的主要区别在哪里?
  11. VS201x+Qt5开发,中文乱码解决
  12. AVI文件在opencore框架下的解析
  13. php model module,Yii2用Gii自动生成Module+Model+CRUD
  14. DateCalander
  15. 基于安卓的四六级英语学习小助手app(android毕业设计)
  16. 学习记录 第01章 数据能做什么
  17. Pinia 上手指南 -- 新一代状态管理工具,它会成为 Vuex 的良好替代品吗?
  18. 计算机图标右击管理打不开,电脑右键管理菜单打不开怎么办
  19. 网络版权侵权行为有哪些
  20. 迭代函数系统(IFS)

热门文章

  1. 机器学习理论与实战(九)回归树和模型树
  2. 中企海外周报 | Vivo进一步拓展中东和非洲市场;一加将携首款概念机亮相2020 CES展...
  3. 计算机组成原理笔记(王道考研) 第四章:指令系统
  4. 【生活类】帝都美食与旅行
  5. 7.1 Git 工具 - 选择修订版本
  6. Golang获取目录下的文件及目录信息
  7. 单例、观察者、代理、备忘录、工厂
  8. 直流电源的SENSE远端电压补偿技术
  9. 2021年T电梯修理考试技巧及T电梯修理多少钱
  10. LLM模型中英文评测基准