JAVA WEB开发基本原理
Java 的特点
1、面向对象
2、Java 八大基本数据类型
3、Java 面象对象特征
Apache的Struts实际上是JAVA中的一种MVC实现框架,该框架伴随有一个巨大的JSP 标签库,可以提供你需要的各种类型的功能。Struts框架基于模型-视图-控制器(MVC)设计范例来开发Web应用软件,它使用并且扩展了Java Servlet API,最初由Craig McClanahan创建。在2000年5月,它被捐赠到Apache Foundation。经过多年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些设计更精密,扩展性稳妥的选择。Struts框架展示了一个强有力的定制标签库,平铺显示,表单检验和I18N(国际化)。另外,Struts支持许多描述层,包括JSP,XML/XSLT,JavaServerFaces(JSF)和Velocity;还支持一些模型层,包括JavaBeans和EJB。Struts有一组相互协作的类(组件)、Serlvet以及JSP tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。Struts有其自己的控制器(Controller),同时整合了其他的
一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件相互结合。譬如我们在基于Web的项目中使用MVC和Apache Struts框架创建项目或者核心程序,用Servlet实现服务端处理和控制(controller),用JavaBean做模型(Model)层,JSP作为表示(presentation)层;控制器(controller)将依赖反射API(Reflection API)来动态调用行为方法(action methods),并重定向到适当的视图(View),调整表示逻辑和模型(Model)之间的数据流。前提是我们已经配置好了支持J2EE的应用服务器(application server)。
项目
这是一个简单的项目,所有的数据信息都存储到一个HashMap对象中。企业级的应用程序在后台通常有个数据库,在视图中取出动态数据,即所谓的三层架构(客户应用程序,服务器处理,企业数据服务)所组成。该项目包含一些JSP视图(JSP Views),可以在任何一个浏览器中可视,一些助手bean,行为类(action classes),一个Servlet controller类。目的主要是基于用户的邮政编码或者城市名来显示天气信息,其架构是要使任何类型的大型在线应用程序更容易和更方便修改。
Servlet控制器
任何MVC设计的主要控制器都是负责协调模型和视图层之间的数据流,响应用户的请求和用行为管理模型数据。如果控制器编写完好,就会引导请求数据,针对各种数量和类型的视图调用行为。因此,我们也可以很容易将同一个控制器应用到任何项目中,然后添加所需视图。在Struts框架中,Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。Struts主要是通过四个核心组件来控制、处理客户请求的。这几个组件就是:ActionServlet、Action Classes、Action Mapping、ActionFrom Bean。现在,我们把这个控制器Servlet叫“MainServlet”并在XML 配置、描叙文件里添加了它的定义。该描叙文件在我们应用服务器一个称为WeatherAppWeb 的新的Web应用(webapp)下。
……
Servlet有标准的doGet和doPost方法。但是,它也有HashMap,用来动态存储行为对象,该对象是从JSP视图传递的键值所创建的。我们没有用一个属性文件来匹配执行行为的键值或者用来显示的JSP视图,而是将行为键作为隐藏变量(hidden varivables)放到JSP中,从而指出控制器接下来会做什么。
当JSP提交自己的数据到控制器时,主要的“魔术”发生在doPost方法中。我们首先使用反射API来实例化Action类并检查它是否已存在。然后,通过一个参数键值调用一个方法。Action类被控制器Controller使用来执行各种类型的行为。所有的行为类都实现一个空的ActionIn terface,以便使用反射(Reflection)并通过JSP表单传回的参数键值来实例化它们。Action调用返回后, 我们重定位到另一个视图(这个取决于finally从句中传递过来的第二个键参数)。
JSP视图
该视图是一个用户可以在任何Web浏览器中看到的简单HTML页面。主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个Taglib。它们是由JSP应用服务器生成的。Post视图有一个HTML表单,其中有个提交行为指向控制器Servlet。