1.1Web技术的发展
Web技术在20世纪90年代初就有一定范围基础;
不管是何种类型程序,如果没有和用户交互的功能,或者和用户交互的功能很少,是绝对不可能流行的;
CGI程序的诞生开启了动态Web应用的时代;
1998年Java家族迎来了第一个支持动态Web技术的成员——servlet;
servlet的主要优势:
>因为Java是跨平台的,servlet也就成了跨平台的技术。如果在Java支持的操作系统平台上的Web服务器包含Servlet引擎,Servlet程序就可以在该操作系统平台上运行;
>由于Java可以通过JDBC访问数据库,而且支持JDBC的数据库非常多,因此Servlet就可以利用Java的这一特性访问更多的数据库;
>除此之外,Java还具有更高级的特性,如多线程、网络等技术。servlet自然也就可以利用这些技术增强Web程序的功能了。
实际上,servlet程序的运行原理就相当于远程调用。在服务端的Servlet程序中(一个Servlet程序就是HttpServlet类的子类)有一个service方法。当客户端提交请求时,Web服务器接收到这个请求,就将该请求交给Servlet引擎处理。当Servlet引擎找到该请求指定的Servlet时,就会调用Servlet类中的service方法,并且将请求信息和响应信息传入service方法。
所有的响应和请求的服务端逻辑都要写在service方法中。在service方法中,用户可以在处理完逻辑时给客户端返回相应的信息,当然也可以什么都不回。从这一点卡可以看出,在客户端访问Servlet,就相当于发送一个远程调用服务端组建的方法的请求。
Web服务器
发送请求 V
>>>>>>>>>>>>>>>>>>>>>> V 提交请求
浏览器 Servlet引擎
<<<<<<<<<<<<<<<<<<<<<< V
响应信息(客户端代码) V 调用servlet方法
Servlet1
Servlet2
。。。。
浏览器首先向Web服务器发送请求,然后Web服务器接到请求后,将该请求提交给了Servlet引擎并且由Servlet引擎负责调用Servlet对象实例的service方法,最后返回相应的客户端代码(HTML/JAVAScript等)。
在1999年SUN公司发布了JSP规范。
Web服务器
发送请求 V
>>>>>>>>>>>>>>>>>>>>>> V
浏览器 第一次访问 >>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<< V v
响应信息(客户端代码) V 是 v
JSP引擎 v
JSP1 JSP2 v 否
V v
V 编译JSP v
Servlet引擎 v
v
Servlet1 Servlet2
当浏览器请求Web服务器中的JSP页面时,Web服务会判断该JSP页面是否第一次被访问,如果是第一次请求,则将该请求交给JSP引擎,并由JSP引擎将JSP页面翻译成Servlet,再交由Servlet引擎来运行由JSP页面生成的Servlet程序。
如果该页面不是第一次被访问,则Web服务器会直接将请求交给Servlet引擎来运行由JSP生成的Servlet程序
了解JavaWeb程序的配置文件
web.xml文件中配置的主要内容:(搜索?的地方知识点)
ServletContext初始化参数;?
Session配置;?
Servlet/JSP定义;
Servlet/JSP映射;?
标签库引用;?
MIME类型映射;?
欢迎页;
错误页;
安全信息;
1.3了解MVC模式与MVC框架(搜索Struts框架的工作流程图)
MVC模式的主要优势:
多个视图可以对应一个模型,这样有利于代码的重用。如果模型发生变化,也容易升级和维护;
由于模型和视图由Controller进行控制,并且模型和视图的分离的。因此,可以通过模型为视图提供不同的数据,如各类数据库,XML,和Excel等。
由于控制器负责访问视图和模型,因此可以在控制器中加入权限验证来限制用户对敏感资源的访问。
在MVC模式中,3个层次是分离的,降低了各个层次之间的耦合性,这样有利于对系统中的各层进行扩展。
了解常用的MVC框架
1、Struts 1.x
Struts 1.x是apache的一个开源项目,也是最早实现MVC模式的框架。Struts 1.x中相对于MVC模式有如下三层:
视图层(View):该层主要包括JSP、HTML等页面及JavaScript等客户端脚本。该层通过ActionForm和服务端进行交互;
控制层(Controller):Strut 1.x的Action属于控制层。通过Action,可以 控制视图和模型;
模型层(Model):该层主要是一系列处理业务逻辑和操作数据的Java类。
2、Struts 2.x
Struts 2.x虽然是从版本号上看是Struts 1.x的升级版本,但实际上是从Webwork框架升级来的。也与Struts 1.x大不相同。Struts 2.x的Action类可以使POJO(?),而Struts 1.x的Action类和ActionForm类需要从特定的类继承。而且Struts 2.x的Action对视图的控制也更灵活。
3、SpringMVC
SpringMVC是Spring框架自带的一个MVC框架。该框架为视图、模型和控制器之间提供了一个非常清晰的划分,各部分耦合度极低。SpringMVC框架完全基于接口编程,真正实现了与视图无关。在SpringMVC框架中并不要求视图一定要使用JSP。在该框架中视图可以使用Velocity(?)、XSLT或其他的视图技术,甚至可以自定义的视图技术,当然,这需要实现View接口。
Spring的控制器由Ioc容器管理,因此,对控制器进行维护更容易。SpringMVC框架通过DispatcherServlet进行控制。DispatcherServlet负责拦截所有的用户请求分给不同的控制器。
SpringMVC虽然很灵活,但由于SpringMVC框架和ServletAPT耦合,因此,SpringMVC框架的运行不能脱离Servlet容器,这也限制了SpringMVC框架的扩展性,而且SpringMVC框架的角色划分的太细,使用太频繁,从而降低了开发效率。
Web技术在20世纪90年代初就有一定范围基础;
不管是何种类型程序,如果没有和用户交互的功能,或者和用户交互的功能很少,是绝对不可能流行的;
CGI程序的诞生开启了动态Web应用的时代;
1998年Java家族迎来了第一个支持动态Web技术的成员——servlet;
servlet的主要优势:
>因为Java是跨平台的,servlet也就成了跨平台的技术。如果在Java支持的操作系统平台上的Web服务器包含Servlet引擎,Servlet程序就可以在该操作系统平台上运行;
>由于Java可以通过JDBC访问数据库,而且支持JDBC的数据库非常多,因此Servlet就可以利用Java的这一特性访问更多的数据库;
>除此之外,Java还具有更高级的特性,如多线程、网络等技术。servlet自然也就可以利用这些技术增强Web程序的功能了。
实际上,servlet程序的运行原理就相当于远程调用。在服务端的Servlet程序中(一个Servlet程序就是HttpServlet类的子类)有一个service方法。当客户端提交请求时,Web服务器接收到这个请求,就将该请求交给Servlet引擎处理。当Servlet引擎找到该请求指定的Servlet时,就会调用Servlet类中的service方法,并且将请求信息和响应信息传入service方法。
所有的响应和请求的服务端逻辑都要写在service方法中。在service方法中,用户可以在处理完逻辑时给客户端返回相应的信息,当然也可以什么都不回。从这一点卡可以看出,在客户端访问Servlet,就相当于发送一个远程调用服务端组建的方法的请求。
Web服务器
发送请求 V
>>>>>>>>>>>>>>>>>>>>>> V 提交请求
浏览器 Servlet引擎
<<<<<<<<<<<<<<<<<<<<<< V
响应信息(客户端代码) V 调用servlet方法
Servlet1
Servlet2
。。。。
浏览器首先向Web服务器发送请求,然后Web服务器接到请求后,将该请求提交给了Servlet引擎并且由Servlet引擎负责调用Servlet对象实例的service方法,最后返回相应的客户端代码(HTML/JAVAScript等)。
在1999年SUN公司发布了JSP规范。
Web服务器
发送请求 V
>>>>>>>>>>>>>>>>>>>>>> V
浏览器 第一次访问 >>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<< V v
响应信息(客户端代码) V 是 v
JSP引擎 v
JSP1 JSP2 v 否
V v
V 编译JSP v
Servlet引擎 v
v
Servlet1 Servlet2
当浏览器请求Web服务器中的JSP页面时,Web服务会判断该JSP页面是否第一次被访问,如果是第一次请求,则将该请求交给JSP引擎,并由JSP引擎将JSP页面翻译成Servlet,再交由Servlet引擎来运行由JSP页面生成的Servlet程序。
如果该页面不是第一次被访问,则Web服务器会直接将请求交给Servlet引擎来运行由JSP生成的Servlet程序
了解JavaWeb程序的配置文件
web.xml文件中配置的主要内容:(搜索?的地方知识点)
ServletContext初始化参数;?
Session配置;?
Servlet/JSP定义;
Servlet/JSP映射;?
标签库引用;?
MIME类型映射;?
欢迎页;
错误页;
安全信息;
1.3了解MVC模式与MVC框架(搜索Struts框架的工作流程图)
MVC模式的主要优势:
多个视图可以对应一个模型,这样有利于代码的重用。如果模型发生变化,也容易升级和维护;
由于模型和视图由Controller进行控制,并且模型和视图的分离的。因此,可以通过模型为视图提供不同的数据,如各类数据库,XML,和Excel等。
由于控制器负责访问视图和模型,因此可以在控制器中加入权限验证来限制用户对敏感资源的访问。
在MVC模式中,3个层次是分离的,降低了各个层次之间的耦合性,这样有利于对系统中的各层进行扩展。
了解常用的MVC框架
1、Struts 1.x
Struts 1.x是apache的一个开源项目,也是最早实现MVC模式的框架。Struts 1.x中相对于MVC模式有如下三层:
视图层(View):该层主要包括JSP、HTML等页面及JavaScript等客户端脚本。该层通过ActionForm和服务端进行交互;
控制层(Controller):Strut 1.x的Action属于控制层。通过Action,可以 控制视图和模型;
模型层(Model):该层主要是一系列处理业务逻辑和操作数据的Java类。
2、Struts 2.x
Struts 2.x虽然是从版本号上看是Struts 1.x的升级版本,但实际上是从Webwork框架升级来的。也与Struts 1.x大不相同。Struts 2.x的Action类可以使POJO(?),而Struts 1.x的Action类和ActionForm类需要从特定的类继承。而且Struts 2.x的Action对视图的控制也更灵活。
3、SpringMVC
SpringMVC是Spring框架自带的一个MVC框架。该框架为视图、模型和控制器之间提供了一个非常清晰的划分,各部分耦合度极低。SpringMVC框架完全基于接口编程,真正实现了与视图无关。在SpringMVC框架中并不要求视图一定要使用JSP。在该框架中视图可以使用Velocity(?)、XSLT或其他的视图技术,甚至可以自定义的视图技术,当然,这需要实现View接口。
Spring的控制器由Ioc容器管理,因此,对控制器进行维护更容易。SpringMVC框架通过DispatcherServlet进行控制。DispatcherServlet负责拦截所有的用户请求分给不同的控制器。
SpringMVC虽然很灵活,但由于SpringMVC框架和ServletAPT耦合,因此,SpringMVC框架的运行不能脱离Servlet容器,这也限制了SpringMVC框架的扩展性,而且SpringMVC框架的角色划分的太细,使用太频繁,从而降低了开发效率。