求一个SSHlayabox项目源码的源码

求推荐几个SSH或者springMVC的实例项目源码下载
<a data-traceid="question_detail_above_text_l&&
求推荐几个SSH+mysql(不一定SSH俱全,也不一定mysql)或者springMVC的实例项目源码下载,想学习下...
SHOPXX,JEECMS
--- 共有 1 条评论 ---
谢谢分享,先拿JEECMS瞅瞅...
去代码分享里面找找..&
不过建议你先学习基础的 jdbc . + servlet 这种架构来做 .. 然后改为ssh 比较2中的不同点.
方便加深学习也能够加深理解ssh之类的框架.
struts 之流基本上是基于filter &过滤url地址后进行的种种封装. & 配置之类的是为了方便找寻到你自己写的java class 现在的web框架之流基本上不会脱离这种设计的思路.. 只要他兼容servlet
spring 是一个超级容器. 帮你组织对象之类. 方便解耦对象之间的依赖关系. 抽象重用的业务规则.
其实他的最高境界是你用不用都感觉不出来. &不过官方衍生了许多项目,导致项目太大了.现在分开了许多模块.&
推荐学习spring. 里面的东西太多了.有点博大精深的感觉.各个方面都有涉及. 而且源码也比较容易看懂.
--- 共有 1 条评论 ---
springmvc demo实例教程源代码下载:
--- 共有 1 条评论 ---
我去,两年前的帖子你都找到了,这个帖子我都不认识了....不过还是谢谢啦,亲!ERP项目介绍——适合刚学完SSH的朋友
项目是我学完SSH框架后做的第二个项目练习,第一个是前面介绍的,这个项目的业务逻辑要比JYUOA复杂一下,但是在技术方面有很多使用的是类似的,像什么增删改查功能,还有公共功能抽取什么的。但是也有一些差别,你可以发现完成同一件事情会有不同的方法,通过两个项目的对比,你会觉得有些方法会比较好(没有比较就没有伤害~)。比如说在JYUOA中,是采用注解方式扫描bean和注入依赖,而ERP中是XML配置的方式,这样子一看我觉得用注解的方式比较好。好了,下面就具体来介绍一下这个项目。
ERP(Enterprise Resource Planning)翻译过来就是企业资源计划,ERP 系统包括以下主要功能:供应链管理、销售与市场、分销、客户服务、财务管理、制造管理、库存管理、工厂与设备维护、人力资源、报表、制造执行系统 (Manufacturing Executive System,MES)、工作流服务和企业信息系统等。此外,还包括金融投资管理、质量管理、运输管理、项目管理、法规与标准和过程控制等补充功能。
上面那段是我在百度百科那拷贝过来的,说的很详细,但是我做的这个ERP并没有实现这么多功能,真的要全部实现起来,可能要好几十个人做上一两年呢,在后面我会介绍一下这个项目实现的一些功能。
项目整体架构
一般这个时候就要扯到三层架构和MVC模式了,不管很多人都这两个其实会搞混,说不出个所以然来,这里我强烈建议你去看看。
这个ERP项目就是用到了三层架构和MVC模式了,在之前介绍的JYUOA项目采用的是两层架构,因为它的业务逻辑比较简单,所以直接把业务层和数据访问层整合一起了,但是这个ERP项目的业务逻辑要稍微复杂一点,所以是不可能这样子做的了。
下面是网站的主页
所用框架、技术
Struts2 2.3.7
Hibernate 3.6
Spring 3.2.0
jQuery 1.8.3
jfreechart 1.0.13:图表绘制类库
Jxl:操作excel表格的工具类库
说明:还有jQuery日历插件Calendar.js与jQuery.treeview等小插件。
项目目录结构与包结构
源码文件夹
src:项目源代码
resources:配置文件
test:测试代码
WebContent文件夹下
css:CSS样式文件
images:页面需要的一些图片
js:JavaScript脚本文件
jsps:项目静态文件,你可以访问WebContent下的index2.jsp来浏览项目静态文件
WEB-INF/jsps:jsp页面文件(再创建子文件夹分类存放)
edu.jyu.erp.auth:系统的基础信息模块
edu.jyu.erp.invoice:进销存模块
edu.jyu.erp.util:存放一些工具类和通用的类
上面前两个包的子包是有定义规则,就拿用户模块emp为例,下面是包结构的截图
vo:存放的是实体类和hibernate实体映射文件,还有存放查询条件的实体类
dao:存放的是数据访问层的接口和实现类
business:存放的是业务层的接口和实现类
web:存放的是Action类
其中,类名的规范如下:
实体模型类:模块名Model
查询模型类:模块名QueryModel(按需求定义)
数据层接口:模块名Dao
数据层实现:模块名Impl
业务层接口:模块名Ebi
业务层实现:模块名Ebo
表现层类:模块名Action
关于项目功能,其实有些模块的个别功能我是没有做的,像删除、修改或者说查询等操作,因为整个项目的框架搭建好了,而且都有一定的规则,有些功能完全可以参照其它已经完成的模块,所需要做的就是复制粘贴换名字,这样子的重复编码工作,对于学习来说真的没什么意思。所以如果你发现一个功能没实现,你可以自己去实现一下,因为项目有着严格的命名的规范,你可以很容易地从其它模块的代码找到类似的功能实现。
正因为这个项目有着严格的命名规范,所以你可以使用edu.jyu.erp.util.generator.GeneratorUtil去根据一个模块的实体类去生成它对应的各层代码和配置文件,当时我看到这里的时候,心情是这样子的
部门维护比较简单,以为它只有部门名称和电话两个字段,业务逻辑也不是很复杂,就是在删除部门的时候需要注意不能乱来,如果员工有关联一个部门的话,删除这个部门会出现错误,在查询员工列表的时候,因为在员工表中,关联部门的字段并没有外键约束,只是普通的一个字段,所以删除部门时就算有员工关联着也可以删除。因为在hibernate中部门实体类没有定义员工集合,部门在删除时也没有级联删除员工,所以就出现了这个问题,要解决这个问题我只想到了两种方案,第一种就是部门对员工进行级联删除,即删除部门时把部门下的员工也全部删除,不过这个感觉有点不靠谱;第二种是删除部门的时候,将员工表中关联部门的id置为null,这样子表明这个员工不属于任何部门。
在添加员工的时候要指定部门,部门跟员工是一对多的关系。
部门对应的实体类是edu.jyu.erp.auth.dep.vo.DepModel
员工,同时也是系统的用户,他属于一个部门,可以同时拥有多个角色。
员工对应的实体类是edu.jyu.erp.auth.emp.vo.EmpModel
角色用来关联资源和菜单,一个角色可以关联多个资源和菜单,一个用户如果拥有某个角色那么他就可以操作这个角色关联的资源和菜单。
角色对应的实体类是edu.jyu.erp.auth.role.vo.RoleModel
资源其实就是具体对数据的操作,比如说查看员工列表,添加员工等等,可以给资源一个名和一个action的方法名,来表示代表什么操作。只有定义过的资源(就是资源列表中存在的)才会进行拦截操作,具体的你可以看权限拦截器edu.jyu.erp.util.interceptor.AuthInterceptor
资源对应的实体类是edu.jyu.erp.auth.res.vo.ResModel
这里的菜单就是指网页左侧菜单栏中的菜单,如果一个用户拥有的全部角色中都没有关联某个菜单的话,那么就不会在左侧显示该菜单。
菜单对应的实体类是edu.jyu.erp.auth.menu.vo.MenuModel
 仓库维护
仓库,就是用来存放商品、货物的。
仓库对应的实体类是edu.jyu.erp.invoice.store.vo.StoreModel
供应商,就是供应商品的东东,在添加商品类别和商品的时候需要指定供应商
供应商对应的实体类是edu.jyu.erp.invoice.supplier.vo.SupplierModel
在添加商品的时候,可以让商品属于一个类别,商品类别属于一个供应商,即商品类别和供应商是多对一关系。
商品类别对应的实体类是edu.jyu.erp.invoice.goodstype.vo.GoodsTypeModel
商品与商品类别的关系是多对一,在进行采购的时候,采购的就是商品。
商品对应的实体类是edu.jyu.erp.invoice.goods.vo.GoodsModel
采购商品的时候,就需要下一个订单了,指定采购商品的相关信息
采购订单对应的实体类是edu.jyu.erp.invoice.order.vo.OrderModel
在制定好采购订单后,需要进行审核,其实就是改变采购订单的状态,才能进行下一步运作。
在采购订单审核通过后,就需要进行任务指派了,指派员工去运输商品。一般来说指派的候选人是运输部门中的员工,但是这里的实现的候选人是当前登录用户所在部门的员工,一般也是运输部门的领导才有任务指派的权限。
在这里,就可以对任务进行查询,查看各个任务的信息。
即查询仓库的使用情况
有关的实体类是edu.jyu.erp.invoice.storedetail.vo.StoreDetailModel
即将上面任务指派好后,订单的商品运输回来了,并且在任务查询中对订单结单,那么就可以进行入库了,入库后订单的状态就是结单。
仓库操作明细
就是对仓库操作的记录。
有关的实体类是edu.jyu.erp.invoice.operdetail.vo.OperDetailModel
对订单进行查询,并根据查询出来的数据生成对应的饼图以及Excel文件。
整个项目大概就介绍到这里,现在就来说说怎么在你的机器上跑起来。我在本机运行这个项目的时候,用的JDK版本是1.7,Tomcat版本是8。那么你需要注意了,Spring 4.X才支持JDK 1.8,所以如果你用JDK 1.8的话,可能会出现莫名其妙的问题。
下载这个项目后,先导入erpdb.sql到MySQL中,不用自己创建库,这个sql文件就可以帮你创建库和表,另外还有一些基本数据和测试数据。
下载这个项目的代码,然后在你自己的IDE中创建Web工程,随便起你喜欢的名字,把下载好的代码拷贝到工程的对应位置中。你可以发现我没有上传.project文件,因为我用的是Eclipse,你可能用的是其它工具。我也没有上传.classpath,因为像Eclipse的WebContent到了MyEclipse就是WebRoot,.classpath文件可能会让产生一些让你疑惑的问题,比如说同时出现了WebContent和WebRoot,反正我就被懵过,至于其它的IDE我也没用过了,也不知道会出现什么问题,所以你要记得把src、test还有resources文件夹Build Path为源码目录(Source Folder)。
然后就是部署到你的Web容器中啦,我只试过在在Tomcat 8中部署。
这个项目相比我做的第一个项目JYUOA,业务逻辑要复杂不少,但也让我学到了更多的知识,里面有很多技巧都让我耳目一新,像给某些不易于展示的字段加一个视图值,还有因为有着严格的包名和类名规范,写个代码生成器去根据实体生成代码,实在是能节省不少的时间。当然这个项目的缺点也是一大堆,前台没有对表单进行校验,异常处理也没怎么做好,日志更是没有,还有一些零零散散的功能没有实现。最后需要说的是,这个项目我是学习传智播客的ERP项目的,所以非常感谢传智播客将他们的教学资源分享出来。
国家电力项目实战SSH视频教程(共9天)下载
ERP案例分析
手把手搭建一个完整的SSH项目(适合新手)
Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程
【SSH网上商城项目实战30】项目总结(附源码下载地址)
MyEclispe SSH项目框架搭建
自己用ssh框架写了个小项目中的一些总结
没有更多推荐了,为了账号安全,请及时绑定邮箱和手机
老师,给个ssh项目源码
老师,给个ssh项目源码
写下你的评论...
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11博客访问: 9500
博文数量: 1
博客积分: 0
博客等级: 民兵
技术积分: 10
注册时间:
分类: Java 11:10:00
开发快报:&新增&即时通讯功能&&(java&WebSocket 通信技术) &下面截图
-------------------------------------------------------------------------------------------------------------------------
A&代码生成器(开发利器); &B&阿里数据库连接池C&安全权限框架shiro&;
D&ehcache 自定义二级缓存; E&微信接口开发(2.5版本新增)(后续会加入Activiti5 工作流&)
系统为主流的&springmvc+mybaits 3.2&版本 ,有maven版本和非maven版本&&jdk 1.6 1.7 1.8 &tomcat 6 7 8&
&1. 有 oracle 、msyql、spring3.0、spring4.0 &一共 5套版本全部提供没有打jar没有加密的源代码(最下面截图2.5版本)
&2. 支持APP手机应用(android和ios)接口(restcontroller,&&@ResponseBody) ,传输验证可用 shiro 的 MD5、SHA 等加密
&3. 全新高大尚HTML5+css3.0+bootstrap响应式开发界面UI,( 手机 PC 平板 截图在下面)、前沿. &spring&restful&风格
&4. 框架搭建完善,在此基础上做过很多项目,身经百战,支持大并发、分布式,程序运行稳定。
&5. 基础功能已经完善,此为框架平台,文档、注释齐全,提供技术支持,二次开发效率高
&6. 集成代码生成器,将大大提高开发效率,从此不再当码农,不再写搬砖代码,生成的模块直接可以运行
&7. 增删改查的处理类,service层,mybatis的xml,SQL( mysql & 和oracle)脚本, & jsp页面 将瞬间生成
&8. 数据库连接池 &阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势
&9. 加入安全框架 shiro ,更安全,更可靠
&10.加入tab标签页面功能,标签自由切换,不重复操作数据库
&11.在此基础上可开发各种系统软件(OA、ERP、CRM ,医疗管理、金融、网站后台、APP后台等等
&-------------------------------------------------------------------------------------------------------------------------
1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。
2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除
3. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料
4. 菜单管理:增删改查菜单 ztree(自定义菜单)业务菜单和系统菜单分离
5. 数据字典:无限级别,支持多级别无限分类。内设编号,排序等
6. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,微信配置
7. 代码生成:打开代码生成器模块 & &&
8. 图库管理:对批量上传的图片统一管理&
9. 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等
10. 接口测试:POST or GET 方式检测系统接口,参数加密,json返回结果,计算服务器响应时间
11. 发送邮件:单发,群发邮件 & &
12. 置二维码:生成 or &解析二维码 & &&
13.地图工具:经纬度操作
14.即时通讯:打开即时聊天窗口
&-------------------------------------------------------------------------------------------------------------------------
菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同
按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单
支持多用户分权限管理后台,& 权限具体到按钮
&-------------------------------------------------------------------------------------------------------------------------
信息模块(小项目代码中)
新闻管理:新闻的维护、发布、权重排序等&采用百度ueditor富文本框
公告管理:公告的维护、发布
广告管理:广告的维护、发布,状态维护,上传广告图片
友情链接:友情链接的维护、状态维护
特别推荐:特别推荐、状态维护
关注回复:微信用户关注公众号回复
文本回复:匹配关键词进行文本回复
图文回复:匹配关键词进行图文回复
应用命令:匹配关键词进行命令操作,例如微信发送命令,执行服务器重启、关机、锁定等操作
-------------------------------------------------------------------------------------------------------------------------
1. 导出 导入 excel 文件
2 &导出word文件
3. IO 流上传下载文件
4. 群发邮件,可以发html、纯文本格式,可以发给任意邮箱(实现批量发送广告邮件)
5. 群发or单独 发送短信,支持两种第三方短信商接口
6. spring & aop &事物处理
7. 代码生成器 (freemarker), 代码 zip 压缩打包
8. MD5加密 SHA加密(登录密码用此加密)
9. 数据库连接池 &阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势,支持并发
10.加入安全框架 shiro (登录授权)(session管理)
11.根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名)
12.app接口(支持与其它语言数据交互)
12.极光推送 (推送给APP及时消息,APP不启动也能收到)
14.微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序
15.java&Quartz&定时器 (定时执行某程序,精确到秒,可设置周期)
16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4对话框
17.新增Lucene全文检索
18.Base64传输图片
19.图片加水印(图片水印,文字水印)
20.生成 or &解析 二维码
21.HTML5 + JAVAEE &WebSocket 通信技术
22.批量异步上传图片,可预览,有进度条,支持拖拽上传(百度webuploader )。列表动态滑动放大展示。
23.ehcache 自定义二级缓存 ,选择缓存存放目录,处理并发,增加系统性能
24.服务器内部GET POST 请求
25.uploadify 上传插件,单条、批量上传,带进度条,异步,图片、视频, 其它文件格式均可上传
26.地图选点获取经纬度坐标,根据俩经纬度计算距离
-------------------------------------------------------------------------------------------------------------------------
代码生成器
【送此框架小项目代码】
阅读(8410) | 评论(0) | 转发(0) |
上一篇:没有了
下一篇:没有了
给主人留下些什么吧!~~
请登录后评论。欢迎访问我的个人网站==》
  整理一下从前写的SSH框架的例子,供新人学习,使用到了注解的方式.
  源码和数据库文件在百度网盘:  提取码:br27
  对新同学的建议:最好的学习方法是自己手动敲一遍,切不可看过别人写的,就觉得自己会做了
  1、首先将项目mywork3.rar解压,导入到myeclipse中,注意修改applicationContext.xml 中用户名、密码,jdk使用1.6以上的就可以。
  解压后其目录结构如下:
  2、在mysql中新建数据库mydb
  3、导入SQL文件 user.sql
  4、启动项目,输入http://localhost:8080/mywork3/ 即可打开页面
1 &?xml version="1.0" encoding="UTF-8"?&
2 &web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"&
&welcome-file-list&
&welcome-file&index.jsp&/welcome-file&
&/welcome-file-list&
&!-- 用来定位Spring XML文件的上下文位置 --&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath:applicationContext.xml&/param-value&
&/context-param&
&!-- spring监听 --&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&!-- 过滤器将 Hibernate Session 绑定到请求线程中,它将自动被 Spring 的事务管理器探测到 --&
&filter-name&openSessionInViewFilter&/filter-name&
&filter-class&org.springframework.orm.hibernate3.support.OpenSessionInViewFilter&/filter-class&
&init-param&
&param-name&singleSession&/param-name&
&param-value&false&/param-value&
&/init-param&
&filter-mapping&
&filter-name&openSessionInViewFilter&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
&filter-name&struts2&/filter-name&
&filter-class&org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter&/filter-class&
&filter-mapping&
&filter-name&struts2&/filter-name&
&url-pattern&/*&/url-pattern&
&/filter-mapping&
39 &/web-app&
&applicationContext.xml
1 &?xml version="1.0" encoding="UTF-8"?&
2 &beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"&
&!-- 用注解方法注入bean 上边schemaLocation的三条语句顺序很重要,否则报错 --&
&context:annotation-config /&
&context:component-scan base-package="com" /&
&!-- 数据库连接池 --&
&bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"&
&property name="driverClassName" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF-8" /&
&property name="username" value="root" /&
&property name="password" value="123456" /&
&!-- 配置sessionFactory ,数据库配置在hibernate.cfg.xml中--&
&!--LocalSessionFactoryBean 加载bean方式 &mapping resource="com/model/User.hbm.xml"/&
AnnotationSessionFactoryBean 加载bean方式 &mapping class="com.model.User"/& ,它主要功能是取消了hbm.xml文件
&bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&
&property name="dataSource" ref="dataSource" /&
&!-- 配置实体描述文件 --&
&property name="mappingResources"&
&value&com/model/User.hbm.xml&/value&
&/property&
&!--扫描com.cuangwu包下以及子包种有 @Service @Controller @Repository @Component
注解的类,一旦发现,则将其纳入到spring容器中管理
此spring.jar必须是 Spring2.5以上版本的,因为,Spring2.5之前org.springframework.orm.hibernate3.LocalSessionFactoryBean类中,
并没有 packageToScan 这个属性,只有mappingResuorces这个属性。而packageToScan这个属性正是映射包中的类,而mappingResuorces只是映射某个文件。--&
&!-- &property name="packagesToScan" & &list& &value&com.model&/value&
&/list& &/property& --&
&property name="hibernateProperties"&
&prop key="hibernate.format_sql"&true&/prop&
&prop key="hibernate.hbn2dd1.auto"&update&/prop&
&prop key="hibernate.dialect"&org.hibernate.dialect.MySQLDialect&/prop&
&/property&
&bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"&
&property name="sessionFactory" ref="sessionFactory" /&
&!-- 配置事务管理器 --&
&bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"&
&property name="sessionFactory" ref="sessionFactory" /&
&tx:advice id="txAdvice" transaction-manager="transactionManager"&
&tx:attributes&
&tx:method name="find*" read-only="true" /&
&tx:method name="add*" propagation="REQUIRED" /&
&tx:method name="delete*" propagation="REQUIRED" /&
&tx:method name="update*" propagation="REQUIRED" /&
&/tx:attributes&
&/tx:advice&
&!-- aop代理设置--&
&aop:config&
&aop:pointcut expression="execution(public * com.service..*.*(..))"
id="myPointcut" /&
&aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" /&
&/aop:config&
76 &/beans&
&struts.xml
1 &?xml version="1.0" encoding="UTF-8" ?&
2 &!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"&
4 &struts&
&constant name="struts.i18n.encoding" value="UTF-8" /&
&package name="struts2" extends="struts-default" namespace="/"&
&!-- 配置action当与spring整合,class=bean的名称(如果bean没有指定value,则首写字母要小写))
&action name="add" class="userAction" method="addUser" &
&result name="success"&success.jsp&/result&
&result name="error"&fail.jsp&/result&
&action name="query" class="userAction" method="queryUser"&
&result name="success"&index.jsp&/result&
&action name="delete" class="userAction" method="deleteUser"&
&result name="success"&success.jsp&/result&
&result name="error"&fail.jsp&/result&
&action name="edit" class="userAction" method="editUser"&
&result name="editUser"&editUser.jsp&/result&
&result name="success"&success.jsp&/result&
&/package&
24 &/struts&
&com.action.UserAction.java
1 package com.
3 import java.util.L
4 import javax.annotation.R
6 import org.apache.struts2.ServletActionC
7 import org.springframework.beans.factory.annotation.A
8 import org.springframework.context.annotation.S
9 import org.springframework.stereotype.C
10 import com.model.U
11 import com.opensymphony.xwork2.ActionS
12 import com.service.UserS
14 @Component("userAction")
15 @Scope("prototype")
16 public class UserAction extends ActionSupport{
private static final long serialVersionUID = 1L;
@Autowired
private UserService userS
private String searchT
private List&User&
public User getUser() {
public void setUser(User user) {
this.user =
public UserService getUserService() {
return userS
public void setUserService(UserService userService) {
this.userService = userS
public String addUser(){
if(userService.exits(user.getUsername())){
return ERROR;
userService.save(user);
return SUCCESS;
public String queryUser(){
searchText = getParam("queryText");
users = userService.queryUsers(searchText);
return SUCCESS;
public String editUser(){
Integer param = Integer.parseInt(getParam("param"));
if(param == 0){
Integer id = Integer.parseInt(getParam("id"));
user = userService.getUser( id);
return "editUser";
}else if(param == 1){
userService.modifyUser(user);
} catch (Exception e) {
e.printStackTrace();
return SUCCESS;
public String deleteUser(){
Integer param = Integer.parseInt(getParam("id"));
userService.deleteUser(param);
} catch (Exception e) {
e.printStackTrace();
return queryUser() ;
public String getSearchText() {
return searchT
public void setSearchText(String searchText) {
this.searchText = searchT
protected String getParam(String key){
return ServletActionContext.getRequest().getParameter(key);
public List&User& getUsers() {
public void setUsers(List&User& users) {
this.users =
&com.dao.UserDao.java
1 package com.
3 import java.util.L
4 import javax.annotation.R
5 import org.springframework.orm.hibernate3.HibernateT
6 import org.springframework.stereotype.C
7 import com.model.U
9 @Component
10 public class UserDAO {
private HibernateTemplate hibernateT
public HibernateTemplate getHibernateTemplate() {
return hibernateT
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateT
public void save(User user){
hibernateTemplate.save(user);
public void update(User user){
hibernateTemplate.update(user);
public void delete(Integer id){
User user=getUser(id);
hibernateTemplate.delete(user);
public User getUser(Integer id){
return (User)this.hibernateTemplate.load(User.class,id);
public List&User& findByUsername(String username){
return (List&User&) hibernateTemplate.find("from User u where u.username = ?",username);
public List&User& queryByUsername(String username){
return (List&User&) hibernateTemplate.find("from User u where u.username like ?","%"+username+"%");
public List&User& findAllUsers(){
return this.getHibernateTemplate().find("from User order by id");
&com.model.User.java
1 package com.
3 import java.io.S
5 public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int
* 用户密码
* 用户信息
public int getId() {
public void setId(int id) {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getUserpassword() {
public void setUserpassword(String userpassword) {
this.userpassword =
public String getUsermessage() {
public void setUsermessage(String usermessage) {
this.usermessage =
public static long getSerialversionuid() {
return serialVersionUID;
&com.model.User.hbm.xml
1 &?xml version="1.0" encoding="utf-8"?&
2 &!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"&
5 &hibernate-mapping&
&class name="com.model.User" table="user" catalog="mydb"&
&id name="id" type="java.lang.Integer"&
&column name="id" /&
&generator class="assigned"&&/generator&
&property name="username" type="java.lang.String"&
&column name="username" length="30" not-null="true" unique="true"/&
&/property&
&property name="userpassword" type="java.lang.String"&
&column name="userpassword" length="30" not-null="true" /&
&/property&
&property name="usermessage" type="java.lang.String"&
&column name="usermessage" length="30" /&
&/property&
21 &/hibernate-mapping&
&com.service.UserService.java
1 package com.
2 import java.util.L
4 import com.model.U
6 public interface UserService {
* 判断用户是否存在
public boolean exits(String username);
* 保存用户
public void save(User user);
* 修改用户
public void modifyUser(User user);
* 删除用户
public void deleteUser(Integer id);
* 获取指定id用户
public User getUser(Integer id);
* 获取用户列表
public List&User& queryUsers(String username);
&com.service.UserServiceImp.java
1 package com.
3 import java.util.L
5 import org.springframework.beans.factory.annotation.A
6 import org.springframework.stereotype.S
7 import org.springframework.transaction.annotation.T
8 import com.dao.UserDAO;
9 import com.model.U
11 @Service("userService")
12 public class UserServiceImp implements UserService {
@Autowired
private UserDAO userDAO;
public boolean exits(String username){
List&User& userList = userDAO.findByUsername(username);
if(userList.size()&0)
return true;
return false;
public List&User& queryUsers(String username){
if(username == null || "".equals(username))
return userDAO.findAllUsers();
else return userDAO.queryByUsername(username);
public User getUser(Integer id){
return userDAO.getUser(id);
@Transactional
public void save(User user){
userDAO.save(user);
@Transactional
public void modifyUser(User user){
userDAO.update(user);
@Transactional
public void deleteUser(Integer id){
userDAO.delete(id);
&com.util.HibernateUtil.java
1 package com.
3 import org.hibernate.SessionF
4 import org.hibernate.cfg.C
6 public class HibernateUtil {
private static SessionF
SessionFactory sf = new Configuration().configure().buildSessionFactory();
&editUser.jsp
1 &%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
2 &%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&
4 String path = request.getContextPath();
5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
8 &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&base href="&%=basePath%&"&
&title&SSH&/title&
&meta http-equiv="pragma" content="no-cache"&
&meta http-equiv="cache-control" content="no-cache"&
&meta http-equiv="expires" content="0"&
&meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
&meta http-equiv="description" content="SSH"&
&form action="edit.action" method="get"&
ID:&input type="text" name="user.id" value="${user.id}" readonly="readonly"&&br/&
UserName:&input type="text" name="user.username" value="${user.username}"&&br/&
UserPassword:&input type="password" name="user.userpassword" value="${user.userpassword}"&&br/&
UserMessage:&input type="text" name="user.usermessage" value="${user.usermessage}"&&br/&
&input type="hidden" name="param" value="1"/&
&input type="submit" value="提交"&
&input type="reset" value="重置"&
34 &/html&
1 &%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
9 &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
12 &base href="&%=basePath%&"&
14 &title&fail&/title&
15 &meta http-equiv="pragma" content="no-cache"&
16 &meta http-equiv="cache-control" content="no-cache"&
17 &meta http-equiv="expires" content="0"&
18 &meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
19 &meta http-equiv="description" content="fail"&
21 &/head&
&div style=""&fail&/div&&br/&
UserName不能相同
&a href="query.action?queryText="&返回主页&/a&
27 &/body&
28 &/html&
&index.jsp
1 &%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
2 &%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&
4 String path = request.getContextPath();
5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
8 &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
11 &base href="&%=basePath%&"&
13 &title&SSH&/title&
14 &meta http-equiv="pragma" content="no-cache"&
15 &meta http-equiv="cache-control" content="no-cache"&
16 &meta http-equiv="expires" content="0"&
17 &meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
18 &meta http-equiv="description" content="SSH"&
20 &/head&
添加user,如果姓名没有冲突,那么就添加到数据库,如果姓名冲突了就不能添加,返回失败页面
&form action="add.action" method="get"&
UserName:&input type="text" name="user.username"&&br /&
UserPassword:&input type="password" name="user.userpassword"&&br /&
UserMessage:&input type="text" name="user.usermessage"&&br /&
&input type="submit" value="提交"& &input type="reset"
value="重置"&
根据姓名查询,若不输入,则查询全部
&form action="query.action" method="post"&
UserName: &input type="text" name="queryText" value="${searchText }" /&
&input type="submit" value="查询" /&
&table width="70%" border="1px" align="center" cellpadding="0"
cellspacing="0"&
&tr bgcolor="#ff0"&
&th width="25%"&编号&/th&
&th width="25%"&姓名&/th&
&th width="25%"&信息&/th&
&th width="25%"&操作&/th&
&c:forEach var="user" items="${users }"&
&td&${user.id}&/td&
&td&${user.username}&/td&
&td&${user.usermessage}&/td&
&td&&a href="edit.action?param=0&id=${user.id}"&编辑&/a& &a
href="delete.action?id=${user.id}"&删除&/a&&/td&
&/c:forEach&
60 &/body&
61 &/html&
&success.jsp
1 &%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&
2 &%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&
4 String path = request.getContextPath();
5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
8 &!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
11 &base href="&%=basePath%&"&
13 &title&SSH&/title&
14 &meta http-equiv="pragma" content="no-cache"&
15 &meta http-equiv="cache-control" content="no-cache"&
16 &meta http-equiv="expires" content="0"&
17 &meta http-equiv="keywords" content="keyword1,keyword2,keyword3"&
18 &meta http-equiv="description" content="SSH"&
20 &/head&
添加user,如果姓名没有冲突,那么就添加到数据库,如果姓名冲突了就不能添加,返回失败页面
&form action="add.action" method="get"&
UserName:&input type="text" name="user.username"&&br /&
UserPassword:&input type="password" name="user.userpassword"&&br /&
UserMessage:&input type="text" name="user.usermessage"&&br /&
&input type="submit" value="提交"& &input type="reset"
value="重置"&
根据姓名查询,若不输入,则查询全部
&form action="query.action" method="post"&
UserName: &input type="text" name="queryText" value="${searchText }" /&
&input type="submit" value="查询" /&
&table width="70%" border="1px" align="center" cellpadding="0"
cellspacing="0"&
&tr bgcolor="#ff0"&
&th width="25%"&编号&/th&
&th width="25%"&姓名&/th&
&th width="25%"&信息&/th&
&th width="25%"&操作&/th&
&c:forEach var="user" items="${users }"&
&td&${user.id}&/td&
&td&${user.username}&/td&
&td&${user.usermessage}&/td&
&td&&a href="edit.action?param=0&id=${user.id}"&编辑&/a& &a
href="delete.action?id=${user.id}"&删除&/a&&/td&
&/c:forEach&
60 &/body&
61 &/html&
原创文章,欢迎转载,转载请注明出处
阅读(...) 评论()

我要回帖

更多关于 javaweb完整项目源码 的文章

 

随机推荐