当前课程知识点:Web后端开发技术 >  第2章 Servlet技术基础 >  2.3 Servlet应用 >  2.3.3 处理结果

返回《Web后端开发技术》慕课在线视频课程列表

2.3.3 处理结果在线视频

下一节:2.4.1 注册代码实现

返回《Web后端开发技术》慕课在线视频列表

2.3.3 处理结果课程教案、知识点、字幕

欢迎大家回来继续学习

Web后端开发技术

本小节我们将介绍如何处理

Servlet的结果

当Servlet执行完成以后

它向客户端返回结果

实际上有三种选择

第1种选择是直接输出结果

第2种叫做重定向

第3种叫做请求的转发

下面我们逐一介绍一下

直接输出结果其实我们已经非常熟悉

当完成业务处理以后

我们就通过response这个对象得到

printWriter类型的这样一个对象的

引用

out

然后将结果以字符流的形式返回给

客户端

那么重定向是怎么一回事

重定向是指由原来的请求重新定位到

一个新的url上面

原来的请求失效

客户端所看到的是最后的新的请求所

返回的结果

比如用户请求ServletA那么在这里

ServletA通过重定向这个方法告诉

这个客户端说你再重新发送一次请求

重新发送的请求

然后将它的执行结果返回给

客户端

实际上执行了两次请求

有两次的相应

对于用户来讲

这个过程其实是看不到的

重定向是通过HTTPServlet

Response对象的sendRedirect

方法来实现的

它的基本语法是这个样子

在这个位置我们填写我们需要重定向的

地址

location这个地址可以是相对地址

也可以是绝对地址

比如我们看这样一个例子

他把重定向定向到当前应用下面的

CH02下面的index.jsp

文件上面去

对于重定向这种技术

它可以定向到哪里去

其实有三种

一种是定向到当前应用下面的某个资源

第2种是定向到当前站点下面其他

应用上的资源

还可以定向到其他站点上面的资源

这是重定向

请求转发和重定向是不同的一种

处理请求结果的方式

也就是说将请求转发到一个新的地址

当一个请求到达

ServletA的时候

ServletA通过调用forward的方法

进一步来处理请求

他要假设要寻找ServletB然后找到

ServletB以后

完成处理请求

将结果再返回给客户端

通过刚才动画大家可以看到

转发它实际上是完成了一次请求

一次响应

这个过程

对于用户来讲也是不可见的

我们看一下它语法

请求转发是通过request对象

或者说HTTPServletRequest这个

接口当中的get

ruquestDispatcher

这个方法得到一个这样的类型的对象

然后再调用Forward的方法

将原来的request原来的response

作为参数进行调用

就完成了一次请求的转发

下面是这样一个事例

这个请求转发是把请求转发到刚才

我们看到indexjsp页面下面去了

这里面有一个非常关键的问题

在请求转发和重定向的时候

我们都可以使用斜线来表示相对路径

那么这个斜线在这两个方法当中

它的意义是不一样的

在请求转发当中

这个斜线表示的是当前外部应用的

根目录

而在重定向当中

这个斜线表示的是Web站点的根目录

他们是不一样的

下面我们对请求转发和重定向做一个

简单的比较

我们首先看重定向

从请求的次数来说是发生了两次请求

从定向的范围上来看

是不限于同一个web应用

在地址栏上面请求转发是

最终用户看到的是新的地址

浏览器

他被告诉说你在发送一次请求

然后从请求对象来说是不同的请求对象

和不同的响应

从发送对象或者发送消息的对象来说

是使用的是响应对象

调用的方法叫做sendRedirect

对于请求了转发来说

他发送的是一个请求

然后他能够转发的是同一个Web应用

下的其他的组件

在地址栏用户看到的是同样的地址

原来的地址

这个浏览器并不知道服务器内部发生了

怎样的事情

从请求的对象和想要对象来说都是

一个一个请求对象

一个响应对象

执行体是通过请求对象间接来完成

请求转发的

调用的方法是dispatcher那个方法类

当中的forward方法来完成

请求的转发的

现在我们来介绍一下Servlet

处理重定向和请求转发

那么为了节约时间

我已经建好了几个页面

一个是indexjsp里面

是新页面

还有一个是RedirectServlet

我们用在Servlet

当中去写相关的代码

那么首先在doget的方法当中

我们去用response.sendRedirect

这个方法就可以进行重定向

我们重定向到哪去

我可以用request.getcontextpath

contextpath就是获取

上下文路径

比如说我现在这个项目叫做chapter2

那么我们上下文路径就是反斜杠

chapter2这么一个路径

然后我去连接上

在这个路径下

我要访问的要重定向到index.jsp

我这里跟一个index.jsp

就可以了

好保存

然后我们使它运行起来

打开我们的浏览器

输入我们的访问地址

chapter2

然后我们访问的是Redirect

这个Servlet

敲回车

大家注意看

大家可以看到刚才我输的是

Redirect

Servlet

但是他现在已经给我重定向到

index.jsp了

并且这里显示的是index.jsp的

一个新页面

这就是重定向

它会改变我地址栏的显示

我们再来看看我们的请求转发

我把相关的代码写在forwardServlet

下面

同样在doget的方法里面

我们去实现相关的代码

那么请求转发

我首先可以通过request的对象的一个

方法

叫做getdispatcher

requestdispathcer

它可以返回一个

requestDispatcher对象

requestdispatcher这么一个对象

那么这里面我传的参数就是我想请求到

转发到哪一个页面去

跟我们之前类似

我想转发到我的上下文

request.getContextPath

连接上我的index.jsp

然后我通过forward一个方法

forward有一个方法就叫做forward

把我们的request参数response参数

给进去

那么它就可以完成这样的一个请求

转发

保存

我们打开一个新的地址

输入我们的forward

Servlet敲回车

这里没有显示

有可能是因为他没有编译和运行

我把Context停止再重启一下

刷新

我们检查一下

forwardServlet

这里出现了错误

大家可以从我们的信息当中可以

看得出来

这里显示的是我们的chapter2

chapter2连续两个了

那么原因是这种请求转发

它默认是基于当前应用的

也就是基于这个目录

所以说我们在写代码的时候

就不要再加request.getContextPath

我们直接给他请求转发到

index.jsp就可以了

那么刷新

重新启动一下Tomcat

刷新

大家可以看到已经到了index.jsp

我是新页面显示了

但是大家可以看到我们的浏览器上

依然显示的是forward

Servlet地址栏并没有变

那么它俩请求转发

还有重定向

除了地址栏的变化

还有别的变化吗

我们再来演示一个

我在请求转发里面

在转发之前

我往request里面设置一个属性

比如说就叫做name

那么name的值将设为hbun

那么同样代码我也给设置到这个

forwardServlet当中

我们在index.jsp当中

我是新页面的后面

我想把这个属性值拿出来

我可以通过这样的方式去拿

request.getParametername

我们看看name值

到底输得出来还是输不出来

首先我们还是把重启一下

我们先访问

Redirect.Servlet

在这里我们访问

Redirect

Servlet

那么大家可以看到我是新页面出来了

但是这个值是拿不到的

那么我们访问forwardServlet

刷新一下

这里我写错了

不是getParameter

应该是request.getAttribute

我们重新看一下

我们用send

用RedirectServlet

它依然是拿不到的

那么我们用forwardServlet刷新

我们这个值应该是

name

因为这里写的他的替值是name

我们要通过name值拿到hbun的值

我们再来演示一下

RedirectServlet

大家可以看到这里的值是拿不到的

那么刷新它forwardServlet

可以看到我们通过name值拿到了

hbun所以我们用请求转发的方式

是能够拿到request里面域当中的值的

而用这种重定向是无法拿到的

本小节就讲到这里

Web后端开发技术课程列表:

第1章 Java Web开发准备

-1.0 导学

--1.0.1 导学

-1.1 Web应用开发概述

--1.1.1 Web应用简介

--1.1.2 Web开发技术

--1.1.3 测试

-1.2 准备Java Web应用开发环境

--1.2.1 准备Java Web应用开发环境

--1.2.2 测试

--1.2.3 谈谈JavaWeb优势和学习方法

-1.3 任务实现:Hello World Web项目

--1.3.1 Hello World Web项目

--1.3.2 测试

-1.4 小结

--1.4.1 小结

-本课程所有代码

--课程参考代码

第2章 Servlet技术基础

-2.0 导学

--2.0.1 导学

-2.1 Servlet概述

--2.1.1 Servlet简介

--2.1.2 Servlet API

--2.1.3 测试

-2.2 创建Servlet

--2.2.1 Hello Servlet

--2.2.2 Servlet配置

--2,2,3 作业

-2.3 Servlet应用

--2.3.1 处理超链接请求

--2.3.2 处理form表单请求

--2.3.3 处理结果

--2.3.4 测试

-2.4 任务实现:某高校毕业生信息发布系统-注册与登录(Servlet版)

--2.4.1 注册代码实现

--2.4.2 登录代码实现

--2.4.3 测试

--2.4.4谈一谈jQuery前端开发框架

-2.5 ServletConfig接口

--2.5.1 ServletConfig接口

-2.6 ServletContext接口

--2.6.1 ServletContext接口

-2.7 HttpServletRequest接口

--2.7.1 获取请求报文信息

--2.7.2 上传照片

--2.7.3 获取网络连接信息

--2.7.4 存取请求域属性

--2.7.5 测验

--2.7.6 在请求转发和重定向过程中传递数据

-2.8 HttpServletResponse接口

--2.8.1 HttpServletResponse接口

--2.8.2 输出服务器端图片

--2.8.3 测试

-2.9 任务实现:某高校毕业生信息发布系统-简历添加

--2.9.1 任务实现:某高校毕业生信息发布系统-简历添加

-2.10 小结

--2.10.1 小结

-动画演示:Java Web应用服务器处理客户端请求的过程

--Java Web应用服务器处理客户端请求的过程

第3章 会话跟踪

-3.0 导学

--3.0.1 导学

-3.1 Cookie技术

--3.1.1 Cookie技术概述

--3.1.2 Cookie技术应用-自动登录

--3.1.3 测试

-3.2 Session技术

--3.2.1 Session技术概述

--3.2.2 Session技术-Session技术应用购物车

--3.2.3 测试

-3.3 URL重写与隐藏表单域

--3.3.1 URL重写技术与隐藏表单域

--3.3.2 测试

-3.4 任务实现:某高校毕业生信息发布系统-简历修改

--3.4.1 任务实现:某高校毕业生信息发布系统-简历修改

--3.4.2 讨论会话跟踪技术的应用场景

-3.5 小结

--3.5.1 小结

第4章 JSP基础

-4.0 导学

--4.0.1 JSP导学

-4.1 jsp概述

--4.1.1 JSP概述

--4.1.2 测试

-4.2 脚本元素

--4.2.1 脚本元素

--4.2.2 测试

-4.3 指令元素

--4.3.1 指令元素

--4.3.2 测试

-4.4 动作元素

--4.4.1 动作元素

--4.4.3 测试

-4.5 内置对象

--4.5.1 内置对象(1)

--4.5.2 内置对象(2)

--4.5.3 测试

-4.6 JavaBean

--4.6.1 JavaBean概述

--4.6.2 分步注册

--4.6.3 测试

-4.7 任务实现:某高校毕业生信息发布系统-首页(JSP版)

--4.7.1 任务实现:某高校毕业生信息发布系统-首页(JSP版)

--4.7.2 在JSP页面显示内容的都有哪些方法

-4.8 小结

--4.8.1 小结

第5章 表达式语言

-5.0 导学

--5.0.1 表达式语言

--5.0.2 测试

-5.1 el语法

--5.1.1 EL语法

--5.1.2 测试

-5.2 el隐含对象

--5.2.1 EL隐含对象

--5.2.2 测试

-5.3 任务实现:某高校毕业生信息发布系统-学生详细信息展示

--5.3.1 任务实现:某高校毕业生信息发布系统-学生详细信息展示

--5.3.2 测试

-5.4 小结

--5.4.1 小结

--5.4.2 讨论el表达式的优势

第6章 标准标签库

-6.0 导学

--6.0.1 标准标签库

--6.0.2 测试

-6.1 核心标签库

--6.1.1 通用标签

--6.1.2 条件标签

--6.1.3 迭代标签

--6.1.4 URL标签

--6.1.5 测试

-6.2 任务实现:某高校毕业生信息发布系统-首页(JSTL版)

--6.2.1 任务实现:某高校毕业生信息发布系统-首页(JSTL版)

--6.2.2 测试

-6.3 小结

--6.3.1 小结

--6.3.2 讨论如何实现自定义标签

第7章 Filter和Listener

-7.0 导学

--7.0_导学

-7.1 过滤器

--7.1.1过滤器(1)

--7.1.2过滤器(2)

--7.1.3 测试

-7.2 监听器

--7.2.1.1与ServletContext相关的监听器

--7.2.1.2示例:访问网站计数功能

--7.2.2.1与Session相关的监听器

--7.2.2.2示例:显示在线用户名称

--7.2.3.1与Request相关的监听器

--7.2.3.2示例:实时显示访问网站用户信息示例

--7.2.4 测试

-7.3 任务实现:某高校毕业生信息发布系统-单态登录

--7.3.1 任务实现:某高校毕业生信息发布系统-单态登录

--7.3.2 测试

-7.4 小结

--7.4.1小结

--7.4.2讨论filter和listener使用场景

第8章 JDBC

-8.0 导学

--8.0_导学

-8.1 JDBC API

--8.1.1 JDBC API

--8.1.2 测试

-8.2 JDBC API访问MySQL基本步骤

--8.2.1 JDBC API

--8.2.2 测试

-8.3 任务实现:某高校毕业生信息发布系统-注册与登录

--8.3.1 任务实现:某高校毕业生信息发布系统-注册与登录(JDBC版)

--8.3.2 测试

-8.4 小结

--8.4.1小结

--8.4.2 讨论JDBC工具类

第9章 某高校毕业生信息发布系统开发

-9.0导学

--9.0导学

-9.1 技术准备

--9.1.1技术准备-MVC模式

--9.1.2技术准备-Ajax技术

--9.1.3技术准备-jQuery对Ajax的实现

--9.1.4_技术准备- JDBC工具类

--9.1.5 测试.

-9.2 系统设计

--9.2系统设计:某高校毕业生信息发布系统开发

-9.3 系统实现

--9.3.1完善登陆和注册功能

--9.3.2完善简历添加功能

--9.3.3完善简历修改功能

--9.3.4.1首页分页显示

--9.3.4.2首页分页显示

-9.4 小结

--9.4.1小结

--9.4.2讨论:分页组件

2.3.3 处理结果笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。