MVC 模式及对象持久化
- 开发框架简介
- 对象关系映射ORM 技术
- Struts2 框架的使用
- Struts2 框架的下载及部署
- Struts2 配置
开发框架简介
在了解MVC 之前,首先来了解框架的概念。要理解框架的含义得从开发的实际需求说起。在软件开发过程中总有很多基础的功能是相同或者相近的,所以在实际开发中再花费时间重复基础工作显然是人们不愿意做的事情,所以开发者们将一些可重用的、易扩展的,井且经过良好测试的组件独立出来抽象成一个框架,当开发新的项目时便可以直接基于框架开发,可以有更多的精力放在分析和构建业务逻辑上,从而避免繁琐的底层事务和代码工程,这就是框架的由来。
MVC 的层结构
MVC 是Mod e l View Controller 的缩写,是一种开发模式,因为其合理的设计,诞生了很多以MVC 开发模式为主导的框架,称为MVC 框架,如图所示。
(1) Model (模型):表示程序的核心,处理一些底层的业务逻辑。
(2) View (视图):显示页面数据。
(3) Controller (控制器):控制输入/ 输出,协调各个层的关系。
对象关系映射ORM 技术
虽然关系型数据库已经大大地方便了程序员进行程序开发,但在一些大型的项目中数据关系比较复杂,业务逻辑要求可能更多,此时再从底层进行数据库的操作显得比较费事,于是人们提出了ORMCObject Relational Mapping )技术,它是一种将关系型数据映射到类的技术。使用ORM 技术进行开发,程序员不需要去处理繁琐的底层数据,而是通过映射类进行数据操作,更加符合软件工程面向对象的思想。使用O RM 技术,开发者可以访问到底层的数据,但完全不用去关心底层数据的结构,这个过程也可以称为持久化的过程。
SSH 集成开发框架
SSH 为Struts+Spring+ Hibernate 的一个集成框架,是目前较流行的一种Web 应用
程序开源框架。Struts2 是一个Java 的MVCWeb 开发框架, Struts2 以Web Work 为核心,
采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与
ServletAPI 完全脱离开。Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而
创建的。Hibernate 是一个开放源代码的对象关系映射框架,它对JDBC 进行了轻量级的对
象封装,使得Java 程序员可以随心所欲地使用对象编程思维来操作数据库。Hibernate 可
以应用在任何使用JDBC 的场合,既可以在Java 的客户端使用,也可以在Servlet /JSP 的
Web 应用中使用。
Struts2 框架的使用
Struts2 框架的下载及部署
在使用Struts2 前需要去官网下载最新的框架包,地址为http: // struts. apache. org/
release/ 2. 0. x/ 。可以选择下载完整包,里面除了包含必需的文件外还包含了文档和案例,也
可以选择只下载运行包。这里选择下载完整的压缩包,解压后会看到目录结构
需要用到的是lib 文件夹下的jar 文件,现在复制这些文件到之前新建的工程中的WebContent/ WEB-INF / lib 文件夹下,以便在工程中使用这些文件。lib 文件夹中通常会放置工程需要用到的jar 文件,引用相关的Java 类时会自动加载该文件夹下的资源,可以理解为一个资源库,需要什么取什么。在Eclipse 中刷新之前的工程可以看到在WebAppLibraries 节点下复制过来的jar 文件,说明已经成功将Struts2 的文件部署到了工程中,如果不能看到文件请重新检查复制的路径是否正确。Struts2 框架的部署本质上就是将文件添加到我们的工程中以便调用而已。
Struts2 配置
在部署好了相关的Struts2 文件后只是做好了预备工作,只有框架是不能够运行出什
么效果的,现在需要进一步对框架进行配置才能使其工作。
从前面讲述JSP 显示简单页面的内容已经知道,我们不需要任何配置文件,只需要在
应用的根目录下建立新的JSP 文件,然后通过网址/文件名就可以访问动态页面了,这是最
基本的Web 开发形式,因为和本地浏览文档的逻辑几乎一样。但复杂的Web 程序通常不
会以文件为地址单位进行开发,这不利于项目的开发和维护,并且会暴露工程的目录结构。
通常会统一使用一个路口来管理应用的访问,这好比进入一幢楼的某个房间必须先经过大门
一样,而不是直接就能进入某个房间。在Java Web 开发中,扮演人口角色的通常是web. xml
文件,在里面可以进行工程的各种配置工作,所以想要让Struts2 的框架正常工作起来,首
先要配置web. xml 这张地图,只有通过web. xml 程序才能找到Struts2 的人口。在WEB- INF 文件夹新建一个web. xml 文件。编辑该文件如下:
〈?xml version =” 1. 。” encoding =”UTF- 8 ”?>
<web- app id= "WebApp_9 ” version =气4 ” xrnlns =” http://java. sun.com/xrnl/ns/j2ee” xrnlns:xsi
=” http://w 阳. w3. org/2001/XMLSchema inst ” xsi: schemaLocation =” http://java.sun.com/
xml/ns/j2ee http: //java. sun. com/xml/ns/j2ee/web - app_2_ 4 . xsd">
< display - name> Struts Blank</ display - name>
<filter>
<filter - name> struts2 </filter - name>
<filter - class>
erg . apache. struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter - class>
</filter>
< filter - mapping>
<filter - name> struts2 </filter- name>
< url - pattern >/铃</ url - pattern>
</filter - mapping>
<welcome - file - list>
<welcome - file> index. html </welcome - file>
</welcor盹- file - list>
</web- app>
这里要提醒的是,不同版本的Struts2 可能文件的配置会略有不同,所以在下载完新版
本的Struts2 后使用本书或者其他资料中的文件未必正确,最好的方法是参考查看下载文
件中的webapp 范例中的配置文件。
可以看到,该文件中添加了一个过滤器,将过滤所有访问请求, < filter- name > struts2
</ filter-name >声明了该过滤器的名字为struts2 ,而< url- pattern >/*</ url- pattern >
指明了过滤的路径为工程下的所有访问路径,这里用到的正则表达,/表示为根目录,而铃用
于匹配所有字符。
在filter 标签中声明了该过滤器用到的类为org. apache. struts2 . dispatcher. ng. filter .
StrutsPrepareAndExecuteFilter ,这个类就在之前添加到lib 文件夹中的jar 文件中。现在
来总结web. xml 将如何工作,当用户访问我们的应用时会先经过预定好的Struts2 过滤器,
org. apache. struts2. dispatcher. ng. filter . StrutsPrepareAndExecuteFilter 过滤器类会将所
有的访问请求全部转交给Struts2 处理。
同样, Struts2 本身也有自己的xml 配置文件,担当着类似web. xml 的作用,在src 文件
夹下再新建一个名为struts . xml 的文件。编辑该文件内容如下:
〈?xml version =” 1. 。” encoding =” UTF- 8 ”?>
<! DOCTYPE struts PUBLIC
”- //Apache Software Foundation//DTD Struts Configuration 3. 3//EN”
” http: I I struts. apache . org/ dtd s/ struts - 3. 3 . dtd ”>
<struts>
< constant name =” struts.enable.DynamicMeth odinvocation” value =”false" />
< constant name =” struts.devMode” value =” true" />
< package name =”default” namespace =”/” extends =” struts - default ”>
</package>
</struts>
在该文件中添加了一个package ,命名为helloworld ,在struts. xml 文件中, package 起
着分类管理Actio n 的作用,对于大型的项目,将所有的action 放置在一起显然会让人眼花
缭乱,不利于开发和维护,有了Action 便可以对它们进行分类管理。