1. JavaWeb核心框架的目录
第1部分网页开发技术
绪论JavaWeb分层设计与框架选型1
1.JavaWeb分层设计1
1.基本概念2.如何设计分层
3.JavaWeb分层设计:表现层、业务层、持久层
4.分层设计的优点
2.JavaWeb框架选型5
1.持久层框架:Hibernate、iBATIS
2.表现层框架:Struts1、Struts2
3.业务层框架:Spring
3.本书讲解思路8
1.持久层2.表现层+持久层
3.业务层4.表现层+业务层+持久层
4.继续下一课:准备篇10
第1部分准备篇
第1课构建Eclipse集成开发环境
1.1安装JDK并进行配置和测试
1.1.1JDK的下载
1.1.2JDK的安装
1.1.3设置环境变量
1.1.4测试Java环境
1.2安装Tomcat并进行配置和测试
1.2.1Tomcat的下载
1.2.2Tomcat的安装
1.2.3Tomcat的配置
1.2.4测试Tomcat
1.2.5配置一个站点并测试
1.3安装Eclipse并进行配置
1.3.1Eclipse简介
1.3.2Eclipse版本与代号
1.3.3Eclipse的下载
1.历史下载页面
2.专用下载页面
3.默认下载页面
1.3.4Eclipse的安装
1.3.5Eclipse的启动
1.3.6集成配置JDK
1.4使用Eclipse进行JavaWeb项目的开发-实例演示HelloWorld项目开发过程
1.4.1认识Eclipse工作区
1.4.2新建JavaWeb项目demo
1.4.3新建一个Java包test.hello
1.4.4新建一个Java类HelloWorld.java
1.4.5新建一个HTML页面index.htm
1.4.6新建一个JSP页面helloworld.jsp
1.4.7新建Tomcat服务器集成配置
1.4.8运行项目查看结果
1.4.9Tomcat停止与重启
1.4.10导出war部署包
1.4.11打包eclipse.zip
1.5本课小结
1.5.1总结本课的知识点
1.5.2要掌握的关键点
1.5.3继续下一课:创建企业信息管理系统数据库
第2课创建企业信息管理系统数据库
2.1基本需求功能-登录、退出与注册
2.1.1基础功能流程图
2.1.2用户登录功能
2.1.3用户退出功能
2.1.4用户注册功能
2.2业务需求功能-企业信息管理系统功能
2.2.1通讯录管理模块
2.2.2短消息管理模块
2.2.3日程安排模块
2.2.4工作记录模块
2.2.5公司公告模块
2.2.6工作会议模块
2.3设计页面结构
2.3.1登录界面
2.3.2登录后的欢迎界面
2.3.3注册界面
2.4设计数据库
2.4.1数据库需求分析
2.4.2设计数据表E-R图
2.4.3设计数据表结构
2.5创建数据库
2.5.1Mysql下载、安装与启动
1.下载MySQL2.安装MySQL
3.MySQL的启动与停止
4.MySQL服务的启动与停止
2.5.2安装MySQL客户端软件SQL-Front
2.5.3新建数据库demo
2.5.4新建用户表user
2.5.5添加一条用户数据
2.5.6创建通讯录管理表address
2.5.7创建短消息管理表sms
2.5.8创建日程安排表schele
2.5.9创建工作记录表worklog
2.5.10创建公司公告表notice
2.5.11创建工作会议表meeting
2.5.12打包emis07(SQL+MySQL).zip
2.6本课小结
2.6.1总结本课的知识点
2.6.2要掌握的关键点
2.6.3继续下一课:持久层框架Hibernate
第2部分持久层框架Hibernate
第3课Hibernate快速入门
3.1了解Hibernate基础
3.1.1操作数据库的3个阶段
3.1.2ORM对象关系映射
3.1.3ORM持久层的概念
3.2Hibernate开发准备
3.2.1Hibernate开发流程
3.2.2Hibernate配置文件:properties和XML文件
3.2.3Hibernate下载与配置过程
3.2.4下载并添加MySQL驱动mysql-connector-java-5.0.8-bin.jar
3.3Hibernate快速上手-HibernateTest样例
3.3.1添加Hibernate配置文件hibernate.cfg.xml
3.3.2编写映射文件User.hbm.xml
3.3.3编写持久化类User.java
3.3.4编写辅助类HibernateSessionFactory.java
3.3.5编写DAO类UserDAO.java
3.3.6编写Service类UserService.java
3.3.7运行UserService.java查看结果
3.3.8打包HibernateTest.zip
3.4Hibernate自动生成工具
3.4.1自动生成工具MiddleGen
3.4.2Eclipse插件MiddleGenIDE
3.5本课小结
3.5.1总结本课的知识点
3.5.2要掌握的关键点
3.5.3课后上机作业
3.5.4继续下一课:Hibernate核心技术
第4课Hibernate核心技术详解
4.1Hibernate映射文件详解
4.1.1根元素
4.1.2使用定义类
4.1.3使用定义主键
4.1.4使用设置主键生成方式
4.1.5Hibernate映射类型
4.1.6使用定义属性
4.1.7使用配置多对一映射
4.1.8使用配置一对一映射
4.2Hibernate核心编程
4.2.1Hibernate核心类关系图
4.2.2使用Configuration装载配置
4.2.3使用SessionFactory创建Session
4.2.4使用Session操纵数据库
4.2.5使用Transaction管理事务
4.3使用Query进行HQL语句查询
4.3.1不带参数的查询
4.3.2带参数的查询
4.3.3取得List结果集
4.3.4取得迭代列表结果集
4.3.5取得一个对象
4.3.6标量查询
4.3.7分页查询
4.3.8创建SQL查询
4.4使用Criteria进行条件查询
4.4.1创建Criteria实例
4.4.2添加查询条件
4.4.3添加排序条件
4.4.4使用示例查询
4.5本课小结
4.5.1总结本课的知识点
4.5.2要掌握的关键点
4.5.3继续下一主题:Hibernate项目实战-企业信息管理系统MySQL数据库开发
第5课Hibernate项目实战-企业信息管理系统MySQL数据库开发
5.1导出映射文件和Domain层
5.1.1新建项目hibernatemysql
5.1.2使用MiddleGenIDE导出所有表的映射文件和Domain层
5.1.3修改导出文件
5.2开发用户表user操作代码
5.2.1开发DAO层代码:UserDAO.java和UserDAOImpl.java
5.2.2开发Service层代码:UserService.java和UserServiceImpl.java
5.2.3开发JUnit单元测试代码:UserServiceTest.java
5.2.4运行单元测试类UserServiceTest.java
5.3开发通讯录管理表address操作代码
5.3.1开发分页实体类Pager.java
5.3.2开发DAO代码:AddressDAO.java和AddressDAOImpl.java
5.3.3开发Service代码:AddressService.java和AddressServiceImpl.java
5.3.4开发单元测试代码:AddressServiceTest.java
5.3.5运行单元测试类AddressServiceTest.java
5.4开发短消息管理表sms操作代码
5.4.1开发DAO代码:SmsDAO.java和SmsDAOImpl.java
5.4.2开发Service代码:SmsService.java和SmsServiceImpl.java
5.4.3开发单元测试代码:SmsServiceTest.java
5.4.4运行单元测试类SmsServiceTest.java
5.5开发日程安排表schele操作代码
5.5.1开发DAO代码:ScheleDAO.java和ScheleDAOImpl.java
5.5.2开发Service代码:ScheleService.java和ScheleServiceImpl.java
5.5.3开发单元测试代码:ScheleServiceTest.java
5.5.4运行单元测试类ScheleServiceTest.java
5.6开发工作日志表worklog操作代码
5.6.1开发DAO代码:WorklogDAO.java和WorklogDAOImpl.java
5.6.2开发Service代码:WorklogService.java和WorklogServiceImpl.java
5.6.3开发单元测试代码:WorklogServiceTest.java
5.6.4运行单元测试类WorklogServiceTest.java
5.7开发公司公告表notice操作代码
5.7.1开发DAO代码:NoticeDAO.java和NoticeDAOImpl.java
5.7.2开发Service代码:NoticeService.java和NoticeServiceImpl.java
5.7.3开发单元测试代码:NoticeServiceTest.java
5.7.4运行单元测试类NoticeServiceTest.java
5.8开发工作会议表meeting操作代码
5.8.1开发DAO代码:MeetingDAO.java和MeetingDAOImpl.java
5.8.2开发Service代码:MeetingService.java和MeetingServiceImpl.java
5.8.3开发单元测试代码:MeetingServiceTest.java
5.8.4运行单元测试类MeetingServiceTest.java
5.9开发单元测试套件AllTest.java
5.1本课小结
5.10.1打包emis01(Hibernate+MySQL).zip
5.10.2继续下一课:Hibernate项目实战-企业信息管理系统Oracle数据库开发
第6课Hibernate项目实战-企业信息管理系统Oracle数据库开发
6.1导出映射文件和Domain层
6.1.1新建项目hibernateoracle
6.1.2给数据表设置主键
6.1.3使用MiddleGenIDE导出所有表的映射文件和Domain层
6.1.4修改导出文件
6.2完成项目并运行
6.2.1添加DAO、Service和单元测试代码
6.2.2运行测试套件类AllTest.java
6.3本课小结
6.3.1打包emis02(Hibernate+Oracle).zip
6.3.2继续下一课:Hibernate项目实战-企业信息管理系统SQLServer数据库开发
第7课Hibernate项目实战-企业信息管理系统SQLServer数据库开发
7.1导出映射文件和Domain层
7.1.1新建项目hibernatesqlserver
7.1.2给数据表设置主键
7.1.3使用MiddleGenIDE导出所有表的映射文件和Domain层
7.1.4修改映射文件
7.2完成项目并运行
7.2.1添加DAO、Service和单元测试代码
7.2.2运行测试套件类AllTest.java
7.3本课小结
7.3.1打包emis03(Hibernate+SQLServer).zip
7.3.2继续下一课:持久层框架iBATIS
第3部分持久层框架iBATIS
第8课iBATIS快速入门
8.1了解iBATIS
8.1.1iBATIS简介
8.1.2iBATIS开发步骤
8.1.3选择Hibernate还是iBATIS
8.2iBATIS开发准备
8.2.1iBATIS下载与配置过程
8.2.2iBATIS配置文件sqlMapConfig.xml
8.2.3下载并添加MySQL驱动mysql-connector-java-5.0.8-bin.jar
8.3iBATIS快速上手-iBATISTest样例
8.3.1添加iBATIS配置文件sqlMapConfig.xml
8.3.2编写映射文件user_SqlMap.xml
8.3.3新建持久化类User.java
8.3.4编写辅助类SqlMapClientFactory.java
8.3.5编写DAO类UserDAO.java
8.3.6编写Service类UserService.java
8.3.7运行UserService.java查看结果
8.3.8打包iBATISTest.zip
8.4本课小结
8.4.1总结本课的知识点
8.4.2要掌握的关键点
8.4.3课后上机作业
8.4.4继续下一课:iBATIS核心技术详解
第9课iBATIS核心技术详解
第10课iBATLS代码生成工具iBATLS
第11课iBATLS项目实战——企业信息管理系统MySQL数据库开发
第12课iBATLS项目实践——企业信息管理系统Oracle数据库开发
第13课iBATLS项目实践——企业信息管理系统SQLServer数据库开发
第4部分表现层框架Struts1+Hibernate/BATIS
第14课Struts快速入门
第15课Struts核心组件详解
第16课Struts标签库详解
第17课Struts应用国际化
第18课Struts数据校险
第19课Struts与SiteMesh集成
第20课Struts访问数据库
第21课Struts项目实战——企业信息管理系统Struts1+Hibernate实现
第22课Struts项目实践——企业信息管理系统Struts+iBATIS实现
第5部分表现层框架Struts2+Hibernate/iBATIS
第23课Struts2快速入门
第24课Struts2核心组件详解
第25课Struts2标签库详解
第26课Struts2应用国际化
第27课Struts2数据校验
第28课Struts2数据转换器
第29课Struts2拦截器
第30课Struts2项目实战——企业信息
第31课Struts2项目实战——企业信息管理系统Struts2+iBATIS实现
第6部分Spring快速入门
第32课Spring快速入门
第33课Spring用做IoC容器
第34课Spring用作MVC框架
第35课Spring标签库
第36课Spring应用国际化
第37课Spring数据校验
第38课Spring数据库开发技术
第7部分多层框架集成Struts1/Struts2+Spring+Hibernate/iBATIS
第39课SSH1项目实战——企业信息管理系统Struts2+Spring+Hibernate
第40课SSI1项目实战——企业信息管理系统Struts2+Spring+iBATIS
第41课SSH2项目实践——企业信息管理系统Struts2+Spring+Hibernate
第42课SSH2项目实战——企业信息管理系统Struts2+Spring+iBATIS
……
2. javaweb开发中三层架构的一个困惑
网上搜索的,不对我在找 :
java 三层架构ssh
一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发挥了spring轻量级框架的 优势。
摘 要: 针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架Spring、Struts和Hibernate,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。并且,通过案例具体说明了如何将这一方案应用到实际项目中。
关键词: J2EE MVC Struts Spring Hibernate
大型企业级Web应用系统的开发通常要求有一个良好的软件架构、便于协作开发和扩展升级,而传统的开发模式不能很好地满足这些要求。本文针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架SSH(Spring、Struts、Hibernate),提出一种开发J2EE 企业级Web应用的轻量级解决方案,并通过案例具体说明如何将这一方案应用到实际项目中。
1 框架技术
着名的软件大师Ralph Johnson对框架(Framework)进行了如下的定义: 框架是整个系统或系统的一部分的可重用设计,由一组抽象的类及其实例间的相互作用方式组成[1] 。
框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。J2EE复杂的多层结构决定了大型的J2EE项目需要运用框架和设计模式来控制软件质量。目前,市场上出现了一些商业的、开源的基于J2EE的应用框架,其中主流的框架技术有:基于MVC模式的Struts框架和基于IoC模式的 Spring框架以及对象/关系映射框架Hibernate等。
1.1 表示层框架Struts
Struts是一个在JSP Model2基础上实现的MVC框架,主要分为模型(Model)、视图(Viewer)和控制器(Controller)三部分,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性和可重用性[2] 。Struts框架的体系结构如图1所示。
下面就图1所示的体系结构图分析Struts框架中的MVC组件。
(1)视图:视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息,只有标记。Struts自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提高开发效率。
(2)控制器:Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action对象。
(3)模型:Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。
1.2 业务逻辑层框架Spring
Spring是一个解决了许多J2EE开发中常见问题并能够替代EJB技术的强大的轻量级框架。这里所说的轻量级指的是 Spring框架本身,而不是指Spring只能用于轻量级的应用开发。Spring的轻盈体现在其框架本身的基础结构以及对其他应用工具的支持和装配能力。与EJB这种庞然大物相比,Spring可使程序研发人员把各个技术层次之间的风险降低。
Spring框架的核心是控制翻转IoC(Inversion of Control)/依赖注入DI(Dependence Injection)机制。IoC是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移,称为“翻转”[3] 。DI是对IoC更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对象或接口)注入到组件之中[3] 。 Spring采用设值注入(使用Setter方法实现依赖)和构造子注入(在构造方法中实现依赖)的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC容器。这样,不需要编写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。Spring框架的结构如图2所示。
Spring框架由七个定义明确的模块组成,且每个模块或组件都可以单独存在,或者与其他一个或多个模块联合实现。Spring Core Container是一个用来管理业务组件的IoC容器,是Spring应用的核心;Spring DAO和Spring ORM不仅提供数据访问的抽象模块,还集成了对Hibernate、JDO和iBatis等流行的对象关系映射框架的支持模块,并且提供了缓冲连接池、事务处理等重要的服务功能,保证了系统的性能和数据的完整性;Sprnig Web模块提供了Web应用的一些抽象封装,可以将Struts、Webwork等Web框架与Spring整合成为适用于自己的解决方案。
Spring框架可以成为企业级应用程序一站式的解决方案,同时它也是模块化的框架,允许开发人员自由地挑选适合自己应用的模块进行开发。Spring框架式是一个松耦合的框架,框架的部分耦合度被设计为最小,在各个层次上具体选用哪个框架取决于开发者的需要。
1.3 数据持久层框架Hibernate
O/R mapping技术是为了解决关系型数据库和面向对象的程序设计之间不匹配的矛盾而产生的。Hibernate是目前最为流行的O/R mapping框架,它在关系型数据库和Java对象之间做了一个自动映射,使得程序员可以以非常简单的方式实现对数据库的操作。Hibernate工作原理如图3所示。
Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于OO程序的开发,有助于提高开发效率。程序员访问数据库所需要做的就是为持久化对象编制xml映射文件[4] 。
底层数据库的改变只需要简单地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不会对应用程序产生影响。
Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大部分主流的数据库,如Oracle、DB2、MySQL、 Microsoft SQL Server等,是目前应用最广泛的O/R映射工具。Hibernate为快速开发应用程序提供了底层的支持。
2 基于SSH组合框架的Web应用模型设计与实现
2.1 集成SSH的新型J2EE框架
前面分析了基于J2EE的三种框架技术,下面通过集成以上三种框架技术来对传统的J2EE Web开发模型加以改进,以形成一种新的、轻量型的J2EE架构。
集成SSH框架 的系统框架图 如图4所示,系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在 Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的 DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。
系统的基本业务流程是:在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件 (struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的 Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。
2.2 基于SSH框架 的Web应用系统的实现
下面将通过一个实际的系统来展示如何进行基于SSH框架 的Web应用开发。该系统是为某通信公司运营部开发的一个问答式系统,功能类似于网络知道和新浪爱问。由于系统的模块较多,下面就以一个用户管理模块为例来说明系统的开发实现过程,并将按照数据持久层、业务逻辑层、表示层的顺序说明系统构建过程。
(1)数据持久层
数据持久层由Java对象持久化类和数据访问对象(DAO)组成。每个数据库表都对应着一个持久化对象,这样就给予了开发者使用OO思想设计和开发的便利,同时也屏蔽了具体的数据库和具体的数据表、字段,消除了对数据库操作的硬编码在重用性上的弊端。用户信息表的部分结构如表1所示。
Hibernate通过映射(Mapping)文件将对象(Object)与关系型数据(Relational)相关联,因此需要编写和数据库表相对应的Java持久化类以及对应的映射文件。有了Java持久化类后就可以在此基础上实现数据访问类。在Spring框架中,数据访问类可以从辅助类 HibernateDaoSupport继承,这极大地方便了Hibernate框架在Spring中的使用,相应的部分代码如下:
public class UserDao
extends HibernateDaoSupport {
public int add(User user) {
return Integer.ParseInt(this.getHibernateTemplate().save(user).toString());
}
public List findAll() {
return this.getHibernateTemplate().loadAll(User.class);
}
}
具体的Hibernate数据源、session工厂、事务管理、缓冲连接池等功能都由业务层的Spring容器提供。
(2)业务逻辑层
业务逻辑层由Spring框架支持,提供了处理业务逻辑的服务组件。开发者需要对业务对象建模,抽象出业务模型并封装在Model组件中。由于数据持久层实现了Java持久化类并且封装了数据访问对象(DAO),因此可以在Model组件中方便地调用DAO组件来存取数据。Spring的IoC容器负责统一管理Model组件和DAO组件以及Spring所提供的事务处理、缓冲连接池等服务组件。
在用户管理模块中,通过业务建模创建了用户模型UserService类,封装了对用户的权限管理以及积分管理等功能。UserService类通过调用数据访问类UserDao实现对用户数据的操作。这些组件的关系将通过配置Spring框架的applicationContext.xml联系起来,配置文件的主要内容如下:
(3)表示层
表示层结合JSP和Struts的TagLib库处理显示功能,利用ActionServlet将请求(*.do)映射到相应的Action,并由Action调用业务逻辑的服务组件,然后根据处理结果跳转到Forword对象指定的响应页面。
业务流程的部署由struts-config.xml完成。下面以一个显示所有用户信息的请求(ListUser.do)为例来说明配置文件的使用。
基于J2EE的Web应用以其层次性、平台无关性的优势已经逐渐成为了电子商务、电子政务主要的解决方案。本文针对传统的J2EE Web应用开发的弊端,提出了一种利用轻量级框架来快速搭建Web应用的解决方案,并且通过其在实际项目中的应用,证明了采用此方案可以帮助开发人员在短时间内建立结构清晰、可重用性好、维护扩展方便的Web应用程序。
参考文献
[1] GAMMA E, HELM R, JOHNSON R, et al. Design patterns:Elements of reusable object-oriented software[M]. Addison Wesley, 1994.
[2] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M]. 北京:电子工业出版社,2004.
[3] JOHNSON R, HOELLER J, ARENDSEN A, et al. Java/J2EE application framework reference document. V1.1.
2004.
[4] 徐长盛,戴超.一种快速开发Web应用程序方法的研究[J]. 计算机工程与设计,2004,(12):2237-2239.
[5] 夏昕,曹晓钢,唐勇.深入浅出Hibernate[M]. 北京:电子工业出版社,2005.
[6] JOHNSON R.Expert one-on-one J2EE design and development[M]. 魏海萍译.北京:电子工业出版社,2003.
在用ssh 开发web应用时,需要对生成的 各个类文件进行组织,下面就对一个可行的 目录方案进行介绍:
譬如应用中有一个用户管理模块,则在公共包下建立一个user包,如该公共包可以为com.simon.oa,
在user包下包括如下子包
1、controler包
该包放置各种struts的 action。
2、包
该包放置各类(data access object),也就是放置对数据库访问的 实现类,在用myeclipse中的 “Hibernate Reverse Engineering”进行反向操作时在某一个目录中就会生成对应某个表的 DAO,生成后可将该DAO拖到包中。在某些应用中将DAO作为接口,在该接口中包括所有对数据库的 操作方法,然后在包建立一个hibernate包,在hibernate包中放置对DAO接口的 实现,譬如:UserDAO接口有一个实现类为UserDaoImpl,将该类放置到hibernate包中,实际的 开发倾向于后一种方式,因为对这个DAO接口可以实现spring的 IoC操作。(不知道myeclipse对此是怎么考虑的 ,这个问题让我纠缠了很久,误将DAO理解成一个能够进行实际操作的 类,而不是一个接口,以后开发要注意 )
3、model包
该包中放置hibernate反向工程生成的 bean和该bean对应的 .hbm.xml文件。
4、service包
该包放置业务操作类,譬如用户服务类,一般情况将该用户操作类提取一个接口,然后在service包下生成一个impl包,在impl包中才放置用户操作接口的 实现类。该用户接口实现类中调用DAO接口对数据库进行操作,而调用该实现类的 方法在struts的 action中。
5、vo包(value object)
vo包中的 中包括struts中使用的 POJO及actionform等信息。
VO: Value Object
DTO: Data Transfer Object
个人理解VO和DTO是类似的 东西,原则上VO和DTO只有Public Fields,主要用于进程之间数据传递的 问题,VO和DTO不会传递到表示层,在业务层就会被吸收。但看到很多人在建立VO和DTO时,也含有Setter,Getter属性和一些其它的 辅助方法,这也无可厚非,我自己也不能确定这对不对。
3. 有哪些Java web里的并发框架,都有哪些
一、并发是一种需求,以下先介绍一下javaweb对于高并发的处理思路:
1、synchronized 关键字
可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。可能锁对象包括: this, 临界资源对象,Class 类对象
2、同步方法
同步方法锁定的是当前对象。当多线程通过同一个对象引用多次调用当前同步方法时, 需同步执行。
3、同步代码块
同步代码块的同步粒度更加细致,是商业开发中推荐的编程方式。可以定位到具体的同步位置,而不是简单的将方法整体实现同步逻辑。在效率上,相对更高。
A)锁定临界对象
同步代码块在执行时,是锁定 object 对象。当多个线程调用同一个方法时,锁定对象不变的情况下,需同步执行。
B)锁定当前对象
4、锁的底层实现
Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。同步方法 并不是由 monitor enter 和 monitor exit 指令来实现同步的,而是由方法调用指令读取运行时常量池中方法的 ACC_SYNCHRONIZED 标志来隐式实现的。
5、锁的种类
Java 中锁的种类大致分为偏向锁,自旋锁,轻量级锁,重量级锁。
锁的使用方式为:先提供偏向锁,如果不满足的时候,升级为轻量级锁,再不满足,升级为重量级锁。自旋锁是一个过渡的锁状态,不是一种实际的锁类型。
锁只能升级,不能降级。
6、volatile 关键字
变量的线程可见性。在 CPU 计算过程中,会将计算过程需要的数据加载到 CPU 计算缓存中,当 CPU 计算中断时,有可能刷新缓存,重新读取内存中的数据。在线程运行的过程中,如果某变量被其他线程修改,可能造成数据不一致的情况,从而导致结果错误。而 volatile 修饰的变量是线程可见的,当 JVM 解释 volatile 修饰的变量时,会通知 CPU,在计算过程中, 每次使用变量参与计算时,都会检查内存中的数据是否发生变化,而不是一直使用 CPU 缓存中的数据,可以保证计算结果的正确。
更多、此外还有很多细节需要通过学习去了解和完善,此处就不一一列举了。
二、并发框架
并发框架很多,如ExecutorService、RxJava、Disruptor、Akka等,具体选择哪个(或者都不选择)是根据项目需求选择的,框架本身的差异并不大,基本都是如下模式
4. 常用的Java Web框架简介
Web框架是人们在使用某种语言编写Web应用服务端时关于架构的最佳实践
有些Web框架是从实际的Web项目抽取出来的 也就是说 做一个具体的应用项目时 采取的架构比较理想 就把这部分和领域无关 而仅和Web的请求和响应处理有关的设计拿出来 形成一个基础 在开发别的应用项目的时候则可以从这基础做起 让开发者更关注领域问题 而不是Web的请求和响应的控制
也有些Web框架是直接设计出来的 很多Web框架在设计的时候也都借鉴了别的框架 吸取优点 修改不足 并根据自己的框架的定位 在特定方面有自己的发挥 形成了自己的特点 比如有的web框架追求的是松耦合性 层次 结构之间都不密切绑定 有的Web框架则追求敏捷性 强调约定而不是配置
Java 的 Web框架虽然各不相同 但基本也都是遵循特定的路数的 使用Servlet或者Filter拦截请求 使用MVC的思想设计架构 使用约定 XML或 Annotation实现配置 运用Java面向对象的特点 面向抽象实现请求和响应的流程 支持Jsp Freemarker Velocity等视图
JSF
优点
Java EE标准 这意味着有很大的市场需求和更多的工作机会
上手快速并且相对容易
有大量可用的组件库
缺点
大量的JSP标签
对REST和安全支持不好
没有一个统一的实现 既有SUN的实现 又有Apache的实现——MyFaces
国内的OperaMasks还支持AJAX 以及有开发工具 支持
Spring MVC
优点
对覆盖绑定(overriding binding) 验证(validation)等提供生命周期管理
与许多表示层技术/框架无缝集成 JSP/JSTL Tiles Velocity FreeMarker Excel XSL PDF 等
便于测试——归功于IoC
缺点
大量的XML配置文件
太过灵活——没有公共的父控制器
没有内置的Ajax支持
Stripes
优点
不需要书写XML配置文件
良好的学习文档
社区成员很热心
缺点
社区比较小
不如其他的项目活跃
ActionBean里面的URL是硬编码的
Struts
优点
架构简单——易于扩展
标记库很容易利用FreeMarker或者Velocity来定制
基于控制器或者基于页面的导航
缺点
文档组织得很差
对新特征过分关注
通过Google搜索到的大多是Struts x的文档
Tapestry
优点
一旦学会它 将极大地提高生产率
HTML模板——对页面设计师非常有利
每出一个新版本 都会有大量的创新
缺点
文档过于概念性 不够实用
学习曲线陡峭
发行周期长——每年都有较大的升级
Wicket
优点
对Java开发者有利(不是Web开发者)
页面和显示绑定紧密
社区活跃——有来自创建者的支持
缺点
HTML模板和Java代码紧挨着
需要对OO有较好的理解
Wicket逻辑——什么都用Java搞定
在Java的Web框架中 我使用过Struts Struts 试用过Stripes Wicket 了解过JSF SpringMVC 以我使用的经验 我觉得看一个Java Web框架应看看下面几个方面
设计理念
一个框架设计出来应该有一个基本的思路 它为什么要要被设计出来?有的框架的目标 就是提高效率 有的框架的目标的给用户充分的选择 有的框架的目标是充分了解实际需求 给用户一个尽量合理的默认选择 有的框架是要给使用者开发桌面程序的感觉 应该说 一个好的框架应该是实现了预期目标 体现出了自己的设计理念的
设计的合理性
设计的合理性表现在框架在一些关键问题上的处理 比如灵活性和敏捷性之间的权衡 硬编码和文本配置之间的权衡 灵活性指的是可以适应用户多样的需求 很特殊的要求也能得到支持 有的框架的实现基于太多的约定 使得用户只能遵循 而敏捷性指的是用户在解决绝大多数常规问题的时候 能尽量少做工作 提高效率 框架设计者只能在这两者见达到一个平衡点 权衡的怎么样 就很见水平了 硬编码和文本配置之间的权衡也很有意思 文本配置的意义在于Java是一个编译语言 强调代码的封闭 讲究扩展而不是修改 这种情况下文本配置信息可以很方便的在不修改程序的情况下改变程序行为 但是随着一些灵活的脚本语言实现的 Web框架的出现 人们发现在这样的框架中 脚本语言即做程序编码语言 也做配置语言 还做视图上的标记语言 这使我们对Java实现的框架有了一番新的审视 既然配置文件并没有消除对程序的修改 为什么不能在应编码上下下功夫呢?
设计的平衡性
设计的平衡性指的是 框架在设计流程中各阶段 各层次的实现方式时 所达到的上述权衡(灵活性和敏捷性之间的权衡等)应该是具有一致的水平 一个在控制上过分灵活 而视图上具有非常大限制的框架是不能算做一个好的框架的
框架真的解放了开发者吗
框架的目的是让开发者把更多的精力放在领域问题 而非Web的请求和响应的处理问题上 而事实上框架都做到这一点了吗?不可否认 框架的使用提高代码的可维护性 但是框架在解放开发者这点上就未必了 有时还给开发者带来了额外的负担 事实上 直接使用Servlet 只要维持好代码风格 一样可以很有效率 当然 直接使用Servlet的灵活性就不用说了
在我接触的Web框架中 我最推崇的是Struts 设计优雅 偏重灵活 也基本不造成额外的负担 当然这些评价是和我参与的项目的规模有关的 其他规模的项目Struts 就未必合适了 我希望Struts 能在下面几个方面有些改善
在提供文本配置方式的基础上给一个约定配置的方式 让开发者在大多数情况下可以不配置
配置也支持硬编码 因为有时候维护可修改的硬编码是很有效率的
lishixin/Article/program/Java/hx/201311/26313
5. Java Web 开发时的 MVC 模型和软件的3层架构(表现层,业务逻辑层,数据访问层)有哪些区别和联系
三层架构和MVC是有明显区别的,MVC应该是展现模式(三个加起来以后才是三层架构中的UI层)
三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。
6. java web现在流行用什么框架
主流 Java Web 开发框架有Spring 框架、MyBatis 框架、 Hibernate 框架、 Struts 2 框架等。
1、Spring 框架
Spring 框架是一个轻量级的框架,渗透了 Java EE 技术的方方面面。Spring 框架是由于软件开发的复杂性而创建的,是一个开源框架。Spring 框架的用途不仅限于服务器端的开发,从简单性、可测试性和松耦合性角度而言,绝大部分 Java 应用都可以从 Spring 框架中受益。
2、MyBatis 框架
MyBatis 框架是一个优秀的数据持久层框架,可在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。Mybatis 的封装性要低于 Hibernate 框架,且性能优异、简单易学,因此应用较为广泛。
3、Hibernate 框架
Hibernate 框架不仅是一个优秀的持久化框架,也是一个开放源代码的对象关系映射框架。它对 JDBC 进行了轻量级的对象封装,将 POJO 与数据库表建立映射关系,形成一个全自动的 ORM 框架。Hibernate 框架可以自动生成 SQL 语句,且自动执行。
4、Struts 2 框架
Struts 2 框架以 WebWork 的优秀设计思想为核心,吸收 Struts 框架的部分优点,提供了一个更加简洁的基于 MVC 设计模式实现的 Web 应用程序框架,它本质上相当于一个 Servlet。在 MVC 设计模式中,Struts 2 框架作为控制器(Controller)来建立模型与视图的数据交互。
(6)javaweb架构图扩展阅读:
Java Web 开发框架应用要点:
搭建Java Web应用的开发环境-----部署Tomcat服务器、用eclipse创建Server服务、构建Java Web项目、建立第一个JSP文件、 运行JSP文件。
第一个要点是掌握tomcat的安装和部署。在Windows系统上安装Tomcat相对简单,下载压缩包解压缩到任意目录即可(目录名称不要含有中文字符)。进入tomcat的bin目录,可以直接运行startup.bat启动tomcat服务。
第二个要点是在eclipse中添加Server服务。把tomcat与eclipse进行关联,方便eclipse管理tomcat。
第三个要点是构建Java Web项目。Web项目开发的第一步就是要建立项目。在新建Project项目时,选择Dynamic Web Project项目类型,即可创建Web项目。
第四个要点是建立的项目如何在Server中运行。选择要运行的JSP文件,单击右键,在弹出的菜单中选择Run on Server命令即可,初次运行项目时,需要配置项目在哪个Server中运行(如有多个Server)。
7. 现在java web主要用什么框架
三大框架:Struts+Hibernate+Spring
Java三大框架主要用来做WEN应用。
Struts主要负责表示层的显示
Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作)
Hibernate主要是数据持久化到数据库
再用jsp的servlet做网页开发的时候有个 web.xml的映射文件,里面有一个mapping的标签就是用来做文件映射的。当你在浏览器上输入URL得知的时候,文件就会根据你写的名称对应到一 个JAVA文件,根据java文件里编写的内容显示在浏览器上,就是一个网页。
一 .Struts框架:struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
1.流程:服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。
2.架构:Struts对Model,View和Controller都提供了对应的组件。ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。
Model部分:由JavaBean组 成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给 Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分:该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
Controller组件:Controller组件有两个部分组成——系统核心 控制器,业务逻辑控制器。 系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet 类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处 理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
二.Spring框架
Spring是一个解决了许多在J2EE开发中常见的的问题的强大框架。 Springle提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类变成的好习惯。Spring的架构基础是基于使用JavaBean属性 的Inversion of Control 容器。然而Spring在使用IoC容器作为构建玩关注所有架构层层的完整解决方案方面是独一无二的。Spring提供了唯一的数据管理 抽象包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping 解决方案。
三.Hibernate框架
Hibernate 是一个开源代码的对象关系映射框架,对JDBC惊醒了费城轻量级的 的对象封装,使得Java程序员可以随心所欲的使用对象变成思维来操作数据库。Hebernate可以应用在任何使用JDBC的场合,既可以在java的 客户端程序使用,也可以在Servlet/JSP的Web应用中使用最具革命意义的事,Hibernate可以在应用EJB的J2EE架构中取代CMP, 完成数据持久化的重任
Hibernate的核心接口一共有5个,分别为:Session、 SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口, 不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
1.Session接口:负责执行被持久化对象的CRUD操作(CRUD的任务是完成与 数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于 JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将 HttpSession对象称为用户session。
2.SessionFactory接口:负责初始化Hibernate。它充当数据存储 源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常 只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
3.Configuration接口:负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
4.Transaction接口:负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
5.Query和Criteria接口:负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
8. JavaWeb学习路线
JavaWeb核心框架
持久层框架:Hibernate、iBATIS
表现层框架:Struts1、Struts2
业务层框架:Spring
java学习路线图:
1、Hibernate:ORM
Hibernate是一个Java ORM开发框架
ORM是Object Relation Mapping的缩写,顾名思义,即对象关系映射。
ORM是一种以面向对象的方式来进行数据库操作的技术。Web开发中常用的语言,都会有对应的ORM框架。而Hibernate就是Java开发中一种常用ORM框架,另一个现在流行的ORM框架是Mybatis。
为什么需要ORM框架?
简单地理解,通过Java进行数据库访问的正常流程可以分为以下几步:
准备好SQL语句
调用JDBC的API传入SQL语句,设置参数
解析JDBC返回的结果
这个过程实际上非常麻烦,比如:
在Java代码中拼接SQL非常麻烦,而且易于出错
JDBC的代码调用有很多重复性的代码
从JDBC返回的结果转换成领域模型的Java对象很繁琐
而使用ORM框架,则可以让我们用面向对象的方式来操作数据库,比如通过一个简单的函数调用就完成上面整个流程,直接返回映射为Java对象的结果。这个流程中很大一部分工作其实可以交给ORM自动化地帮我们执行。对,类似MVC框架,ORM框架会帮你处理好相关的繁琐事情!
2. Struts:MVC
Struts是一个Java Web MVC开发框架。MVC早在1978年就作为Smalltalk的一种设计模式被提出来了,引用到Web应用中来时:
模型Model用于封装与业务逻辑相关的数据和数据处理方法
视图View是数据的HTML展现
控制器Controller负责响应请求,协调Model和View
Model,View和Controller的分开,是一种典型的关注点分离的思想,不仅使得代码复用性和组织性更好,使得Web应用的配置性和灵活性更好。
MVC开发模式下,Java Web开发会遇到URL路由、模板渲染、表单绑定/提交/验证、Session封装、权限验证、国际化等一系列通用的问题,而MVC框架会将这些通用问题都封装进框架中,你在应用中根据自己的场景进行简单的配置和编码即可,MVC框架就能帮你处理好一切,可以极大地简化代码。
3.Spring:DI/AOP
Spring对应的关键词是DI(依赖注入)与AOP(面向切面编程),可以认为是一个以DI和AOP为核心Java Web一站式的集成(粘合)框架。
其中DI也称为IoC(控制发转)用于管理Java对象之间的依赖关系(一定要说DI是IoC实现方式的童鞋们见评论区),AOP用于解耦业务代码和公共服务代码(如日志,安全,事务等)。DI和AOP能够让代码更加简单,具有良好的松耦合特性和可测试性,极大地简化开发。理解这两者是使用Spring框架的基础。
Spring框架对Java企业应用开发中的各类通用问题都进行了良好的抽象,因此也能够把应用各个层次所涉及的特定的功能和开发框架(如接下来要说的MVC框架、ORM框架)方便得组合到一起(这也得益于依赖注入和面向切面编程带来的强大功能)。Spring是一个极其优秀的一站式的Full-Stack集成框架,因此基于Spring核心,对Java应用开发中的各类通用问题几乎都提供了针对性的开发框架,比如你耳熟能详(如果你对这个问题感兴趣的话)的Spring MVC,Spring Data。
Java曾经有另外一个类似的一站式框架粘合框架Seam,这是Hibernate的作者、脾气火爆的大神Gavin King的作品,核心是基于依赖注入来黏合JSF和EJB,不过推出时Spring已经大杀四方,Seam基本已经退出历史舞台了。记得Seam提过一个我认为很不错的概念:“双向注入”,类似现在前端框架中的双向绑定,当时来说还是很超前的。
9. 怎么查看javaweb项目的框架
SSH是 spring+struts+hibernate框架集成,SSM是Spring+SpringMVC+MyBatis框架集成。从你的截图来看,spring框架和struts框架是用上了,但是截图没有展示你的层用的是MyBatis还是hibernate,如果是hibernate的话,那这个就是标准的ssh框架了。如果不是,那这个项目就是spring+struts+MyBatis了,也不能称之为ssm框架,就叫spring+struts+MyBatis,注意区别
10. 现代Java Web开发架构分析
在本文中 我将集中讨论现代的Java开发框架 分析它们的特征和各自的使用优点 另外 我还想比较目前流行的生产质量框架 例如Struts Spring和Hibernate 并详细讨论其基本相似性及有关基本概念
我将简短分析被用于支持这些框架的企业开发环境或工具箱 例如Borland JBuilder Eclipse以及BEA Workbench 请记住 市场上有许多有关这些开发框架的图书;然而 在任何一篇文章中 要对它们进行深入描述是不可能的 不过 我将尽力讨论最广泛地使用的概念
共同点
几乎所有现代的网络开发框架都遵循了模型 视图 控制(MVC)设计模式 商业逻辑和描述被分开 由一个逻辑流控制器来协调来自客户端的请求和服务器上将采取的行动 这条途径成为了网络开发的事实上的标准 每个框架的内在的机制当然是不同的 但是开发者们使用来设计和实现他们的Web应用软件的API是很类似的 差别还存在于每个框架提供的扩展方面 例如标签库 JavaServer Faces或JavaBean包装器等
所有的框架使用不同的技术来协调在Web应用程序之内的导航 例如XML配制文件 java属性文件或定制属性 所有的框架在控制器模块实现的方法方面也存在明显的不同 例如 EJB可能实例化在每个请求中需要的类或使用Java反射动态地调用一个适当的行动(Action)类 另外 不同框架在各自引入的概念上也有所不同 例如 一个框架可能定义用户请求和反应(以及错误)场所 而另外一个框架可能仅仅定义一个完整的流 从一个请求到多个响答和随后的再请求……
各种Java框架在它们组织数据流的方法方面是很类似的 在请求发出后 在应用程序服务器上产生一些行动;而作为响应 一些可能包含对象集的数据总是被发送到JSP层 然后 从那些对象 可能是有setter和getter方法的简单类 javabeans 值对象 或者一些集合对象 中提取数据 现代的Java框架还想方设法简化开发者的开发任务 如通过使用简易的API 数据库连接池 甚至数据库调用包等提供自动化的追踪方式来实现 一些框架或者能够钩进(hooked into)另外的J EE技术中 例如JMS(Java消息服务)或JMX 或把这些技术集成到一起 服务器数据持续性和日志也有可能成为框架的一部分
企业开发环境
一些框架在Web开发者社区和企业发展领域变得相当流行 随着这些框架的日渐成熟并开始发行稳定的版本 商业的IDE(集成发展环境)开始为这些框架提供支持并把他们纳入到自己的产品中 一些IDE甚至基于框架的概念开发出整个的产品 例如 BEA WebLogic Workshop就是基于Struts框架建立起来的
Borland Jbuilder为Struts提供了内建的支持 也支持JSF和JSTL
Eclipse平台已成为一个很流行的开发工具 部分因为它是基于插件的 部分因为它对于Web框架的支持 现在 出现了众多的Eclipse插件 甚至完整的基于Eclipse的IDE 许多插件被设计适合于Struts框架开发 例如MyEclipse()或M
大多数IDE都具有图形化的流程和可视化对象(类代理) 例如 下面是一个JBuilder的行动(Action)设计器 用于规划Web应用程序的页面顺序
WebLogic Workshop引入Java页面流程技术 它扩展了Struts框架而提供了一个简化的开发模型并增加了另外一些特性 Workshop使用页面流(Page Flows) 实现轻易地把用户接口与导航和商业逻辑分离开来 页面流由JSP页组成 这些页面包含用户接口元素和一个控制器文件(JPF) 它包含由用户提供的数据将怎样被处理的指令以及下一步什么页面将被返回到用户的信息 页面流动提供给开发者一个可视化的Web应用程序总体轮廓 它让开发者能够看到直观地分析不同的JSP页彼此相关联 并实现Web应用程序整体结构的快速建立
MyEclipse提供类似的特征 并带有更多吸引人的代价标签
Apache Struts框架
Struts框架是一开源产品 基于模型 视图 控制器(MVC)设计范例来开发Web应用软件 它使用并且扩展了Java Servlet API 最初由Craig McClanahan创建 在 年 月 它被捐赠到Apache Foundation Struts框架展示了一个强有力的定制标签库 平铺显示 表单检验和I N(国际化) 另外 Struts支持许多描述层 包括JSP XML/XSLT JavaServerFaces(JSF)和Velocity;还支持一些模型层 包括JavaBeans和EJB
Spring框架
Spring框架是一个分层的Java/J EE应用程序框架 基于Expert One on One J EE设计和发行的代码 Spring框架提供一种简单的开发技术 用于自动化处理工程中大量的属性文件和助理类
Spring框架包括的主要特色有:
强有力的基于JavaBeans的配置管理 使用Inversion of Control(IoC)原则 一个核心bean工厂 可用在任何环境 从applets到J EE容器程序 通用的抽象层适合于数据库事务管理 允许可插入的事务管理器 并且不需要处理低层次的问题就可容易地划分各事务的界限 一个很有意义的异常处理的JDBC抽象层 与Hibernate集成到一起 DAO实现支持以及事务策略
Hibernate框架
Hibernate是一适合于Java语言的对象 关系映射(ORM)解决方案 它也是开源软件 类似Struts 并且在LGPL保护下发布 Hibernate被一群来自世界各地的Java软件开发者所共同开发 它提供一个易用的框架来实现把一个面向对象的域模型映射到一传统的关系数据库 它不仅负责从Java类到数据库表格(以及来自Java数据类型的SQL数据类型)的映射 而且还提供数据查询和检索能力 并能大大减少花在SQL和JDBC手工数据处理上的开发时间
Hibernate的目标是减轻开发者的与大量普通的数据持续性相联系的编程任务 Hibernate还能够适应开发进程 无论它是刚开始设计还是来自一现成的数据库 Hibernate可以自动生成SQL 使开发者摆脱了手工处理结果集和进行对象转化的繁琐任务 并能使应用程序移植到所有的SQL数据库 它还能提供透明的持续性 对持续性类的唯一的要求的是实现一个无参数的构造器
这个框架典型地使用在JavaSwing应用软件 基于Servlet的Java应用软件和使用EJBsession beans的J EE应用软件中
结论
lishixin/Article/program/Java/hx/201311/26488