【Java 基础】--HttpServlet详解
2015-11-22 12:02
330 查看
Servlet简介
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?
Servlet用来解析http协议,并把解析的结果请求数据库验证后,返回信息给前台jsp或者html页面。Servlet就像桥梁,跟控制器作用类似。
下面就是一个Servlet的用户验证的小例子:
1. 服务器拿到客户端传过来的数据,解析http协议,获取html发送过来的用户名和密码
2. 请求数据库验证,用户名和密码
3. 返回结果给前台html页面
Servlet调用过程
咱结合实例来讲解一下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已经给出我们答案了!相关文章推荐
- 解决使用Hyper-v 设置虚拟机网卡出现-从网络文件夹中隐藏
- TCP连接建立过程中为什么需要“三次握手”
- Android实战之你应该使用哪个网络库?
- TCP 的那些事儿
- 《复杂网络理论及应用》
- App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
- 复杂网络入门读物
- Chrome有个HTTP请求报文生成插件叫postman,这插件在http服务接口调试时非常实用(Mac OS安装方法)
- 网络流量监控工具iftop
- delphi 获取北京时间(使用XMLHTTP获取百度的时间,WebBrowser获取www.timedate.cn的时间)
- android 使用Ksoap2工具类实现WebService网络编程
- Java使用HttpClient抓取新浪邮箱
- 使用open vswitch构建虚拟网络
- linux日常管理-抓包工具tcpdump和tshark
- UVA 1590 IP Networks(IP 网络)
- 【coder-pig教程学习笔记3】Http协议
- 计算机网络---基础题目汇总一
- Chrome postman插件用来测试http 接口
- App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Te
- 人人都能用Python写出LSTM-RNN的代码![你的神经网络学习最佳起步]