前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你一定要知道关于Servlet的这些知识点

你一定要知道关于Servlet的这些知识点

原创
作者头像
会洗碗的CV工程师
发布2024-06-30 22:08:43
750
发布2024-06-30 22:08:43
举报
文章被收录于专栏:JSPJSP

设置请求编码

Req.setCharacterEncoding(“UTF-8”)

请求的数据包基于字节在网络上传输,Tomcat接收到请求的数据包后会将数据包中的字节转换为字符。在Tomcat中使用的是ISO-8859-1的单字节编码完成字节与字符的转换,所以数据中含有中文就会出现乱码,可以通过req.setCharacterEncoding("utf-8")方法来对提交的数据根据指定的编码方式重新做编码处理。(这样响应还是一样乱码的,控制台输出就不会乱码)

资源访问路径

绝对路径

绝对路径访问资源表示直接以”/”作为项目的Context Path。该方式适用于以”/”作为项目的Context Path。

<form action="/getInfo.do" method="post">

相对路径

相对路径访问资源表示会相对于项目的Context Path作为相对路径。该方式适用于为项目指定的具体的Context Path。

<form action="getInfo.do" method="post">

“../”一个点代表当前路径,两个点代表当前路径更前一个路径下。

获取请求头信息

Req.getHeader(“headerKey”)

根据请求头中的key获取对应的value。

String headerValue = req.getHeader("headerKey");

req.getHeaderNames()

获取请求头中所有的key,该方法返回枚举类型。

Enumeration<String> headerNames = req.getHeaderNames();

枚举遍历:循环条件为:。hasMoreElement()函数

获取请求头案例

需求:编写一个Servlet,如果浏览器的语言是zh-CN,显示“你好,聪明的中国人!”,如果浏览器的语言设置为en-US,那么则显示“Hello,American”。

String language=req.getHeader(“Accect-Language”)

if(language.startswitch(“zh-CN”))

Pw.println(“你好,聪明的中国人!”)

Else if(language.startswitch(“en-US”))

Pw.println(“Hello,American!”)

Else

Pw.println(“我不认识”)

HttpServletRequest对象的生命周期

当有请求到达Tomcat时,Tomcat会创建HttpServletRequest对象,并将该对

象通过参数的方式传递到我们Servlet的方法中,当处理请求处理完毕并产生响

应后该对象生命周期结束。

HttpServletResponse对象

HttpServletResponse对象代表服务器的响应。这个对象中封装了响应客户端浏览器的流对象,以及向客户端浏览器响应的响应头、响应数据、响应状态码等信息。

设置响应类型

resp.setContentType("MIME")

该方法可通过MIME-Type设置响应类型。

Type

Meaning

application/msword

Microsoft Word document

application/octet-stream

Unrecognized or binary data

application/pdf

Acrobat (.pdf) file

application/postscript

PostScript file

application/vnd.lotus-notes

Lotus Notes file

application/vnd.ms-excel

Excel spreadsheet

application/vnd.ms-powerpoint

PowerPoint presentation

application/x-gzip

Gzip archive

application/x-java-archive

JAR file

application/x-java-serialized-object

Serialized Java object

application/x-java-vm

Java bytecode (.class) file

application/zip

Zip archive

application/json

JSON

audio/basic

Sound file in .au or .snd format

audio/midi

MIDI sound file

audio/x-aiff

AIFF sound file

audio/x-wav

Microsoft Windows sound file

image/gif

GIF image

image/jpeg

JPEG image

image/png

PNG image

image/tiff

TIFF image

image/x-xbitmap

X Windows bitmap image

text/css

HTML cascading style sheet

text/html

HTML document

text/plain

Plain text

text/xml

XML

video/mpeg

MPEG video clip

video/quicktime

QuickTime video clip

设置字符型响应

常见的字符型响应类型:

resp.setContentType("text/html")

设置响应类型为文本型,内容含有html字符串,是默认的响应类型

resp.setContentType("text/plain")

设置响应类型为文本型,内容是普通文本。

resp.setContentType("application/json")

设置响应类型为JSON格式的字符串。

设置字节型响应

常见的字节型响应:

resp.setContentType("image/jpeg")

设置响应类型为图片类型,图片类型为jpeg或jpg格式。

resp.setContentType("image/gif")

设置响应类型为图片类型,图片类型为gif格式。

//给定读取响应图片的路径

File file = new File(“绝对路径”)

//创建读取图片的IO流对象

InputStream is = new FileInputStream(file)

//创建图片缓冲区

Byte[] buff = new byte[is.available()]

后续还要创建输出流对象,此处暂不写

设置响应编码

设置响应编码有两种方式

response.setContentType("text/html; charset=UTF-8");

response.setCharacterEncoding("UTF-8");

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

不仅发送到浏览器的内容会使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。所以总能正常显示中文

response.setCharacterEncoding("utf-8");

仅仅是发送的浏览器的内容是UTF-8编码的,至于浏览器是用哪种编码方式显示不管。 所以当浏览器的显示编码方式不是UTF-8的时候,就会看到乱码,需要手动指定浏览器编码。

在响应中添加附加信息

重定向响应

response.sendRedirect(URL地址)

重定向响应会在响应头中添加一个Location的key对应的value是给定的URL。客户端浏览器在解析响应头后自动向Location中的URL发送请求。

重定向响应特点:

· 重定向会产生两次请求两次响应。

· 重定向的URL是由客户端浏览器发送的。

· 浏览器地址栏会有变化。

重定向响应案例

需求:创建一个搜索页面,通过百度搜索引擎完成内容搜索。

Html页面:

搜索:<input type=”text”/>

<input type=”submit”value=”Search”>

重定向响应

response.sendRedirect(“wd前面的内容”+URLEncoder.encode(search,”utf-8”))

文件下载

在实现文件下载时,我们需要在响应头中添加附加信息。

response.addHeader("Content-Disposition", "attachment; filename="+文件名);

Content-Disposition:attachment

该附加信息表示作为对下载文件的一个标识字段。不会在浏览器中显示而是直接做下载处理。

filename=文件名

表示指定下载文件的文件名。

Resp.addHearder(“Content-Disposition”,”attachment;filename=”+file.getName())

解决文件名中文乱码问题

resp.addHeader("Content-Disposition","attachment;filename="+new String(file.getName().getBytes("gbk"),"iso-8859-1"));

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HttpServletRequest对象的生命周期
  • HttpServletResponse对象
    • 设置响应类型
      • 设置响应编码
        • 在响应中添加附加信息
          • 重定向响应案例
            • 文件下载
              • 解决文件名中文乱码问题
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档