Servlet的框架由两个java包组成:javax.servlet和javax.servlet.http在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类,在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类。
Servlet的框架核心是javax.servlet.Servlet接口,所有的Servlet必须实现这一接口。在Servlet接口中定义了5个方法,其中3个方法代表了Servlet的声明周期。
Init方法--负责初始化servlet对象。
Service方法--负责响应客户的请求。
Destroy方法--当Servlet对象退出声明周期时,负责释放占有的资源。
Servlet用来解析http协议,并把解析的结果请求数据库验证后,返回信息给前台jsp或者html页面。
Servlet就像桥梁,跟控制器作用类似。
下面就是一个Servlet的用户验证的小例子:
1. 服务器拿到客户端传过来的数据,解析http协议,获取html发送过来的用户名和密码
2. 请求数据库验证,用户名和密码
3. 返回结果给前台html页面
咱结合实例来讲解一下Servlet调用流程:
1. web客户端发送http协议,request(用户名,密码)请求到tomcat。
2. tomcat有服务在这等着,首先访问的是web.xml
<servlet-mapping>结点,提供了两个标签信息<servlet-name>和<url-pattern>。
servlet-name:自己定义的servlet名称
url-pattern: servlet的URL路径,相对于web应用程序上下文根路径。
(根路径就是
test_servlet
WEB-INF
classes(存放编译文件)
lib(存放第三方的jar包,数据驱动等等)
web.xml (存放servlet配置信息)
)
通过url-pattern提供的路径可以找到Servlet,每个<url-pattern>对应一个<servlet-name>,根据<servlet-name>可以找到该路径对应的类<servlet-class>.
3. 找到servlet-class, tomcat就可以拿到servlet对它进行实例化,实例化成普通的java对象。
servlet和普通的类的区别是声明周期由tomcat容器管理。
4. 首先调用Servlet里面的service方法,判断请求模式:doGet还是doPost
如果选择doGet方法
HttpServletRequest包装了客户端的相关信息,包括了表单信息。
如果调用完成之后,验证完成,调用数据库就返回。告诉客户端这次验证是对还是错。
输出html给浏览器。HttpServletResponse,这个对象可以做响应的,通过这个对象可以把数据写给浏览器。getWriter拿到字符流,println打印到浏览器上。
现在才知道,之前的学.net MVC中的Controller里面拼接前台html字符串是怎么来的,Java里面的Servlet已经给出我们答案了!