`

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

阅读更多
前段时间用用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐
的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX
控件播放音乐的).刚学的struts2,主要是想练一下.
  • Music1.rar (70 KB)
  • 描述: 源代码
  • 下载次数: 6717
  • 描述: 主页的一个截图
  • 大小: 3.7 MB
分享到:
评论
65 楼 yuzhi2217 2008-10-14  
好东西做个标志先,有时间来看
64 楼 huobao89 2008-08-28  
谢谢你的代码
我是一个初学者 ,没有什么资格说什么.
感谢.
63 楼 hzl1984 2008-08-19  
好东西,一定要好好研究一下。
62 楼 cloud21 2008-08-02  
我正在学习,这个程序,可以看到一个DAO实现类的时候,代码是乱码。
SongDAOImpl.java
麻烦给这个类,完整代码,贴出来 ,谢谢了。
61 楼 cloud21 2008-08-02  
源码有些问题,
麻烦给songDaoImpl
到源码贴出来好吗。
60 楼 upshine86 2008-05-10  
看了.做的挺不错的!
59 楼 yyphzc 2008-05-09  
不过整个工程都没有一条注释啊。。。
这个比较郁闷,万一以后你写了个框架,那下面的实现程序的人要抓狂了
58 楼 yeshucheng 2008-05-08  
总体感觉还行,不过部分代码需要优化为好
1.DAO既然使用泛型,那就干脆点。想想再抽象出一个基类,通过类反射和泛型的特点再优化下
2.Action中看到开关条件(switch case)这个我想还是可以优化点好
57 楼 drinkjava 2008-05-08  
这儿有个好同志: http://www.iteye.com/topic/125465
把他的包加上再下一个sitemesh-2.3.jar就行了
56 楼 lycmlove 2008-04-25  
支持,刚学STRUTS2
55 楼 lchenjay 2008-04-14  
请问 下 你做的时候 用了哪些包?? 谢谢
54 楼 fuliang 2008-04-10  
thelongestday 写道
刚刚开始研究sitemesh,感觉似乎是struts2和sitemesh有冲突.

我这儿没有那个问题,你的那个错误说是${sessionScope.user.userName}的问题,感觉这个没什么问题。
53 楼 fuliang 2008-04-10  
lonelyblue 写道
<一>:
@Override
public List findByName(String name) {
    return getHibernateTemplate().find("from Song s where s.name like '%" + name + "%'");
}

有被SQL注入的可能,所以应该用:
@Override
public List findByName(String name) {
    return getHibernateTemplate().find("from Song s where s.name like ?", "%" + name + "%");
}

或:
@Override
public List findByName(String name) {
    return getHibernateTemplate().findByNamedParam(
               "from Song s where s.name like :theValue", 
               "theValue",  
               "%" + name + "%"
    );
}

<二>:
@Override
public List getBandsByName(String name) {
    return getHibernateTemplate().find("from Band b where b.name = ?", new String[]{name});
}

为什么多创建一个数组?(代码中有很多个地方都用这种方式)只需要:
@Override
public List getBandsByName(String name) {
    return getHibernateTemplate().find("from Band b where b.name = ?", name);
}

谢谢指教,的确有你说的问题。
52 楼 lonelyblue 2008-04-10  
<一>:
@Override
public List findByName(String name) {
    return getHibernateTemplate().find("from Song s where s.name like '%" + name + "%'");
}

有被SQL注入的可能,所以应该用:
@Override
public List findByName(String name) {
    return getHibernateTemplate().find("from Song s where s.name like ?", "%" + name + "%");
}

或:
@Override
public List findByName(String name) {
    return getHibernateTemplate().findByNamedParam(
               "from Song s where s.name like :theValue", 
               "theValue",  
               "%" + name + "%"
    );
}

<二>:
@Override
public List getBandsByName(String name) {
    return getHibernateTemplate().find("from Band b where b.name = ?", new String[]{name});
}

为什么多创建一个数组?(代码中有很多个地方都用这种方式)只需要:
@Override
public List getBandsByName(String name) {
    return getHibernateTemplate().find("from Band b where b.name = ?", name);
}
51 楼 thelongestday 2008-04-10  
刚刚开始研究sitemesh,感觉似乎是struts2和sitemesh有冲突.
50 楼 thelongestday 2008-04-10  
楼主跑了一下你的程序,报一个如下的错误,楼主看看是怎么回事呀?

严重: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /decorators/main.jsp(15,10) According to TLD or attribute directive in tag file, attribute test does not accept any expressions
at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
at org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1172)
at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
at org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
at org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
49 楼 fhjxp 2008-04-07  
fuliang 写道

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



1.替换Dao,是否方便没接口什么事。都得重新实现一个Dao,方法、参数都一样。没有接口情况下我直接替换掉原来的Dao类就可以了。你说以前的名称HibernateDao,现在叫JpaDao,这是你实现设计时用了接口:Dao,我来设计Dao就是一个类,不管用Hibernate还是JPA都叫这样一个Dao类,反正一个系统中没有必要存在两种Dao。对,我这样做要修改java代码,你那样做只需要修改配置文件,但这种高层应用中这个没有多大意义

接口作为契约没错,但是像你做的这种网站,包括很多web项目,这种契约就是一种过渡设计。我质疑就是你这里为什么每个Dao、Service都是一个接口、一个实现类

2.在实际开发中接口不可能一次定义好,通常是,一边开发一般往接口里面添加方法,然后再往实现类里添加方法,因为接口总要添加两次。类中由public、private方法,看到public就知道是要暴露给上层了

3.违反什么原则,说这个没什么意义,归根还是到你说的方便修改、低耦合、契约上面来了


48 楼 lonelydark 2008-03-28  
以灌水的形式项一下`

47 楼 cindy_taozhiang 2008-03-28  

呵呵. 本末倒置了

46 楼 yyjn12 2008-03-17  
tiyi 写道
俺到现在还没搞清楚用sitemesh的好处是什么……


1.增加一点复杂度,使你的网站看起来更牛一些.
2.让除了你之外的其他人维护你做的东西的时候困难一些.当然这不能只靠sitemesh,还需要靠其他的东西.很多,很多.


比如前段时间我看了别人的一个网站的代码,里边用到了以下东西:
spring mvc
spring ioc
hibernate



sitemesh
prototype
buffalo
ajaxanywhere
dwr
ehcache
javabb
OpenVendor
tidy
displaytag

以上只是不完全统计.因为只是粗略看了一眼,看到了有这么多东西.还有些莫名其妙的jar包,不知道是什么东东的

其它的一些js,还用到了什么诸如xhconn,im之类的别人写好的东西,一堆一堆的,有个二十来个js.
还把所有的js写在一个jsp文件中到处被引用.
所有的js文件加起来600多K大.

配置文件一驼一驼的,又是xml又是properties的,又在WEB-INF下又在 classes下的.

结果呢,网站其实功能不多.但是却程序运行不稳定.

相关推荐

    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