Servlet总结

Servlet总结

(1)Servlet基础

1).什么是Servlet?
sun公司制定的一种用来扩展web服务器功能的组件规范
扩展web服务器:
web服务器比如apache iis 等只能够处理静态资源的请求即需要事先将html图片等准备好,并存放到
web服务器上不能够处理动态资源的请求(需要通过计算生成相应的html)所以需要扩展其功能,能够处理其功能。
可以使用serlet来扩展web服务器的功能,当请求到达web 服务器如果需要计算,
则web服务器调用servlet来处理
组件规范:
什么是组件?(比如说轮胎)
符合一定规范实现部分功能需要部署到相应的容器里,才能运行的软件模块

    Servlet就是一个符合servlet规范的组件,需要部署到servlet容器里面才能运行

servlet只需要关注业务逻辑,servlet容器会提供运行环境(包括网络相关的服务)。
什么是容器?
符合一定的规范,为组件提供运行环境的一种程序
Tomcat(雄猫)就是一个servlet容器


2).如何写一个Servlet?
step1.写一个java类,实现Servlet接口或者继承HttpServlet类
注:
HttpServlet类实现了Servlet接口中的部分方法
step2.编译
注:
使用javac命令将.java文件编译成.class文件
step3.打包
注:建立一个具有如下结构的文件夹
appname(应用名)
WEB-INF
classes(放.class文件)
lib(放.jar文件,该文件夹可以选)
web.xml(部署描述文件)
step4:部署
将step3创建好的整个文件夹拷贝到servlet容器指定的位置
注:
可以将整个文件夹使用jar命令压缩成“.war”为后缀的文件,然后再拷贝
step5:启动容器,访问servlet

http://ip:port/appname/url-pattern
注:
url-pattern是一个字符串,在web.xml中设置


3).Servlet是如何运行的?

step1.浏览器依据ip和port建立连接。

step2.浏览器将相关数据添加到请求数据包里面,然后发送给服务器。

step3.服务器会解析请求数据包中的数据,并且将这些数据添加到request
对象里面,同时,还会创建一个response对象。

注:
	开发人员可以通过request对象获得请求数据包中的数据,比如
获得请求参数值。可以将处理结果写到response对象里面,容器会从
response对象中获取处理结果,然后创建响应数据包并发送给浏览器。

step4.服务器创建servlet对象(实例化),然后调用该对象的service方法。

注:
	容器会将request对象和response对象作为参数传递过service方法。

step5.服务器从response对象中获取处理结果,然后创建响应数据包并发送给
浏览器。

step6.浏览器解析响应数据包,依据解析到的数据生成相应的页面。


4).Http协议(了解)

a.http协议是什么?

是一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及相应的数据包的结构。
注:
tcp/ip (低层协议)网络层和传输层协议,负责将数据可靠的从一台机器传递到另一台机器
http协议 属于应用层协议,将数据打包之后,会将数据包交给tcp/ip来传递
b.特点?
.浏览器与web服务器之间如何通信,如果浏览器要发送新的请求,需要重新建立新的连接,即“一次请求,一次连接”这样做的好处是服务器可以利用有限的连接尽可能多的请求服务。
c.数据包的结构(消息头、状态码)

请求数据包
请求行:请求方式 请求资源路径 协议和版本
GET /day022/bmi?height=1.85&weight=100 HTTP/1.1
若干消息头:
注:
消息头是一些键值对,使用“: ”分隔,通信的双方可以利用消息头来传递一些特定的消息
比如浏览器可以通过发送user-agent消息头来告诉服务器,浏览器的类型和版本。
实体内容(消息正文)
注:只有请求方式为post时,实体内容才会有数据
如果请求方式为get 时,实体内容为空
响应数据包
状态行(协议和版本 状态码 状态描述)
注:状态码是一个三位数,表示服务器处理请求的一种状态
常见的状态码:
200 正常
500 系统出错
404 找不到对应资源

若干消息头
注:服务器也可以发送一些消息头给浏览器,比如,
发送content-type消息头,告诉浏览器,服务器返回的数据类型和编码集

BMI29.218407596785973
实体内容

程序处理的结果,浏览器会解析出来,生成相应的页民
d.两种请求方式
###1)get请求
a.哪些情况下,浏览器发送get请求?
a1直接在浏览器地址输入某个地址
a2 表单默认的提交方式
a3 点击链接。
b.特点?
1.会将请求参数显示在浏览器地址栏,不安全

有 一些网络设备,比如路由器,会记录请求地址
会将请求参数添加到请求资源路径的后面,只能提交少量的数据给服务器
注:请求行大约只能存放2k左右的数据

###2)post请求
哪些情况下,浏览器会发送post请求
a1,将表单的method属性设置为post
特点:
将表单的method属性设置为post
特点:不会将请求参数显示在地址栏,相对安全一些
注:http协议并不会对数据包中数据进行加密,所以,对于敏感数据,一定要加密
会将请求参数添加到实体内容里面,可以提交可以提交大量的数据给服务器。


(2)Servlet核心

1).如何获得请求参数值?

(1)String request.getParameter(String paramName);

注:
如果请求参数名与实际传递过来的请求参数名不一致,会获得null值。

(2)String[] request.getParameterValues(String paramName);

注:
有多个请求参数名相同时,使用此方法。
对于多选框,如果没有选择任何选项,会获得null值

2).Servlet输出中文,如何处理?
post
request.setCharacterEncoding(“utf-8”);
get
修改server.xml,
注:如果是tomcat8.0及以上版本,可以不用加。
3).表单包含有中文参数,如何处理?

4).Servlet容器如何处理请求资源路径?

5).如何让一个Servlet处理多种请求?

6).Servlet的线程安全问题
jsp是什么


7).转发与重定向

a.什么是重定向?

服务器通知浏览器向某个地址发送请求。
注:服务器可以通过发送302状态码及location消息头(该消息头的值是一个地址,一般称之为重定向地址)给浏览器,浏览器收到之后,会
立即向重定向地址发送请求。


b.如何重定向?

response.sendRedirect(String url);
注:url就是重定向地址。
重定向之前,服务器会清空response对象上存放的所有数据。


c.重定向的特点

a.重定向的地址是任意的。


d.什么是转发?

一个web组件将未完成的处理交给另外一个web组件继续做。
注: web组件: jsp或者servlet的统称。
通常是一个servlet获得数据,然后转发给一个jsp
来展现。


e.如何转发?  

step1.绑订数据到request对象上。

request.setAttribute(String name,Object obj);
注:
	a. name通常称之为绑订名,obj称之为绑订值。
	b. 该方法内部的实现:就是以name作为key,以
		obj作为value,调用Map.put方法。
	c.  Object request.getAttribute(String 	name);

step2.获得转发器。

RequestDispatcher rd = 
		request.getRequestDispatcher(Sting uri);
注:
	a.uri:转发的目的地,通常是一个jsp。
	b.RequestDispatcher是一个接口,该方法会返回	一个符合该接口的对象,这个对象一般我们称	之为转发器。	
	c.转发的本质是一个web组件通知容器去调用另外一个web组件,可以将转发器理解为web组件通知容器的媒介。

step3.转发

	rd.forward(request,response);

f.转发的特点

a.转发之后,浏览器地址栏的地址不变。

b.转发的目的地有限制,要求属于同一个web应用。


g.比较转发与重定向

(1)地址栏地址有无变化

转发之后,浏览器地址栏地址不变;重定向之后,浏览器
地址栏地址会发生改变。

(2)目的地有无限制

转发有限制,重定向没有任何限制。

(3)能否共享request对象和response对象。

转发可以,重定向不行。

(4)一件事是否完成

转发是一件事未做完,让另外一个web组件继续做;
而重定向是一件事已经完成,再做另外一件独立的事件。


8).Servlet的生命周期

a.什么是Servlet的生命周期?
b.生命周期分成哪几个阶段?
c.容器在什么时候创建Servlet对象?(load-on-startup)
d.容器会创建几个Servlet实例?。	
e.初始化方法会执行几次?
g.如何配置初始化参数?
h.如何实现自已的初始化处理逻辑? 
i.doGet,doPost方法的作用?
j.Servlet接口,GenericServlet,HttpServlet的关系。
h.ServletConfig的作用?	

9)路径问题

a.什么是相对路径?
b.什么是绝对路径?

c.如何写绝对路径? 

链接、表单提交、重定向从应用名开始写;转发
从应用名之后开始写。

10)Servlet上下文

a.什么是Servlet上下文? (唯一性、持久性)
b.如何获得Servlet上下文?
c.主要作用(绑订数据时与request,session的区别)
d.全局的初始化参数。

(3)状态管理


(1)什么是状态管理?

将浏览器与web服务器之间多次交互当做一个整体来处理,
并且将多次交互所产生的数据(即状态)保存下来。


(2)如何进行状态管理?

a.方式一  将状态保存在浏览器端

通常使用Cookie技术。

b.方式二  将状态保存在服务器端

通常使用Session技术。

(4)过滤器与监听器

(5)数据访问

(6)典型案例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值