标签:传输过程 辅助 数据 parameter 全局 交流 任务 etc main
最近通读了Head First Servlets & JSP,尽快他们已经很老了,但是想学习java Web ,最好还是能从Servlet开始。记录下自己的理解。
1、为什么需要Servlet?
我们平时上网的过程是什么样的呢?首先浏览器向服务器发送请求requset(包含所找资源的名字和URL)(get请求或post请求),浏览器收到请求,根据请求的内容给浏览器一个响应(response),无论是request还是response遵循http协议(几乎全部都要遵守),不然浏览器和服务器看不懂对方发送的什么内容,导致无法交流。但这里有一个问题,服务器根据request找资源时,web服务器只能提供动静态页面,如果需要动态页面,就需要一个“辅助”,这个辅助就是Servlet。
2、什么是HTTP协议?
HTTP协议是TCP/IP协议的上层协议。TCP负责确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件到达目的地(传输过程中可能会把文件分解为小块传输)。IP是一个底层协议,负责把数据包沿着路由传送到目的地。HTTP是这个数据包遵循的网络协议,以确保浏览器和服务器能够看懂彼此的内容。
GET请求是向服务器发送一个简单请求(可以发送一点点数据),POST请求可以发送用户数据给服务器。POST更像是GET的进阶版本。
3、Tomcat
由于Servlet没有main方法,需要由容器来控制。Tomcat就是这样一个容器。也就是说浏览器发送到服务器的request不是直接传送到Servlet,而是先到容器,有容器来确定应该把这个request交给谁来处理。
4、部署Servlet
<web-app>
<servlet>
<servlet-name>servletname</servlet-name> servlet的名字,用户看不到这个名字,只在部署文件中使用。
<servlet-class>foo.servlet1<servlet-class> servlet所在的位置。
</servlet>
<servlet>
<servlet-name>servletname</servlet> 与上一个<servlet>相同,把mapping和class联系起来。
<servlet-mapping>public<servlet-mapping> 客户可以看到的名字
</servlet>
</web-app>
5、MVC模式
MVC,模型-视图-控制器。
模型:普通的java类,不要再Servlet中写太多的内容。
视图:JSP(HTML+JAVA)
控制器:Servlet
6、Servlet的一生
1)web容器加载Servlet类,此时他还不是一个servlet
2)web容器初始化Servlet,即运行构造函数。此时创建了一个Servlet对象,但他还没有完全具备Servlet的特性,仍然不是一个Servlet。
3)容器调用init()方法。这时候他是一个完全体的Servlet了,包含ServletConfig方法和Servletcontext方法。此方法只调用一次。
4) 容器调用service()方法,包括doGet(),doPost()等,Servlet的一生主要在这里度过。
5)Destroy()方法,杀死Servlet,此方法只调用一次。
7、ServletConfig和ServletContext
他们的主要任务都是提供初始化参数,Config是为某一个Servlet提供参数,Context是为全局提供参数。
<web-app>
<servlet-name></servlet-name>
<servlet-class></servlet-class>
<init-param>
<param-name>adminemail</param-name>
<param-value>67499999932@qq.com</param-value>
</init-param>
</servlet>
............................
获取参数的方法:getServletConfig().getInitparamter("adminemail");
<web-app>
<context-param>
<param-name>foo</param-name>
<param-value>bar</param-value>
......
</web-app>
getServletContext.getInitparameter("foo");
8、监听者Listener
主要针对初始化参数使用
9、过滤器Filter
请求发送到servlet之前可以用过滤器截获和处理请求,响应发送给浏览器时,也可以用过滤器处理响应。这一切servlet都不知道。。。。
标签:传输过程 辅助 数据 parameter 全局 交流 任务 etc main
原文地址:https://www.cnblogs.com/caozd/p/12051619.html