通过学习老杜新版的javaweb得到一些收获,来分享给大家
首先我想说一下servlet的“进化流程”
最开始的时候是直接实现Servlet接口,但是由于这里面有5个必须要重写的方法,而有的方法又不需要我们来操作,或者说不想我们来操作,比如init(ServletConfig config)方法,当然我们想要定义一些东西可以使用init()无参方法,我就是举个例子哈
接着就出现了GenericServlet(一个Servlet的实现类),我们可以直接继承这个实现类,这就解决了我们自己创建类直接实现Servlet接口需要从写很多方法的问题
由于我们在网页上需要遵循HTTP协议,所以出现了HttpServlet,这个要比GenericServlet更适合网页开发,当然这个是继承GenericServlet的
所以我们自建类直接继承HttpServlet就好啦
接着来说一下ServletConfig接口
这个接口的实现类对象小猫咪会直接给我们造出来的,一个Servlet对应一个ServletConfig,他是为了配置servlet里面的一些信息的。
通过getServletConfig()可以获取ServletConfig对象
在<servlet>中添加下面代码段来配置Servlet
<init-param>
<param-name>配置名</parame-name>
<param-value>配置值</parame-value>
<init-param>
配置之后有两个重要的方法
getInitParameterNames()获取所有初始化的name,返回是一个Enumeration<String>
getInitParameter()通过name获取values
接着说一下ServletContext接口
这个对象怎么创建的?谁创建的?怎么获取?
这个对象是小猫咪创建的,需要通过ServletConfig中的getServletContext()方法来获取
2.他与servlet的对象关系是:一个ServletContext对应多个Servlet
3.通过在xml中配置一下代码可以配置ServletContext
<context-param>
<param-name>配置名</parame-name>
<param-value>配置值</parame-value>
</context-param>
这里也有两个重要的方法
getContextPath()获取应用的根路径
getRealPath()获取文件的绝对路径(从本地盘符)
接着说一下GenericServlet适配器
之前说过这个是实现了servlet接口了的,并且从写了其中的大部分方法,留了一个service()给我们从写,这个也是我们使用最频繁的方法。
说一下之前提过的init有参和无参方法吧,通过一个代码写一下大致流程
final void init(ServletConfig congig){
this();
}
通过上面的演示大家也应该可以看懂了,这个是通过有参的init(ServletConfig congig)来调用无参的init,并且有参的我们是不可以直接操作的,但是我们可以通过从写无参的inti()来间接操作。
最后在夸一下杜老师讲的真的太好了,循序渐进!