Servlet总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、SERVLET基础

1 .组件是什么?

是符合一定规范,实现了部分功能的软件模块,组件需要部署到相应的容器里面才能运行。

2 容器是什么?

是符合一定规范,提供组件运行环境的程序。

3、什么是servlet?

sun公司制订的一种用来扩展web服务器功能的组件规范。偏重于业务逻辑的实现4、什么是servelet容器?

是符合一定规范,为servlet组件提供运行环境的程序。

5、如何写一个servlet?

step1,写一个java类,要实现Servlet接口或者继承HttpServlet抽象类。

step2,编译。(javac -cp servlet-api.jar -d . 类名.java)

step3,打包。

创建一个符合如下结构的文件夹:

appname (应用名)

WEB-INF

classes(放字节码文件)

lib(可选,放.jar文件)

web.xml(部署描述文件)

注:一般在开发完成之后,交付给用户去使用时,

会使用jar命令将以上文件夹压缩成一个以".war"

为后缀的文件。

step4,部署

将step3创建好的文件夹或者压缩文件(.war文件)

拷贝到servlet容器指定的文件夹下面(比如,

拷贝到tomcat的webapps文件夹)。

step5,访问

http://ip:port/appname/servlet-url

servlet-url在web.xml文件当中有相应的配置。

5、servlet如何运行的?

比如,在浏览器地址栏输入

http://ip:port/web01/hello?name=sally

参考day01的servlet2.jpg图片

步骤如下:

1)在浏览器中输入地址确认,浏览器根据IP地址与port号与服务器建立连接

2)浏览器将请求资源路径与请求参数根据http协议打包,生成一个请求数据包

3)浏览器向服务器发送请求(请求数据包)

4)Servlet服务器收到请求后,根据http协议进行解析(拆包)

5)Servlet服务器创建request和response对象,将解析后的请求数据保存在request对象内

6)Servlet服务器根据请求资源路径和web.xml文件找到对应的servlet类,对其实例化7)Servlet服务器创建ServletConfig对象

8)Servlet服务器调用servlet对象的init()方法,将ServletConfig对象作为参数传入,对servlet对象进行初始化

9)Servlet服务器调用servlet对象的service()方法,并将request对象和response对象作为参数传入进来

10)Servlet对象从request对象中获得请求参数,进行处理

11)将处理后的结果保存到response对象中。

12)Servlet服务器从response对象获得处理后的结果

13)Servlet服务器将获得的结果根据http协议进行打包,生成一个响应数据包

14)Servlet服务器向浏览器发送响应(响应数据包)

15)浏览器收到响应,并对响应数据包解析

16)浏览器根据解析后的数据生成新的页面

17)(服务器关闭或服务器超时)调用destroy()方法销毁实例

6、servelet常见的状态码

404、405、500、200、302

7、http(hypertext transfer protocol)协议是什么?

由w3c制订的一种网络应用层协议,规定了浏览器与web服务器之间如何通信以及相应的数据格式。

“一次请求,一次连接"。

优点:高效(即服务器可以利用有限的连接为尽可能多的客户端服务)。

缺点:状态管理的问题。

1)如何通信

step1,浏览器建立与服务器之间的连接。

step2,浏览器将请求数据打包并发送。

step3,服务器将响应数据打包并发送。

step4,服务器立即关闭连接。

如果浏览器要发送新的请求,需要重新建立新的连接。

2)数据格式

a,请求数据包

请求行: 请求方式请求资源路径协议类型和版本

消息头: 是一些键值对,表示特定的含义,浏览器与服务器之间都可以发

送。比如,浏览器可以发送一个"User-Agent"消息头,告诉服务

器,浏览器的类型和版本。

实体内容:只有当请求方式为post的时候,实体内容才有数据(请求参数),

如果请求方式是get,请求参数会添加到请求资源路径的后面。

b,响应数据包

状态行: 协议及版本状态码状态描述

消息头:服务器也可以发送一些消息头给浏览器,比如"content-type",告

诉浏览器,服务器返回的数据类型和字符集。

实体内容:程序处理的结果。

8、get请求与post请求

1)哪一些情况下,浏览器会发送get请求?

a,直接在浏览器地址栏输入某个地址

b,点击链接

c,表单默认的提交方式

2)get请求的特点

a,会将请求参数添加到请求资源路径的后面,因为请求行最多只能存放2k左右的

数据,所以,get请求只能发送少量的请求参数。

b,会将请求参数显示在浏览器地址栏,不安全。比如,路由器会记录访问地址。

3)哪一些情况,浏览器会发送post请求

设置了表单的method="post"。

4)post请求的特点

a,将请求参数放到实体内容里面,所以,可以提交大量的数据给服务器。

b,不会将请求参数显示在浏览器地址栏,相对安全(不会加密,对于敏感数据,需

要加密)。如果要加密,可以使用https协议

9、servlet如何输出中文?

(1)常识

a,java语言使用unicode字符集来保存字符。

b,编码:将unicode字符集对应的字节数组转换成

某种本地字符集(gbk,utf-8等等)对应的字节数组。

c,解码:某种本地字符集(gbk,utf-8等等)对应的

字节数组转换成unicode字符集对应的字节数组。

(2)乱码问题产生的原因:

out.println输出时,容器默认会使用"iso-8859-1"去编码。

(3)解决方式:

response.setContentType("text/html;charset=字符集");

字符集必须支持中文,比如"gbk","utf-8"

二、SERVLET核心

10、表单处理:

(1)如何获得请求参数值。

a,String request.getParamter(String paramName);

注意:如果参数名写错(paramName与实际的参数名不一致),返回null。

b,String[] request.getParameterValues(String paramName);

注意:当有多个参数名相同,用此方法。

(2)如何读取中文参数值

1)乱码问题产生的原因

表单提交时,浏览器会对表单中的中文参数值进行编码(会使用打开表单所在的

页面时的字符集来编码)。服务器端默认情况下,会使用"iso-8859-1"去解码。

2)解决方式

step1,保证浏览器按照指定的字符集来编码:

step2,服务器端,按照指定的字符集去解码:

方式一: request.setCharacterEncoding("utf-8");

注意:该方法只对post请求有效。

方式二: new String(name.getBytes("iso-8859-1"),"utf-8");

11、servlet输出中文,要注意什么?

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

相关文档
最新文档