首页 > 代码库 > Servlet

Servlet

一、什么Servlet

       servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

1.1、编写一个servlet程序:

a、写一个java类,实现servlet接口

 技术分享

 

b、修改web.xml文件,给servlet提供一个可访问的URI地址

技术分享

 


c、部署应用到tomcat服务器

D、测试:http://locahost:8080/day08_servlet/demo1

 

 技术分享

技术分享

 

一般就是类名的小写

二、执行过程

 技术分享

 

三、Servlet生命周期(重要)
    实例化 Servlet-->初始化 init() -->服务(实现)service()->销毁destroy

出生:(实例化-->初始化)第一次访问Servlet就出生(默认情况下)

活着:(服务)应用活着,servlet就活着

死亡:(销毁)应用卸载了servlet就销毁。

 

 技术分享

技术分享

 

 

小知识:

如何让servlet在服务器启动时就创建。

 技术分享

 

数值越小优先级越高

启动服务器就,初始化、实例化对象

四、Servlet的三种创建方式

4.1、实现javax.servlet.Servlet接口(参见:编写一个servlet程序:)

4.2、继承javax.servet.GenericServlet类(适配器模式)

 技术分享

 

4.3、继承javax.servlet.http.HttpServlet类(模板方法设计模式)

(开发中常用方式)

 技术分享

 

Servlet --> GenericServlet --> HttpServlet  (继承HttpServlet)

曾祖父     爷爷        爸爸     孙子

小技巧:使生成的servlet更清新一些

找到:MyEclipse\Common\plugins目录

把com.genuitec.eclipse.wizards_9.0.0.me201108091322.jar复制到上面目录

servet映射细节:

servet映射细节1:

 技术分享

 

servet映射细节2: 通配符* 代表任意字符串

url-pattern: *.do  以*.字符串的请求都可以访问 注:不要加/

url-pattern: /*  任意字符串都可以访问

url-pattern: /action/* 以/action开头的请求都可以访问

匹配规则:

优先级:从高到低

绝对匹配-->  /开头匹配 --> 扩展名方式匹配

 

如果url-pattern的值是/,表示执行默认映射。所有资源都是servlet

五、Servlet的线程安全

单实例:每次访问多线程

解决线程安全问题的最佳办法,不要写全局变量,而写局部变量。

 

六、Servlet获取配置信息

ServletConfig的使用

作用1:可以获取servlet配置信息

方式1:

 技术分享

 

方式2:

 技术分享

 

方式3:

 技术分享

 

作用2:可以获得ServletContext对象

七、ServletContext(重要)

ServletContext: 代表的是整个应用。一个应用只有一个ServletContext对象。单实例。

作用:

域对象:在一定范围内(当前应用),使多个Servlet共享数据。

常用方法:

void setAttribute(String name,object value);//向ServletContext对象的map中添加数据

Object getAttribute(String name);//从ServletContext对象的map中取数据

void rmoveAttribute(String name);//根据name去移除数据

技术分享

 

获取全局配置信息:

修改web.xml文件:

技术分享

String

getInitParameter(String name) //根据配置文件中的key得到value

技术分享

 

 

获取资源路径:

String  getRealPath(String path);//根据资源名称得到资源的绝对路径.

可以得到当前应用任何位置的任何资源。

 技术分享

文件中的信息为

 技术分享

实现Servlet的转发。

将请求向下传递

 技术分享

RequestDispatcher getRequestDispatcher(String path) ;//参数表示要跳转到哪去

添加一个ServletContext的键值对

   技术分享

 

用户登录案例(三层)

登录页面

 技术分享

 

配置页面

 技术分享

 

登录成功页面

技术分享

 


 

后台

用户页面,对应数据库中的表

 技术分享

 

 

Servlet实现页面

 技术分享

 

 

 技术分享

 

 

用户数据操作层接口

 技术分享

 

实现层

BasDao

 技术分享

用户业务实现层接口

 技术分享

 

 

用户业务层接口

 技术分享

技术分享

 

获取配置连接

 技术分享

 

 

Jdbc.properties文件内容

 技术分享

 

总结Servlet对象

 技术分享

 

Servlet