Servlet基础

来源:互联网 发布:java 获取方法签名 编辑:程序博客网 时间:2024/06/06 05:03
1 web服务器:开启服务器,开放端口,接收客户端请求,产生*.html响应。
2 web容器:通信支持,servlet生命周期管理,线程管理,jsp支持,处理安全性(主要是根据请求信息,产生动态页面)
3 web应用服务器:web服务器+web容器。

4 适配器:建立一个类A实现接口,再建立一个类B继承类A,就避免类B重写接口中的所有方法。
       如GenericServlet实现了Servlet接口和ServletConfig接口。HttpServlet在继承           
       GenericsServlet类。就可以避免HtttpServlet要重写所有接口中的方法。

5 servlet的API结构:

servlet规范中有两个接口:servlet(业务接口),servletConfig(配置接口)。

servlet接口中有一个service(),专门由用户书写业务逻辑。由于两个接口方法很多。这时候有一个适配器类:GenericServlet,该类把servlet,servletConfig大部分方法作了简单实现。但没有实现service()。GenericServlet的子类根据自己协议的特点重service()httpServlet就是根据http协议的特点重写了service()。根据七种不同请求分别调用doXX()。所以我们书写servlet,只需要继承httpServlet,重写doGet或doPost就可以了。


6 servlet生命周期:
1 启动tomcat,读取conf/server.xml文件,确定启动端口和web应用存放的路径。
2读取所有web应用中的web.xml文件。并解析。以确定servlet的注册信息。这时如果web.xml书写错误,抛出解析失败的异常。
3容器加载,并实例化servlet。如果没有<load-on-starup>或该标记的值为负值。表示第一次请求产生servlet。如果<load-on-starup>为0或正数,表示容器一启动就产生servlet.但至始至终servlet对象只有一个。单实例多线程。(避免访问过慢)
4调用init()方法,完成初始化。
5 当请求到达后,调用service()完成业务。
6销毁阶段,调用destroy()完成资源清理。

在整个生命周期中1,2,3,4,6都只做一次。只有5,每次请求都会执行。


7解决乱码
post:在doPost()中设置request.setCharacterEncoding("gbk")
get:在tomcat的conf/service.xml中设置

<Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="gbk"/>
8 servlet映射路径
/abc 精确映射。只以/abc请求
*.扩展名 扩展映射。凡是以XX.do结尾的请求。
/abc/* 路径映射。凡是以/abc/XX的请求。
9
ServletConfig可以读取<servlet>中的<init-param>初始化参数,但该数据只能在当前servlet进行访问
ServletContext全局对象,可以读取<context-param>全局初始化参数,可以被任何servlet访问。
绑定对象实现全局共享

原创粉丝点击