Servlet请求转发和重定向

简介: Servlet请求转发和重定向

  通过前面的学习我们能够创建并运行一个简单的 Servlet程序,完成浏览器和服务器的简单交互,但是我们编写的Servlet 代码是没有对浏览器的请求进行处理的。现在我们开始学习如何使用 Servlet 进行浏览器请求的处理。

一、Request请求对象:

1.问题:浏览器发起请求到服务器,会遵循HTTP协议将请求数据发送给服务器。那么服务器接受到请求的数据该怎么存储呢?不但要存,而且要保证完成性。

2.解决:使用对象进行存储,服务器每接受一个请求,就创建一个对象专门的存储此次请求的请求数据。

3.实现:request 对象

4.解释:服务器接收到浏览器的请求后,会创建一个 Request 对象,对象中存储了此次请求相关的请求数据。服务器在调用 Servlet 时会将创建的Request 对象作为实参传递给 Servlet 的方法,比如:service 方法。

5.使用:获取请求头数据获取请求行数据获取用户数据

二、Response响应对象:

1.问题:在使用 Request 对象获取了请求数据并进行处理后,处理的结果如何显示到浏览器中呢?

2.解决:使用 Response 对象

3.解释: 服务器在调用指定的 Servlet 进行请求处理的时候,会给 Servlet 的方法传递两个实参 request 和 response。其中 request 中封存了请求相关的请求数据,而 response 则是用来进行响应的一个对象。

使用:设置响应头设置响应编码格式设置响应实体

三、请求乱码问题解决:

使用 String 进行重新编码:uname=new String(uname.getBytes("iso8859-1"),"utf-8");

Get 方式请求:在 service 方法中使用: req.setCharacterEncoding(“utf-8”);在 tomcat 服务器目录下的 conf 文件下找到 server.xml 文件,打开进行如下配置:

Post 方式请求:在 service 方法中使用: req.setCharacterEncoding(“utf-8”);

四、流程总结:

Servlet 的使用流程:

1.设置请求编码格式

req.setCharacterEncoding("utf-8");

2.设置响应编码格式

resp.setContentType("text/html;charset=utf-8");

3.获取请求信息

String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");

4.处理请求信息

if("张三".equals(uname)&&"123".equals(pwd)){
      resp.getWriter().write("登录成功");//响应处理结果
}else{
      resp.getWriter().write("用户名或密码错误");//响应处理结果
    }

5.响应处理结果

数据流转流程:

浏览器------>服务器------->数据库

浏览器<------服务器<-------数据库

五、请求转发:

1.问题:服务器在接收到浏览器的请求后,仅仅使用一个Servlet 进行请求处理,会造成不同的Servlet 逻辑代码冗余,Servlet的职责不明确。

2.解决:使用请求转发,也就是一个serverlet调用其他serverlet方法。

3.特点:一次请求地址栏信息不改变。

六、重定向

1.问题:如果当前的请求,Servlet 无法进行处理怎么办?如果使用请求转发,造成表单数据重复提交怎么办?

2.解决:使用重定向

3.使用:response.sendRedirect(“路径”). 本地路径为:uri网络路径为:定向资源的 URL 信息

4.特点:两次请求浏览器地址栏信息改变避免表单重复提交

七、Request 对象作用域

1.问题:使用请求转发后,不同的 Servlet 之间怎么进行数据的共享呢?或者说数据怎么从一个 servlet 流转给另外一个 Servlet 呢?

2.解决:使用 request 对象的作用域

3.使用:request.setAttribute(object name,Object value);request.getAttribute(Object obj)作用:解决了一次请求内的不同 Servlet 的数据(请求数据+其他数据)共享问题。

4.作用域:基于请求转发,一次请求中的所有 Servlet 共享。

5.注意:使用 Request 对象进行数据流转,数据只在一次请求内有效。

6.特点:服务器创建每次请求都会创建生命周期一次请求

目录
相关文章
|
6月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 客户端 HTTP 请求 3
该教程展示了如何在Servlet中处理客户端HTTP请求,特别是获取HTTP头信息。示例代码创建了一个名为`DisplayHeader`的Servlet,它扩展了`HttpServlet`并重写了`doGet`方法。在`doGet`中,使用`HttpServletRequest`的`getHeaderNames()`遍历所有头部,显示其名称和对应值。Servlet在TomcatTest项目下,通过`web.xml`配置映射到`/TomcatTest/DisplayHeader`路径。
52 14
|
6月前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
53 8
|
2月前
|
JavaScript Java 容器
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
本文简要回顾了Servlet过滤器Filter的概念和使用,通过实例演示了如何创建过滤器以过滤请求字符编码,并解释了在web.xml中配置过滤器时使用`/`、`/*`和`/**`的区别。
servlet过滤器Filter简要回顾-过滤请求字符编码,/和/*和/**的区别
|
6月前
|
负载均衡
Servlet 教程 之 Servlet 网页重定向 1
Servlet教程展示了如何实现网页重定向。使用`HttpServletResponse`的`sendRedirect()`方法或结合`setStatus()`和`setHeader()`可将请求转向新位置。示例代码创建了一个Servlet,名为`PageRedirect`,在接收到请求时重定向至百度首页。配置`web.xml`后,通过访问`http://localhost:8080/PageRedirect`即可触发重定向。
47 6
|
6月前
Servlet 教程 之 Servlet 客户端 HTTP 请求 1
Servlet教程讲解了客户端HTTP请求,包括各种重要头信息:Accept(定义可处理的MIME类型)、Accept-Charset(指定字符集)、Accept-Encoding(处理的编码类型)、Accept-Language(首选语言)、Authorization(身份验证)、Connection(是否支持持久连接)、Content-Length(POST数据大小)、Cookie(返回cookies)、Host(指定URL的主机和端口)、If-Modified-Since(检查页面更新)、If-Unmodified-Since(条件性操作)。
31 0
|
缓存 Java 数据库
Servlet 处理请求的原理
Servlet 处理请求的原理
196 0
|
6月前
|
Web App开发 前端开发 JavaScript
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
69 0
|
Java 容器
Jsp之四 servlet请求响应
Jsp之四 servlet请求响应
69 0
|
应用服务中间件 API
JavaWeb 速通Servlet(请求转发和请求重定向)
JavaWeb——HttpServletRequest 和 HttpServletResponse 内容分享。
171 0
|
XML 数据格式 容器
Servlet进阶(链接传值、XML配置、转发与重定向)
Servlet进阶(链接传值、XML配置、转发与重定向)
122 0