包括:
一.Servlet体系
二.ServletContext接口和ServletConfig接口
一.Servlet体系
如下图所示:
即可用如下代码获得初始化参数:
总共3个类:Servlet接口,GenericServlet抽象类,HttpServlet抽象类。
1.1 Servlet 接口
对于Servlet接口,有5个方法,如下:
解释:
- init():初始化方法
- getServletConfig():可以得到一个ServletConfig对象,利用这个参数可以得到初始化参数
- service():servlet对于请求的一个响应
- getServletInfo():返回servlet的相关信息
- destroy():销毁Servlet。
1.2 GenericServlet 抽象类
它是一个抽象类。实现了Servlet接口方法的init()方法,但是最重要的service()方法并没有实现
。如下代码:
1.3 HttpServlet 抽象类
它是一个抽象类。实现了Servlet接口的service()方法。在service()方法中,根据一定的条件分发到doGet()或者doPost()方法中。
主要代码如下:
一般来说,我们自定义自己的servlet就继承HttpServlet,再重写doGet(),doPost()方法即可。
二.ServletContext接口和ServletConfig接口
2.1 ServletContext接口
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
ServletContext作用:
1. 用于Servlet之间通讯
由于
一个WEB应用中的所有Servlet共享同一个ServletContext对象
,因此
Servlet对象之间可以通过ServletContext
对象来实现通讯。如代码:
context.setAttribute("name", "haha"); ~~~~~~~~~~String name = context.getAttribute("name");
2. 用于获取WEB应用的初始化参数
比如在web.xml中,有如下初始化:
即可用如下代码获得初始化参数:
3.用于Servlet转发
Ps:转发有3种方式:
- forward方法:request.getRequestDispatcher("/url").forward(request, response),地址栏不会改变,同样是在服务器端完成,但仅输出被转发的URL中的内
- sendRedirect方法:只是客户重新发起一个请求,第二个请求指向其参数url。一般称做重定向,客户端的地址栏将改变为url值,是由客户端发起的第二次请求。例如:response.sendRedirect(request.getContextPath()+"/login.html");
- iinclude方法:使原先的Servlet和转发到的Servlet都可以输出响应信息,即原先的Servlet还可以继续输出响应信息。也就是说可以保留原先的信息。
2.2 ServletConfig接口
ServletConfig
是一个接口。
在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。(配置在某个servlet标签或者整个web-app下)
当servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servlet的初始化参数信息。
参考:
1.ServletConfig与ServletContext对象详解:http://blog.sina.com.cn/s/blog_696024a90100o6hq.html
2. ServletContext总结:http://blog.youkuaiyun.com/qiqiongran_luck/article/details/6889037
3. Servlet的请求转发与重定向:http://panlianghui-126-com.iteye.com/blog/730262