本文共 3894 字,大约阅读时间需要 12 分钟。
7,重定向
(1)什么是重定向?
服务器通知浏览器向一个新的地址发送请求。
一般服务器可以发送一个302状态码和一个Location
消息头(值是一个地址,一般称之为重定向地址),
浏览器收到之后,会立即向重定向地址发请求。
(2)如何重定向?
response.sendRedirect(String url);
(3)重定向之前,服务器会先清空response对象上
缓存的数据。
(4)特点
a,重定向之后,浏览器地址栏的地址会变。
b,重定向地址是任意的。
8,servlet容器如何处理请求资源路径
比如,在浏览器地址栏输入
http://ip:port/web03_2/abc.html
浏览器会将"/web03_2/abc.html"作为请求资源
路径发送给servlet容器(tomcat)。
step1,依据应用名找到应用所在的文件夹。
step2,容器会先假设访问的是一个servlet,
会从web.xml文件当中查找对应的servlet来处理。
(1)精确匹配
<url-pattern>/abc.html</url-pattern>
(2)通配符匹配
使用"*"来匹配零个或者多个字符。
比如:
<url-pattern>/*</url-pattern>
(3)后缀匹配
使用"*."开头,后接多个字符。
比如:
<url-pattern>*.do</url-pattern>
以上配置为匹配所有以".do"结尾的请求。
step3,如果以上均不匹配,会查找文件。找到了就
返回,找不到,会返回404。
9,让一个servlet处理多种请求
step1,使用后缀匹配
<url-pattern>*.do</url-pattern>
step2,分析请求资源路径,依据分析结果,调用
不同的分支来处理。
//获得请求资源路径
String request.getRequestURI();
10.
mysql数据库提供的jdbc驱动,
有一些不能够正确进行编码和解码。
jdbc驱动在插入数据时,需要编码(
unicode --> 某种本地字符集,比如gbk,utf-8),
反过来,查询数据时,需要解码(
gbk,utf-8 --->unicode)。
有些mysql的jdbc驱动默认情况下,会使用
"iso-8859-1"来编码和解码,所以,通常
jdbc:mysql://localhost:3306/jsd1407?
useUnicode=true&characterEncoding=utf8;
这两个选项参数的作用是告诉jdbc驱动使用
"utf-8"来编码和解码。
11,servlet的生命周期
(1)什么是servlet的生命周期?
servlet容器如何创建servlet对象,如何对其
进行初始化,调用其方法来处理请求,以及如何
销毁servlet对象的整个过程。
(2)生命周期的四个阶段
1)实例化
a,什么是实例化?
容器创建servlet对象。
b,什么时候实例化?
情况1:容器收到请求之后,才会创建。
注:容器在默认情况下,对于某个servlet,
只会创建一个实例。
情况2: 容器启动之后,立即创建。
<load-on-startup>大于等于0的整数</load-on-startup>
值越小,容器越先创建。
2)初始化
a,什么初始化
容器在创建好servlet对象之后,会立即调用
该对象的init方法。
b,如何实现自己的初始化处理逻辑
b1,GenericServlet提供了init方法的基本实现:
将容器传递过来的ServletConfig对象保存下
来,并且提供了一个getServletConfig方法来
获得该对象。
b2,只要override init()方法即可。
c, 访问servlet的初始化参数
step1,配置初始化参数
<init-param>
<param-name>company</param-name>
<param-value>北京达内科技</param-value>
</init-param>
step2,
String ServletConfig.getInitParameter(
"company");
d,init方法只会执行一次。
3)就绪
a,什么是就绪
容器收到请求之后,会调用servlet对象的
service方法。
b,HttpServlet的service方法实现过程:
依据请求方式调用相应的doxxx方法(比如,
请求方式为get,则调用doGet方法,
这些doxxx方法并没有完整实现,需要开发
人员去override)。
注:
选择1(建议):override doGet/doPost
选择2: override service
4)销毁
a,什么是销毁
容器将servlet对象从容器当中删除掉。
容器在删除servlet对象之前,会先调用该
对象的destroy方法。
b,destroy方法用于释放资源,该方法只会
执行一次。
(3)生命周期相关的几个类与接口
a,Servlet接口
init(ServletConfig config);
service(ServletRequest req,
ServletResponse res);
destroy();
b,GenericServlet抽象类
实现了Servlet接口中的部分方法(init,destroy)
c,HttpServlet抽象类
继承了GenericeServlet,实现了service方法。
转载地址:http://jgwdf.baihongyu.com/