web的开发演变过渡
1.0 简单明块的单机构建的早期时代
2.0 后端开发为主的MVC时代-以struts1开发为例
3.0 Ajax
4.0 Node全栈时代
1.0简单明块的单机构建的早期时代
可称之为 Web 1.0 时代,非常适合创业型小项目,不分前后端,经常 3-5 人搞定所有开发。页面由 JSP、PHP 等工程师在服务端生成,浏览器负责展现。基本上是服务端给什么浏览器就展现什么,展现的控制在 Web Server 层。
这种模式的好处是:简单明快,使用一个web容器,例如Tomcat,然后使用JSP/servlet技术,再搭建一个简单的数据库,就可以进行开发。
*重点内容## jsp/servlet工作原理*
当客户端浏览器向服务器请求一个 Servlet 时,服务器收到该请求后,首先到容器中检索与请求匹配的 Servlet 实例是否已经存在。
–若不存在,则 Servlet 容器负责加载并实例化出该类 Servlet的一个实例对象,接着容器框架负责调用该实例的 init() 方法来对实例做一些初始化工作,然后Servlet 容器运行该实例的 service() 方法。
–若 Servlet 实例已经存在,则容器框架直接调用该实例的 service() 方法。
service() 方法在运行时,自动派遣运行与用户请求相对应的 doXX() 方法来响应用户发起的请求。
通常,每个 Servlet 类在容器中只存在一个实例,每当请求到来时,则分配一条线程来处理该请求。
开发步骤总结:
1.在eclipse中新建一个Dynamic web project
2.新建完成后会产生几个重要的目录:
3.创建和编写servlet
这里选上需要重写的方法(doGet,doPost)
如果HttpServlet报错,从tomcat/lib下找到servlet-api.jar 导入就行了。
4.编写web.xml
由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。
元素用于注册Servlet,它包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:和,分别用于指定Servlet的注册名称和Servlet的对外访问路径
5.编写jsp文件
2.后端开发为主的MVC时代
M:模型(model)
V:视图(view)
C:控制器(controller)
MVC原理示意图:
1.当浏览器产生请求,浏览器将这个请求发给tomcat,tomcat接到请求后,参考web.xml,并在其中找到配置信息
2.过滤器(FilterDispatcher),FilterDispatcher是控制器的核心,就是mvc中c控制层的核心,FilterDispatcher进行初始化并启用核心 doFilter。
3.FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action, 如果 ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给 ActionProxy 4.ActionProxy通过struts.xml询问框架的配置文件,找到需要调用的Action类和方法来处理这请求;
1:客户端在浏览器中输入一个url地址;
2:这个url请求通过http协议发送给tomcat;
3:tomcat根据url找到对应项目里面的web.xml文件;
4:在web.xml里面会发现有struts2的配置;
5:然后会找到struts2对应的struts.xml配置文件;
6:根据url解析struts.xml配置文件就会找到对应的class;
7:调用完class返回一个结果result,根据struts.xml返回到对应的jsp;
struts1开发步骤:
1.首先将下载的struts1jar包全部导入项目
2.修改工程中web.xml
添加<servlet>
<servlet>元素来声明ActionServlet
<servlet-name>元素:用来定义Servlet的名称
<servlet-class>元素:用来指定Servlet的完整类名
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
还要配置<servlet-mapping>元素,它用来指定ActionServlet可以处理哪些URL
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
(2)声明ActionServlet的初始化参数
初始化参数用来对Servlet的运行时环境进行初始配置。<servlet>的<init-param>子元素用于配置Servlet初始化参数。
config :以相对路径的方式指明Struts应用程序的配置文件位置,如不设置,则默认值为/WEB-INF/struts-config.xml
debug : 设置Servlet的debug级别,控制日志记录的详细程度。默认为0,记录相对最少的日志信息。
detail : 设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的解析日志。默认为0,记录相对最少的日志信息。
<load-on-startup>?</load-on-startup>中?号的值是此ActionServlet在服务器开启时加载的次序,数值越低,越先加载。
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>//控制日志记录详细程度
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>//默认不写,设置
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
4.写Action继承自struts的Action
3.运用Node.js的全栈时代
了解不深,推荐几篇文章给大家:
1.http://cnodejs.org/topic/512ec5bedf9e9fcc586af964 --Node是什么
2.http://blog.csdn.net/wangji5850/article/details/51131688 -- 全栈工程师的Node.js之路
参考文章:
1.http://www.open-open.com/lib/view/open1398300027390.html
2.http://developer.51cto.com/art/201308/406445.htm
3.https://www.douban.com/note/570569398/
4.http://www.cnblogs.com/xdp-gacl/p/3760336.html
5.http://www.blogjava.net/fancydeepin/archive/2013/09/30/fan_servlet.html