Tomcat & Servlet 复习(1)

一、Tomcat与Servlet入门

1.http协议


特点:基于请求和响应的模型,必须先有请求后有响应,必须成对出现。

请求部分:

u  请求行的提交方式:GET和POST的区别:                                                           

l  GET的提交参数会显示在地址栏上,POST不显示

l  GET有大小限制,POST没有

l  GET没有请求体,POST有请求体

u  请求头:都是键值对的形式显示的

l  User-Agent 浏览器类型。用于文件下载等

l  Referer 网页来源。用于防盗链

l  If-Modified-Since 与响应头中的Last-Modified一起查找本地缓存

u  请求体:POST方式提交的参数

 

 

响应部分:

u  响应行:

l  状态码:200-成功 302-重定向 304 查找本地缓存 404 资源不存在 500-服务器内部错误

u  响应头:键值对

l  Last-Modified

l  Content-Disposition 文件下载使用的头信息

l  Location 重定向的跳转路径

l  Refresh 定时刷新/跳转

u  响应体:显示浏览器的页面的内容


2.Servlet

SUN公司提供的动态网页开发技术,是运行在WEB服务器上的Java程序。


Servlet的生命周期

何时创建:用户第一次访问Servlet

何时销毁:项目从服务器移除,或者关闭服务器的时候

//说明Servlet是单例的

用户第一次访问Servlet时,服务器创建Servlet实例,执行Servlet中的init(),任何一次请求服务器都会创建一个新的线程访问Servlet中的service方法,在service方法内部根据请求方式调用doXXX方法,当项目移除或者关闭服务器时,Servlet实例就会被销毁,执行destroy()。

ServletContext 作用:

1.用来获得全局初始化参数

2.用来获得MIME类型

3.作为域对象存取对象

4.读取web工程下的文件






5秒跳转,设置响应头

response.setHeader("Refresh","5;url=/day09/demo5-refresh/index.html");

或直接在html的meta标签中设置,然后response重定向或转发

<meta http-equiv="Refresh"content="5;url=/day09/demo5-refresh/index.html"/>

设置响应码302重定向,然后设置响应头

response.setStatus(302);

response.setHeader("Location","/day09/demo5-refresh/success.html");

直接response.sendRedirect(””);比较省事

 

二、request和response

1.response


文件下载的方式

1.超链接直接下载,讲文件的地址写在href中,当浏览器支持这种格式时,会直接显示。

2.设置两个头一个流

       Content-Type:文件的MIME类型

       Content-Disposition:以下载的形式打开文件

InputStream:文件的输入流

向页面响应的方法:

       getOutputStream();

       getWriter();

做出响应的时候只能能使用其中一种。

输出中文乱码的处理

       下载名称中文乱码:

       response.setHeader(“Content-Disposition”,”attachment;filename=”+filename)

       字节流:

              设置浏览器打开的编码:

                     response.setHeader(“Content-Type”,”text/html;charset=UTF-8”);

              设置中文字节取出时的编码

                     .getBytes(“UTF-8”);

       字符流:

              设置浏览器打开时的编码:

                     response.setHeader(“Content-Type”,”text/html;charset=UTF-8”);

              设置response缓冲区的编码

                     response.setCharacterEncoding(“UTF-8”);

       也可以用response.setContentType(”text/html;charset=UTF-8”)

 

2.request


处理request接受中文参数乱码问题

POST:

       post的参数在请求体中,直接到达后台的Servlet,数据封装在Servlet的request中,request也有一个缓冲区,是ISO-8859-1编码,所以要在接收参数前设置缓冲区编码。

request.setCharacterEncoding(“UTF-8”);

GET:

       1.使用URLEncoder和URLDecoder进行编码和解码操作

       2.使用String的构造方法


重定向和转发的区别

       1.重定向的地址栏会发生变化,转发地址栏不变

       2.重定向两次请求两次响应,转发一次请求一次响应

       3.重定向路径需要加工程名,转发不需要

       4.重定向可以跳转到任意网站,转发只能在服务器内部进行转发

       5.请求转发可以共享request域,重定向不能共享,因为第一次的request对象已经被销毁了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值