Servlet之间跳转
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方法
案例:登录错误时显示错误界面(要求显示错误原因)
分析:
- 用户输入用户名密码,点击登录
- 跳转到/login处理请求,验证用户名和密码是否正确
- 如果错误跳转到“error.jsp”页面
- 错误的原因需要从/login传递给error.jsp页面
- 之前学过ServletContext,可以在整个web范围传递数据,但此处不能使用,并发访问时,错误信息无法准确记录
- 考虑使用request对象,通过setAttribute记录错误信息,再将请求转发给“error.jsp”页面
步骤:
创建登录页面,包括用户名、密码,点击登录跳转到/login
创建LoginServlet,urlPatterns = “/login”,在doPost方法中,验证用户名记密码
如果用户名及密码错误,将错误信息写入request对象
request.setAttribute(“errorMsg”,“错误原因”);将request对象转发到"error.jsp"页面
request.getRequestDispatcher("/error.jsp").forward(request,response);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之间跳转相关推荐
- Servlet之间的跳转
Servlet之间的跳转 1. 转向(Forward) 转向(forward)是通过RequestDispatcher对象的forward(HttpServletRequest request, Ht ...
- Web之间跳转和信息共享、Servlet的三大作用域对象、动态网页JSP
一:Web之间跳转和信息共享 01.为什么需要Servlet之间的交互 Web组件(Servlet/JSP)的交互:Web组件之间的跳转,数据共享.为什么Web组件之间需要跳转,需要数据共享.![we ...
- JSP与servlet之间的传值方式
总结JSP与servlet之间的传值 JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 se ...
- jsp form提交到后台中文乱码_JSP与servlet之间的数据传递
[51] Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp:使用request.response对象完成传值,具体实现如下: Jsp与Serv ...
- Jsp与Servlet之间传值方式
JSP与servlet之间的传值方式 JSP与 servlet之间的传值有两种情况:JSP -> servlet, servlet -> JSP. 通过对象 request和 sessio ...
- JSP与Servlet之间传值
JSP与Servlet之间传值 Jsp与Servlet之间的传值有两种,一种是Jsp传值给Sevlet,另一种是Servlet传值给Jsp:使用request.response对象完成传值,具体实现如 ...
- httpservlet.java:131_Servlet学习1:Http状态码、多个Servlet之间调用规则、多个Servlet之间数据共享实现方案...
Http状态码 1.介绍: 1)由三位数字组成的一个符号. 2)Http服务器在推送响应包之前,根据本次请求处理情况将Http状态码写入到响应包中[状态行]上 3)如果Http服务器针对本次请求,返回 ...
- 去除警告,打电话,发信息,应用程序之间跳转,打印沙盒路径,字符串名字转换方法,包装导航控制器等的代码...
从偏好设置中读取值: 打电话代码: 发信息代码: 打印沙盒路径代码: 应用程序之间跳转代码: 跳转到苹果商店代码: 去除警告代码: 根据字符串名称转换成相对应方法的代码: #import " ...
- Ionic创建页面以及页面之间跳转、页面添加返回按钮、新增底部页面
场景 Ionic介绍以及搭建环境.新建和运行项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106308166 在上面搭建起 ...
最新文章
- nodejs之connect
- 第二讲 无穷级数的性质
- 用MySQL创建数据库和数据库表
- Delphi利用MSCOMM控件进行GPS数据采集
- 在线考试计算机文化基础,计算机文化基础在线考试.pdf
- 数学也浪漫 数学的几句贴心话
- php 表情选择,php imagettftext和特定的表情符号
- python的核心理念是什么_Python 面向对象编程的核心概念知识点简介
- java 调用谷歌翻译API(直接可以使用)
- DSP技术-2-DSP的C语言同主机C语言的主要区别在哪里?
- VS201x+Qt5开发,中文乱码解决
- AVI文件在opencore框架下的解析
- php model module,Yii2用Gii自动生成Module+Model+CRUD
- DateCalander
- 基于安卓的四六级英语学习小助手app(android毕业设计)
- 学习记录 第01章 数据能做什么
- Pinia 上手指南 -- 新一代状态管理工具,它会成为 Vuex 的良好替代品吗?
- 计算机图标右击管理打不开,电脑右键管理菜单打不开怎么办
- 网络版权侵权行为有哪些
- 迭代函数系统(IFS)