`

使用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点

阅读更多
前段时间用用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐
的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX
控件播放音乐的).刚学的struts2,主要是想练一下.
  • Music1.rar (70 KB)
  • 描述: 源代码
  • 下载次数: 6717
  • 描述: 主页的一个截图
  • 大小: 3.7 MB
分享到:
评论
45 楼 tiyi 2008-03-16  
俺到现在还没搞清楚用sitemesh的好处是什么……
44 楼 asheng88 2008-03-16  
我指的线程问题是单例模式下访问器的同步问题,有同步synchronized就有可能死锁,如果没有synchronized,那么假想两个线程调用访问器,而其中一个线程在new之前睡眠,醒来的时候第二个线程已经new完成而第一个线程不知道,怎么样?这是单例吗?更恐怖的是表现的线程频繁!
43 楼 fuliang 2008-03-16  
asheng88 写道
fuliang 写道
action是线程不安全的,需要每次请求创建一个action

spring管理的bean不都是单例的吗?也许表现层的action例外!
业务bean呢?service和dao都是单例的吧,是什么保证单例线程安全?

Spring管理的bean可以配置成singleton和prototype的,
一般DAO和Service都应该是单例的,Struts2的Action模型本身就不是单例的,因为
通常Action是有数据成员,并且通过getter,setter与页面的字段绑定.
service和dao事实上他们通常没有可变的东西,Service只依赖于dao,dao只有CRUD操作,
本身就是线程安全.当然你也可以使用一些共享的可变变量,把他们搞成线程不安全的,然后配置成
原型模式的,当然这会影响一点效率.
42 楼 asheng88 2008-03-16  
fuliang 写道
action是线程不安全的,需要每次请求创建一个action

spring管理的bean不都是单例的吗?也许表现层的action例外!
业务bean呢?service和dao都是单例的吧,是什么保证单例线程安全?
41 楼 fuliang 2008-03-16  
asheng88 写道
fuliang 写道
前段时间用用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐
的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX
控件播放音乐的).刚学的struts2,主要是想练一下.


表现层的action也可以注射到spring容器?

Action可以由Spring容器来管理,Service可以直接注入到Action中,但需action配成prototype的,因为struts2,action是线程不安全的,需要每次请求创建一个action
40 楼 asheng88 2008-03-16  
fuliang 写道
前段时间用用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐
的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX
控件播放音乐的).刚学的struts2,主要是想练一下.


表现层的action也可以注射到spring容器?
39 楼 manmoon 2008-03-13  
这么多jar库,累不累,有没有烦的感觉?
做一个网站没必要把spring+hibernate+....都用上,
感觉有点像电影里那个台词:
用就用最好的,你还甭嫌贵。。。。。。
38 楼 ardenliu 2008-02-27  
没有看到认证的部分,不知道是如何处理的啊。
37 楼 fuliang 2008-02-26  
fhjxp 写道
fuliang 写道
fhjxp 写道
看了一下源码,问一下,dao,service定义每个都定一个接口有什么用啊?有什么好处?

基于接口而不是类编程,这样Service层依赖于dao层的接口而不是实现,可以方便的替换dao的实现。基于接口
编程提供了可插拔的松耦合的编程方式。Spring倡导基于接口编程的方式,这是一种良好的编程习惯,在Spring中使
用接口是自然的,被鼓励的。


你的回答里面我只看到一个理由:方便替换实现。为什么要松耦合、面向接口、好习惯还是为了这个。

真的方便了么?
1,首先说90%以上的项目,都不存在另外作多套Dao,Service需要进行切换,我接触过到的项目(开发时间近三年)都没有遇到过这个情况,偏偏每个项目都要搞了接口,不管开发还是维护都没有得到什么好处。

2,如果某个service方法要修改具体实现,不管有接口还是没有接口都需要同样的修改代码。如果还需要修改方法的名称或参数,同时还得修改接口类,得改两处,反而麻烦了。

1、我曾经参加过一个项目,原来使用Hibernate,从这个项目派生出一个项目要用JPA,有了DAO接口就可以方便替换了,否则,你在每个Service中找使用的HibernateDAO,然后改成现在的JPA实现的DAO,这是一个烦琐而易出错的事情,这就是依赖于具体实现的害处。
  接口作为一种契约,其他使用你代码的人只需要知道你接口中提供的方法,就可以使用你的代码了,而接口通常是方法的最小子集(要暴露给用户使用的部分)。如果你只有实现类,往往会让使用你代码的人陷于细节,自己查找你到底暴露那些方法给我用。维护方面,如果你的实现需要很大改动的时候,有了接口别人在修改你代码的时候,就会知道我只要实现了你定义的接口的功能就ok了,其他的细节和我无关。
2、你所说的得改两处,是因为接口没有定义好,改动两处当然是不可避免的。如果你没有接口,别人要修改的话,他都不知道他的改动对其他部分的影响有多大,因为他很可能不知道,你要暴露什么,其他部分依赖于哪些方法。
3、基于实现类违反了面向对象的设计原则:OCP、LSP、DIP
36 楼 fhjxp 2008-02-26  
fuliang 写道
fhjxp 写道
看了一下源码,问一下,dao,service定义每个都定一个接口有什么用啊?有什么好处?

基于接口而不是类编程,这样Service层依赖于dao层的接口而不是实现,可以方便的替换dao的实现。基于接口
编程提供了可插拔的松耦合的编程方式。Spring倡导基于接口编程的方式,这是一种良好的编程习惯,在Spring中使
用接口是自然的,被鼓励的。


你的回答里面我只看到一个理由:方便替换实现。为什么要松耦合、面向接口、好习惯还是为了这个。

真的方便了么?
1,首先说90%以上的项目,都不存在另外作多套Dao,Service需要进行切换,我接触过到的项目(开发时间近三年)都没有遇到过这个情况,偏偏每个项目都要搞了接口,不管开发还是维护都没有得到什么好处。

2,如果某个service方法要修改具体实现,不管有接口还是没有接口都需要同样的修改代码。如果还需要修改方法的名称或参数,同时还得修改接口类,得改两处,反而麻烦了。
35 楼 fuliang 2008-02-26  
fhjxp 写道
看了一下源码,问一下,dao,service定义每个都定一个接口有什么用啊?有什么好处?

基于接口而不是类编程,这样Service层依赖于dao层的接口而不是实现,可以方便的替换dao的实现。基于接口
编程提供了可插拔的松耦合的编程方式。Spring倡导基于接口编程的方式,这是一种良好的编程习惯,在Spring中使
用接口是自然的,被鼓励的。
34 楼 fhjxp 2008-02-26  
看了一下源码,问一下,dao,service定义每个都定一个接口有什么用啊?有什么好处?
33 楼 fhjxp 2008-02-26  
xly_971223 写道
着重看了一下service 在这种简单应用中dao层完全可以去掉
写一个功能全点的dao就可以 大大提高了开发效率

确实应该这样做,我也正做一个类似项目就是这样高,Action,Service,自己封装一个Dao
32 楼 梦秋雨 2008-02-23  
fuliang 写道
lovelyivy1982 写道
郁闷!怎么不附包阿?找得好辛苦

包太多,附件放不下,不好意思...


用Maven管理依赖,发东西的时候就可以不用管jar了。给个POM.xml就OK
31 楼 wangjian3q 2008-02-22  
<%@ taglib prefix="s" uri="/struts-tags" %>

为什么  s 标签是错误的 呢
30 楼 duronshi 2008-01-07  
能否将那些包也一起放上来呀?照顾下新手
谢谢
29 楼 luckne 2008-01-07  
我们也做了一个类似的项目,但是不知道为什么运行的时候 tomcat 吃类存很厉害,到后面整个application 会变慢,我用工具看了看好像是struts2没有做回收。。。不知道有没有遇见过这样的情况。。。现在我们在作压力测试想得到更确切得问题所在

不知道各位有没遇见这样得情况?
28 楼 to2 2008-01-06  
谢谢~如果有分页示范就更好了,照顾一下我这样的新手。
27 楼 fuliang 2008-01-06  
erikchang 写道
建议在一个附件中给相关包注名

readme.txt里面有
26 楼 fuliang 2008-01-03  
seasar_tei 写道
做得不错,但是小弟有一点疑问。就是歌手这个对象是不是继承体系过于复杂呢?

恩,是有点复杂。这就是面向对象的两难的局面。你的领域模型越面向对象,你与数据库,表现层就越阻抗不相容。如果仅仅从这个简单应用歌手的继承体系显得太复杂了,显得只是在找麻烦,呵呵

相关推荐

    Struts2+Spring+Hibernate+sitemesh

    Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐 的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX 控件播放音乐的).

    struts2 + spring2+hibernate3+sitemesh+myeclipse

    Struts2、Spring2、Hibernate3和Sitemesh是经典的Java Web开发框架组合,它们在构建企业级应用中发挥着重要作用。MyEclipse则是一款强大的集成开发环境,为这种组合提供了便捷的开发支持。 Struts2是MVC(模型-视图...

    Struts2+Spring+Hibernet+JPA+sitemesh+log4j

    它们各自承担着不同的职责,并且在实际项目中经常被整合使用,形成了所谓的"SSH2"(Struts2 + Spring + Hibernate)框架组合,加上JPA和SiteMesh,进一步提升了开发效率和应用的可维护性。 1. **Struts2**:这是一...

    struts2+spring2+hibernate3+velocity+sitemesh集成框架代码

    Struts2、Spring2、Hibernate3、Velocity和Sitemesh是经典的Java Web开发框架组合,它们各自在Web应用的不同层面提供了强大的支持。这个集成框架代码集合了这些技术,旨在提供一个高效、灵活和可扩展的开发环境。 1...

    基于shiro+struts2+hibernate+Spring+sitemash框架集合的毕业设计管理系统

    【标题】基于Shiro+Struts2+Hibernate+Spring+Sitemash框架集合的毕业设计管理系统是一种综合运用多种技术实现的企业级应用。这个系统利用这些框架的特性,构建了一个功能完善的管理平台,旨在提升开发效率,优化...

    开发者突击·Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)源码

    基于Struts2的SSH2整合架构,并在此架构基础上实现一个完整的办公自动化系统。在《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》架构讲解的过程中,穿插介绍了JDBC、Log4j、Sitemesh、JUnit...

    struts2+spring +hibernate 整合应用实现用户登陆。

    通过以上步骤,我们可以构建一个完整的Struts2+Spring+Hibernate整合应用,实现用户登录、注册、修改和删除等功能。这种架构在大型企业级应用中很常见,因为它提供了良好的分层设计,提高了代码复用性和可维护性。...

    sitemesh+ spring2 + struts2 + hibernate 的 demo

    在Java Web开发领域,Spring、Struts2和Hibernate是三大主流框架,它们各自负责不同的职责:Spring提供依赖注入和面向切面编程,Struts2处理MVC(Model-View-Controller)模式,而Hibernate则作为ORM(对象关系映射...

    struts2.1.6+spring2.0+hibernate3.2常用配置包

    MyEclipse8.0中自带的struts2版本是2.1.6,spring版本有2.0,2.5的,hibernate版本较多些至3.2,首先选版本就选择最优的,struts2没的选只有2.1.6版的,所以先导入struts2支持,然后是spring选的是2.0,问题就出在...

    Struts2+Spring2+Hibernate3

    Struts2、Spring和Hibernate是Java Web开发中的三大主流框架,它们各司其职,共同构建了一个高效、灵活的企业级应用开发环境。SSH框架整合,是将这三个框架的优势结合在一起,形成一个强大的后端开发解决方案。 ...

    Struts2.0+Hibernate+Spring注册登录系统

    Struts2.0+Hibernate+Spring是一个经典的Java Web开发技术栈,这一体系结构被广泛应用于构建企业级的Web应用程序,尤其是那些需要高效数据管理、强大业务逻辑和灵活控制层的系统。在这个“Struts2.0+Hibernate+...

    spring+struts2+ibatis整合

    在IT行业中,Spring、Struts2和iBatis是三个非常重要的开源框架,它们分别在控制层、表现层和数据访问层发挥着关键作用。整合这三个框架可以构建出高效、可维护的企业级Web应用。接下来,我们将深入探讨这三个框架的...

    开发者突击:Java Web主流框架整合开发(第2版)Part1

    《开发者突击:Java Web主流框架整合开发(第2版)(含CD光盘1张)》是畅销书《开发者突击:Java Web主流框架整合开发(J2EE+Struts+ Hibernate+Spring)》的第2版,全面地讲解了Java Web开发中的流行技术和软件架构,...

    基于maven3开发babasport源码(更新到38讲)

    \babasportrefactoring\babasportcompact 为清理了非必要测试的子model2,Spring3.05 + Strtus2 + JPA(Hibernate) + Sitemesh ,同步更新到32讲; \babasportrefactoring\babasport1-30 为子model1,Spring3.05 + ...

    [Struts 2权威指南--基于WebWork核心的MVC开发(高清完整版) 1/12

    第10章 Struts 2的标签库,第11章 Struts 2的Ajax支持,第12章 使用FreeMarker充当表现层,第13章 整合Spring,第14章 整合JSF,第15章 整合SiteMesh,第16章 整合JasperReports,第17章 整合JFreeChart,第18章 ...

    Struts2.0 与 sitemesh的例子

    在Struts2中,Action类是处理用户请求的核心,每个Action对应一个URL,负责处理请求并返回结果。 接下来,我们看看Sitemesh。Sitemesh的主要作用是统一网页的头部、底部、侧边栏等元素,使整个网站具有统一的外观和...

    ssh2开发框架源码

    SSH2开发框架是Java Web开发中的一个经典组合,由Struts2、Spring和Hibernate三个主要组件构成,再加上Sitemesh和JUnit,形成了一个强大的、全面的后端开发环境。下面将详细阐述这些技术及其在项目中的作用。 1. **...

    struts2参考文档(word版)

    Struts2 是一个基于 Model-View-Controller (MVC) 设计模式的开源Java Web框架,它被广泛用于构建企业级Web应用程序。本参考文档详细介绍了Struts2框架的各个方面,帮助初学者全面理解并掌握这个强大的开发工具。 ...

    原创struts2讲义2.pdf

    OGNL标签是Struts2标签库中的一个重要组成部分,它们允许开发者在JSP页面中直接使用OGNL表达式进行数据访问和处理。 ##### 5.3 功能性标签详解 除了OGNL标签外,Struts2还提供了许多功能性标签,如append、...

Global site tag (gtag.js) - Google Analytics