热门标签 | 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 (可以重重定向到任意地址)


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 解决文件名过长下载失败问题的jQuery方案
    本文介绍了使用jQuery解决文件名过长导致下载失败的问题。原方案中存在文件名部分丢失的问题,通过动态生成隐藏域表单并提交的方式来解决。详细的解决方案和代码示例在文章中给出。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
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社区 版权所有