赞
踩
1、什么是Servlet?
sun(oracle)公司制订的一种用来扩展web服务器端功能的组件规范。
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
1.1 扩展web服务器端功能
web服务器端(比如apache http webServer,nginx,iis等)只能够处理 静态资源的请求,不能够处理动态资源的请求。
所以需要扩展web服务器的 功能来处理动态资源的请求。
注1:静态资源,指的是需要事先将网页写好。动态资源,指的是需要经过计算,动态生成相应的网页。现在很少用了。
1.2 组件
符合相应的规范,具有部分功能,并且需要部署到相应的容器里面 才能运行的软件模块。比如,Servlet就是一个组件,
需要符合servlet 规范,并且需要部署到servlet容器里面才能运行。
注:容器:符合相应的规范,提供组件运行环境的程序。比如,Tomcat就是一个servlet容器。它处理了网络相关的问题,
我们写Servlet只需要关注业务逻辑即可。
1.3 如何写一个Servlet?
step1. 写一个java类,需要实现Servlet接口或者继承 HttpServlet类。
step2. 编译
step3. 打包
注:创建一个具有如下图结构的文件夹:
step4.部署 将step3创建好的文件夹拷贝到servlet容器指定的文件夹下面。
注:可以将step3创建好的文件夹先使用jar命令压缩成以".war"结尾 的文件,然后再拷贝。
step5.启动servlet容器,然后访问servlet。http://ip:port/appname/url-pattern。
1.4 Servlet是如何运行的?
1.4.1 比如打开浏览器,输入http://ip:port/servlet01/hello
step1.浏览器依据ip,port建立与容器之间的连接。
step2.浏览器将相关数据打包(按照http协议创建一个请求数据包), 然后发送请求。
step3.容器将请求数据包解析出来,然后将解析到的数据放到 request对象里面,同时,还会创建一个response对象。
step4.容器创建servlet对象,然后调用该对象的service方法。
注:容器会将request对象和response对象作为参数传进来。
可以通过request对象获得请求参数值,并且将处理结果写到 response对象里。
step5.容器通过response获取处理结果,然 后打包(响应数据包)发送给浏览器。
step6.浏览器解析响应数据包,生成相应的页面。
1.4.2 Servlet运行结构图如下所示:
2、Servlet输出中文
1.1 如何设置
response.setContentType("text/html;charset=utf-8")。
注:此行代码会设置content-type消息头的值,浏览器会按照指定的字符集来解码。
1.2 请求类型
1.2.1 Get请求
1)哪一些情况下,浏览器会发送get请求?
a.直接在浏览器地址栏输入某个地址。
b.点击链接。
c.点击表单的提交按钮。
2)get请求的特点
a.请求参数会添加到请求资源路径的后面。因为请求行最多只能存放约2K左右的数据,
所以只能添加少量的请求参数。
b.会将请求参数显示在浏览器地址栏,不安全(比如,路由器会记录包含了请求
参数的请求地址)。
1.2.2 Post请求
1)哪些情况下,浏览器会发送post请求?
设置表单的method属性值为"post"。
2)post请求的特点
a.会将请求参数添加到实体内容里面。可以提交大量的数据给服务器。
b.不会将请求参数显示在浏览器地址栏,相对安全一些。
注:不会对请求参数加密。
3、读取请求参数值
(1)getParameter方法
String getParameter(String name)
name:是请求参数名,如果请求参数名写错,则返回null值。
(2)getParameterValues方法
String[] getParameterValues(String name)
注:
a.当有多个请求参数名相同时,使用该方法。
b.对于多选框,如果一个都不选,会获得null值。
4、表单中文参数处理——乱码处理
4.1 为什么会产生乱码?
表单提交时,浏览器会对表单中的中文参数值进行编码(会使用 打开该表单所在的页面时的字符集来编码)。服务器端默认会使用 iso-8859-1来解码。所以会产生乱码。
4.2 如何解决
(1)针对Post方式请求
request.setCharacterEncoding(String charset);
注意:
a.该方法要添加到所有的getParameter方法的前面。
b.charset(字符集)应该与浏览器端保持一致,比如都是utf-8。
(2)针对Get方式请求
修改tomcat的server.xml配置文件,添加URIEncoding="utf-8"。
5、重定向
5.1 什么是重定向?
服务器端通知浏览器,向一个新的地址发送请求。
注:服务器可以发送一个状态码302和一个消息头(Location,该消息头的 值是一个地址,
一般称之为重定向地址),浏览器收到之后,会立即向 重定向地址发送请求。
重定向示意图如下所示:
5.2 如何重定向?
response.sendRedirect(String url);
5.3 重定向特点?
a. 重定向地址是任意的。
b. 重定向之后,浏览器地址栏的地址会发生改变。
注:重定向之前,容器会先清空response对象上存放的所有的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。