一、Servlet简介
1.为什么需要servlet技术
-
比如需求,我们希望用户可以发帖,用户可以还可以回复...这样一些用户交互功能,用普通的javaJ技术就完成不了,sun就可以开发了servlet技术供程序员使用。
2. 什么是servlet?
Servlet是Server和applet(小程序)的结合写法,意思是服务器小程序用于扩展web服务软件业务功能的组件,每一种请求都需要对应一个单独的Servlet(对应WebServer的业务)
-
Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。I
-
Servlet是JavaEE规范之一,其实就是一个接口,将来我们需要定义Servlet类实现Servlet接口
-
Servlet想要运行,必须依靠一个Web服务器软件,也称Web容器(Tomcat)
3.Servlet的作用
在Servlet刚刚出现的年代,Servlet的作用十分复杂,即承担了处理数据的作用,又承担了展示页面的作用,导致代码的耦合性过高,不易于维护。随着时间的推移,出现了MVC思想,也就是模型-界面-控制器思想,极大的简便了开发,也明确了Servlet的作用。
4.Servlet生命周期 -
执行Servlet构造方法
-
执行init()初始化方法
第一、二步是在第一次访问的时候创建Servlet程序调用
-
执行service()方法
第三步,每次访问的时候都会调用
-
执行destroy销毁方法
第四步在web工程停止的时候访问。
-
二、手动实现Servlet程序
方式一:继承Servlet接口
第一步:实现javax.servlet.Servlet接口
注意:为什么报错,因为Servlet接口在tomcat的lib目录下的jar包里面,所以得导包。
首先得给本模块添加tomcat依赖
第二步:在web.xml文件中配置Servlet请求映射
常见错误:
url-pattern中配置的路径没有以斜杆打头
-
实现Servlet接口后,会发现里面的抽象方法都需要重写,特别是service(存活方法),这个方法是访问一次服务器就调用一次,而不同的功能需求,就要求方法体内容不一样。在init(ServeltConfig servletConfig)方法中,有个参数是servletConfig,因为init(ServeltConfig servletConfig)方法是服务器调的,所以传参也是服务器传,那么我们在实现类中来一个ServeltConfig servletConfig成员变量,在init(ServeltConfig servletConfig)方法体中就可以这样写this.servletConfig=
servletConfig,给服务器的形参(servletConfig)传递给成员变量(this.servletConfig),这样我们就可以使用servletConfig里面的getInitParameter(String name)方法了
然后在service()方法里就可以打印servlet的配置参数了
-
除了上面的getInitParameterNames()方法,selvlet里还有一个getServeletName和
getServletContext(Servlet上下文对象)方法
-
实现方式二:继承抽象类GenericServlet
这种方式的优点:就只需要重写一种方法service方法
实现方式三:继承HttpServlet类
/*适配器模式*/
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
}
这种实现方式的优点:完全不需要重写Servlet里面的方法,随自己需求选post和get方法。