Servlet介绍
Servlet是运行在服务器上的java小程序,简单说,它就是
一个java类.我们要使用Servlet需要导入javax.servlet
的API;
Servlet详解
Servlet是一个资源,是一个java类,是运算在服务器上的;
Sun对于servlet定义,它就是一个javax.servlet.Servlet接口;
Servlet接口下有一个实现类叫GenericServlet,GenericServlet有
一个子类HttpServlet;
在servlet接口中定义了一个方法service,它的主要作用是处理来自浏览器的
请求操作;但是我们创建Servlet时,是继承了HttpServlet,重写了一个doGet
方法;
在service方法的重载的方法中,对请求方式进行判断,如果是get就会调用doGet方法,
如果是post就会调用doPost方法;
总结:在Servlet接口中定义的service方法是用于处理请求的,而在其实现类HttpServlet中又进行细分,针对于Post会 执行doPost方法,如果是get请求,执行的是doGet方法;
通过上述分析,我们知道要创建一个Servlet,其实可以有三种方式:
1,implements Servlet接口
2,extends GenericServlet类
3,extends HttpServlet类
在开发中,一般应用比较多的是使用ExtendsHttpServlet,优点是它是与http协议相关的,简单说,它封装了http协议相 关的操作;
Servlet的生命周期
在javax.servlet.Servlet接口中定义了三个方法,initservicedestroy,它们就是servlet的 的生命周期的方法;
init(ServletConfig config)
service(ServletRequest req, ServletResponse res)
destroy()
1,第一次访问servlet, servlet会被创建,并将servlet对象常驻内存,调用init方法进行初 始化操作,init方法执行一 次;
2,开启一个线程,调用service方法,用来处理来自浏览器的请求,以后都是开启一个线 程来处理浏览器端的请求;
3,当tomcat服务器正常关闭时,会调用destroy方法将servlet销毁;
注意:servlet是线程不安全的,也就是说,不建议在servlet中创建成员变量;
Servlet配置
servlet声明:
<servlet>
<servlet-name>servlet名称<servlet-name>
<servlet-class>servlet类全名</servlet-class>
</servlet>
servlet映射:
<servlet-mapping>
<servlet-name>servlet名称</servlet-name>
<url-pattern>资源路径</url-pattern>
</servlet-mapping>
url-pattern它就是用于确定访问servlet的一个路径;
一个servlet可以有多个<servlet-mapping>与其对应;
url的书写规范:
1,完全匹配 要求以"/"开始
2,目录匹配 要求以"/"开始,以*结束
3,扩展名匹配 要求不能以"/"开始,以*.xxx结束;
注意:精确匹配的优先级最高
缺省servlet
当我们创建一个servlet时,如果它的url-pattern的配置为"/",这时
这个servlet就是一个缺省的servlet;
配置缺省的servlet,它的作用就是处理其他的servlet处理不了的请求;
我们在访问一个服务器的html页面时,其实就是通过缺省的servlet帮助我们将
其内容响应到浏览器端;
load-on-startup配置
如果我们配置了它,可以让servlet跟随服务器的启动而启动;
对于load-on-startup它的可以配置的值有10个,1代表优先级最高,
数值越大,优先级越低;
开发中,我们可以让servlet跟随服务器的启动而启动,在没有访问前
进行预加载操作;