热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

每日分享===Servlet的常用对象

今天分享一些Servlet的常用对象的小知识.一.常用的请求方式1.地址栏输入2.超链接3.From表单4.ajax:通过JQuery中的ajax().get().post().g



今天分享一些Servlet的常用对象的小知识.


一.常用的请求方式

1.地址栏输入

2.超链接

3.From表单

4.ajax : 通过JQuery中的ajax(). get(). post().getJSON()等方法.

5.请求转发

6.重定向


二.HttpServletRequest对象

作用:用来接收客户端发送3过来的请求信息,

1常用方法:

**getRequestURL() 获取客户端发出请求时的完整URL**
getRequestURI() 获取请求行中的资源名称部分项目名称开始
getQueryString() 获取请求行中的参数部分
**getMethod() 获取客户端请求方法**
getProtocol() 获取HTTP版本号
getContextpath() 获取webapp名字

2.获取请求头

在这里插入图片描述

3.获取客户端请求参数(客户端提交的数据)

**getParameter(name) 获取指定名称的参数**
getParameterValues(String name) 获取指定名称参数的所有值
getParmeterNames() 获取一个包含请求消息的所有参数名的Enumeration对象
getParmeterMap() 返回一个保存了请求消息中的所有参数名称和值的Map对象

4.请求乱码解决

乱码原因:

由于现在的 request 属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认使用的编码方式为 ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码

解决方案:

1.只针对POST请求(GET请求无效,处理所有的参数)

request.setCharacterEncoding("UTF-8");

2.GET请求/POST请求通用(如果本身不乱码.设置后反而会出现另外一种乱码:而且一次只能处理一个参数)

new String(request.getParameter(name).getBytes("ISo-8859-1"),"UTF-8")

PS:Tomcat8起,以后的GET方式请求是不会出现乱码的.

在这里插入图片描述

5.请求转发

是一种服务器行为,客户端请求到底后,服务器进行转发,地址栏中的URL不会变更, 从始至终只有一个请求发出.

request.getRequestDispatcher("跳转的路径").forward(request,response);
1、服务端行为,由服务器控制跳转
2、跳转后地址栏不发生改变
3.从始至终只有一个请求发出,请求对象可以共享(request和response对象是同一个)

6.request作用域对象.

通过该对象可以在一个请求中传递数据,作用范围:在一次请求中有效,即服务器跳转有效。

方法

1.request.setAttribute():设置域对象内容;
2.request.getAttribute(String name)::获取域对象内容
3.request.removeAttribute(String name): 删除域对象内容

request 域对象中的数据在一次请求中有效,则经过请求转发,request 域中的数据依然 存在,则在请求转发的过程中可以通过 request 来传输/共享数据。


三.HttpServletResponse 对象

1.HttpServletResponse 的主要功能用于服务器对客户端的请求进行响应,将Web 服务器处理后的结果返回给客户端。 service()方法中形参接收的是HttpServletResponse 接口的实例化对象,这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。

2.常用方法

在这里插入图片描述

3.刷新和页面自动跳转

所有头信息都是随着请求和回应自动发送到服务器端(客户端),在response 中一个比 较常用的头信息就是刷新的指令,可以完成定时刷新的功能.

resp.setHeader("refresh","2");

对于刷新的头信息,除了定时的功能外,还具备了定时跳转的功能,可以让一个页面定时跳转到一个指定的页面。(已经注册成功,两秒后跳转到登陆页面)

response.setHeader("refresh","3;URL=ok.html");

但是这种跳转不是万能的,有时候根本就无法进行跳转操作,返回后刷新不会跳转;对于这种定时跳转的头信息,也可以采用 HTML 的方式进行设置,HTML 本身也可以设 置头信息。(客户端跳转)

在这里插入图片描述

4. 数据响应

5. 接收到客户端请求后,可以通过 HttpServletResponse 对象直接进行响应,

响应时需要获取输出流,有两种形式

getWriter() 获取字符流(只能响应回字符);
getOutputStream()获取字节流(能响应一切数据)
响应回的数据到客户端被浏览器解析.
PS:两者不能同时使用
java.lang.IllegalStateException: getWriter() has already been called for this response

setContentType() 设置数据的响应类型

6响应乱码问题

乱码原因:
服务器响应的数据也会经过网络传输,服务器端有一种编码方式,在客户端也存在一种编码方式,当两端使用的编码方式不同时则出现乱码。
注:如果服务端和客户端编码一致,但编码不支持中文,也会乱码。
乱码情况:
getWriter()的字符乱码
对于 getWriter()获取到的字符流,响应中文必定出乱码,由于服务器端在进行编码时默认会使用 ISO-8859-1 格式的编码,该编码方式并不支持中文。
1、设置服务端的编码
resp.setCharacterEncoding("UTF-8");
getOutputStream()字节乱码
对于 getOutputStream()方式获取到的字节流,响应中文时,由于本身就是传输的字节, 所以此时可能出现乱码,也可能正确显示。
解决方案:
同时设置服务端和客户端的编码及响应类型
resp.setContentType("text/html;charset=UTF-8");
总结:
要想解决响应的乱码,只需要保证使用支持中文的编码格式。并且保证服务器端 和客户端使用相同的编码方式即可。
setContentType() 设置数据的响应类型及编码

四.重定向

重定向是一种服务器指导,客户端的行为。客户端发出第一个请求,被服务器接收,经过处理服务器进行响应

与此同时,服务器给客户端一个地址(下次请求的地址 resp.sendRedirect(“url”);),

当客户端接收到响应后,立刻、马上、自动根据服务器 给的地址进行请求的发送第二个请求,服务器接收请求并作出响应,重定向完成。

从描述中可以看出重定向当中有两个请求存在,并且属于客户端行为。


五…路径问题

相对路径:

相对于当前资源的路径

绝对路径:

资源的完整路径

完整绝对路径:以 http://开头的,该种绝对路径已经跨域,即任何地方的资源都能访问

部分绝对路径:以"/"开头,从当前域名|IP|主机后的端口号开始的,不能跨域

"/"的含义

请求转发:代表的是 http://localhost:8080/站点名/

重定向(客户端跳转):代表的是 http://localhost:8080/

最后做一个请求转发和重定向区别

请求转发
1、地址栏不发生改变
2、服务端跳转
3、只有一次请求
4、request作用域共享 (一次请求中有效)
5、跳转的地址定位到站点名后 (请求转发到当前项目的资源路径)
重定向
1、地址栏发生改变
2、客户端跳转
3、存在两次请求
4、request作用域不共享
5、跳转的地址定位到http (可以重重定向到任意地址)


推荐阅读
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • 本文将深入探讨 iOS 中的 Grand Central Dispatch (GCD),并介绍如何利用 GCD 进行高效多线程编程。如果你对线程的基本概念还不熟悉,建议先阅读相关基础资料。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
author-avatar
手机用户40405729304
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有