Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 基于Spring+JDBC的用户管理系统
【标  题】:基于Spring+JDBC的用户管理系统
【关键字】:Spring+JDBC
【来  源】:http://blog.csdn.net/my37signals/archive/2006/11/15/1385972.aspx

基于Spring+JDBC的用户管理系统

Your Ad Here  
2基于Spring+JDBC用户管理系统
前面章节中为读者讲述了Spring的相关知识点,本章主要为读者讲解如何基于Spring进行Web应用程序开发。通过本章的学习,读者可以掌握DisplayTag、Sitemesh、Log4j、PostgreSQL、ehcache和国际化等的使用。
本章知识点
1.      SiteMesh的使用
2.      DisplayTag
3.      支持多种数据库
4.      国际化的试用
5.      Log4j的使用
6.      集成Spring
7.      JDBC的应用
2.1. Spring框架的特点
Spring Web MVC框架提供了大量独特的功能,包括:
l         清晰的角色划分:控制器(controller)、验证器(validator)、命令对象(command object)、表单对象(form object)、模型对象(model object)、Servlet分发器(DispatcherServlet)、处理器映射(handler mapping)、视图解析器(view resolver)等等。每一个角色都由一个专门的对象来完成。
l         强大而简单的配置:将框架类和应用类都作为JavaBean配置,支持在一个context中引用其他context的中JavaBean,例如,在web控制器中对业务对象和验证器(validator)的引用。
l         可适配、非侵入的controller:你可以根据不同的情况,选择合适的控制器子类(simple型、command型、form型、wizard型、multi-action型或者自定义),而不是从单一控制器(比如Action/ActionForm)继承。
l         可重用的业务代码:你可以使用现有的业务对象作为命令或表单对象,而不需要在类似ActionForm的子类中重复它们的定义。
l         可定制的binding validation:比如将类型不匹配作为应用级的验证错误,这可以保存错误的值。再比如本地化的日期和数字绑定等等。在其他某些框架中,你只能使用字符串表单对象,需要手动解析它并转换到业务对象。
l         可定制的handler mappingview resolverSpring提供从最简单的的URL映射,到复杂的、专用的定制策略。某些MVC框架强制开发人员使用某一种方法,与之相比,Spring更加灵活。
l         可定制的本地化和主题(theme)解析:支持在JSP中可选择使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。
l         简单而强大的标签库(Spring Tag Library):这个库支持诸如数据绑定和主题之类的功能。它提供在标记方面的最大灵活性。
l         新增加的表单标签库:在Spring2.0中刚刚引入的表单标签库,使得在JSP中编写表单更加容易。
l         Spring Bean的生命周期可以被限制在当前的HTTP Request或者HTTP Session。准确的说,这个功能属于Sping MVC用到的WebApplicationContext 容器,而不属于Spring MVC框架本身。
 
本系统以Spring+JDBC来实现用户管理系统,采用模块化设计,包含功能:
2.1.1.1 用户管理
用户管理功能实现了管理用户管理系统用户功能,如用户的增加、修改、删除、按各种方式提供的查询。
2.2 系统界面预览
通过对系统架构和功能的理解,下面为读者提供本系统的相关界面:
2.2.1首页
用户管理的首页,如图2-2所示:
 
2-2 用户管理系统首页
2.2.2用户管理菜单导航栏
单击上图中的用户管理菜单,如图2-3所示的界面:
 
2-3 用户管理菜单导航栏
2.2.3按用户编码查询用户
单击上图中的按用户编码查询用户链接,如图2-4所示的界面:
 
2-4 用户编码查询用户界面
2.2.4增加用户
单击增加用户按钮,如图2-5所示的界面:
 
2-5 增加用户界面
2.2.5编辑用户
选中列表中的用户,如图2-6所示的界面:
 
2-6 编辑用户界面
2.2.6删除用户
选中列表中的用户,单击删除按钮,如图2-7所示的界面:
 
2-7 删除用户界面
2.2.7排序
单击列表中的任何列进行用户数据排序,如图2-7所示的界面:
 
2-7排序
2.2.7分页
单击列表中的任何列进行用户数据排序,如图2-7所示的界面:
 
2-7分页
2.2.7数据导出
单击列表中的任何列进行用户数据排序,如图2-7所示的界面:
 
2-7数据导出
  
 
2.3数据库逻辑结构设计
下面为大家分析数据库逻辑结构设计。
2.3.1用户(app_user)
表2-1所示为用户表,主要存储用户信息
字段
类型名称
是否为空
默认值
描述
Id    
Bigint
 
序号
First_name
Varchar(50)
 
Last_name
Varchar(50)
 
Birthday
timestamp
 
 
出生日期
创建app_user表的SQL如下:
create table app_user (id bigint not null primary key, first_name varchar(50), last_name varchar(50), birthday timestamp);
2.3.2基于PostGreSQL创建用户表
 
2.4工程目录
上面为读者讲述了如果完整开发一个模块的功能,关于本实例的其他功能和实现,读者参考上面部分,自行光盘中所附代码,下面为大家讲述本实例的目录结构,如图2-8所示:
 
2-8 本实例工程目录
其中,
1.settings为工程的默认目录,保存工程中的一些设置信息;
2src为工程的源代码文件目录,其中
a.           com.my37signals为本实例的主要包名;
b.           com.my37signals.dao包中存放所有接口类文件;
c.            com.my37signals.dao.jdbc包中存放所有Spring实现类文件;
d.           com.my37signals.model包中存放模型类文件;
e.           com.my37signals.service包中存放服务类文件;
f.             com.my37signals.service.impl包中存放服务实现类文件;
g.           com.my37signals.web包中存放Spring的控制器类文件;
3WebContent为工程的web内容目录,主要存放JSPLib和相关配置文件,相关文件如下:
a)      404.jsp404错误显示网页;  
b)      dataAccessFailure.jsp ,数据访问失败网页;
c)       error.jsp,错误信息网页;
d)      index.jsp,首页;              
e)      messages.jsp,信息显示网页;           
f)        taglibs.jsp,类库引入文件;            
g)      userForm.jsp,用户表单网页;           
h)      userList.jsp,用户列表网页;
i)        decorators\default.jsp,系统布局控制网页;
j)        scripts下存放系统所需js文件;
k)      images下存放系统所需图片文件;
l)        styles下存放样式表文件;
m)   WEB-INF\web.xmlWeb程序描述符文件;
n)      WEB-INF\action-servlet.xmlSpring的控制配置文件;
o)      WEB-INF\applicationContext-jdbc.xmlSpringJDBC配置文件;
p)      WEB-INF\applicationContext-validation.xmlSpring的客户端检测文件;
q)      WEB-INF\applicationContext.xmlSpring配置文件;
r)        WEB-INF\decorators.xml,程序布局配置文件;
s)      WEB-INF\sitemesh.xmlSitemesh配置文件;
t)       WEB-INF\validation.xml,客户端检测文件;
u)      WEB-INF\validator-rules.xml,客户端检测规则文件。
v)      WEB-INF\Classes下存放程序编译后的类文件;
w)    WEB-INF\lib下存放程序所需类库,如下:
                                     i.              antlr-2.7.6rc1.jar
                                  ii.              asm-1.5.3.jar
                                iii.              cglib-2.1_3.jar
                                iv.              commons-beanutils-1.7.0.jar
                                   v.              commons-collections-3.1.jar
                                vi.              commons-digester-1.5.jar
                              vii.              commons-lang-2.1.jar
                           viii.              commons-logging-1.0.4.jar
                                ix.              commons-validator-1.1.3.jar
                                   x.              displaytag-1.1.jar
                                xi.              dom4j-1.6.1.jar
                              xii.              dwr-1.0.jar
                           xiii.              ehcache-1.1.jar
                            xiv.              geronimo-spec-jta-1.0.1B-rc4.jar
                              xv.              hibernate-3.1.2.jar
                            xvi.              itext-1.3.jar
                         xvii.              jstl-1.1.2.jar
                       xviii.              log4j-1.2.11.jar
                            xix.              postgresql-8.1-404.jdbc3.jar
                              xx.              sitemesh-2.2.1.jar
                            xxi.              spring-1.2.6.jar
                         xxii.              springmodules-validator-0.1.jar
                       xxiii.              standard-1.1.2.jar           
2.5.1使用sitemesh建立复合视图
sitemesh应用Decorator模式,用filter截取requestresponse,把页面组件head,content,banner结合为一个完整的视图。大多数时候,开发人员都是采用JSP提供的include标签在每个jsp页面包含各种header, stylesheet, scripts and footer,繁琐而不容易维护。sitemesh的出现,让开发人员更方便、更快捷建立系统的复合视图。[J1] 
2.5.1.1 Sitemesh简介
    Sitemesh是由一个基于Web页面布局、装饰以及与现存Web应用整合的框架。它能帮助我们在由大量页面构成的项目中创建一致的页面布局和外观,如一致的导航条,一致的banner,一致的版权,等等。它不仅仅能处理动态的内容,如jspphpasp等产生的内容,它也能处理静态的内容,如htm内容,使得它的内容也符合你的页面结构的要求。甚至于它能将HTML文件象include那样将该文件作为一个面板的形式嵌入到别的文件中去。所有的这些,都是GOFDecorator模式的最生动的实现。尽管它是由java语言来实现的,但它能与其他Web应用很好地集成。
2.5.1.2与Strust Tiles比较
  从使用角度来看,Tiles似乎是Sitemesh标签<page:applyDecorator>的一个翻版。其实sitemesh最强的一个特性是sitemeshdecorator模式用在过滤器上。任何需要被装饰的页面都不知道它要被谁装饰,所以它就可以用来装璜来自phpaspCGI等产生的页面了。你可以定义若干个装饰器,根据参数动态地选择装饰器,产生动态的外观以满足你的需求。它也有一套功能强大的属性体系,它能帮助你构建功能强大而灵活的装饰器。相比较而言,在这方面Tiles就逊色许多。
2.5.1.3基本原理
   一个请求到服务器后,如果该请求需要sitemesh装饰,服务器先解释被请求的资源,然后根据配置文件获得用于该请求的装饰器,最后用装饰器装饰被请求资源,将结果一同返回给客户端浏览器。
2.5.1.4 sitemesh的filter配置
为读者简单介绍了sitemesh的相关内容,下面进行相关配置的讲解。
首先,在WEB-INF/web.xml中加入以下filter的定义,代码例如清单2-1所示:
清单2-1 web.xmlsitemeshfilter配置
<filter>
       <filter-name>sitemesh</filter-name>
       <filter-class>
           com.opensymphony.module.sitemesh.filter.PageFilter
       </filter-class>
    </filter>
<filter-mapping>
       <filter-name>sitemesh</filter-name>
       <url-pattern>/*</url-pattern>
       <dispatcher>REQUEST</dispatcher>
       <dispatcher>FORWARD</dispatcher>
    </filter-mapping>
上述代码配置了sitemesh的过滤类com.opensymphony.module.sitemesh.filter.PageFilter,同时定义了REQUESTFORWARD的分发。
2.5.1.5 支持sitemesh运行所需文件
读者访问http://www.opensymphony.com/sitemesh/download.action,下载sitemesh的最新版本2.2.1,将sitemesh-2.2.1.jar复制到jdbc\WebContent\WEB-INF\lib即可。
注意:读者只需下载sitemeshsitemesh-2.2.1.jar即可。
2.5.1.6 装饰器配置decorators.xml
建立WEB-INF/decorators.xml描述各装饰器页面,代码例如2-2清单
清单2-2 HibernateUtil.java
<decorators defaultdir="/decorators">
    <decorator name="default" page="default.jsp">
        <pattern>/*</pattern>
    </decorator>
</decorators>
这里定义了缺省的目录装饰器页面目录decorators,定义了装饰器网页default.jsp
2.5.1.7 sitemesh.xml配置文件的实现
sitemesh.xml为sitemesh的核心配置文件,代码例如清单2-3所示
清单2-3 sitemesh.xml
<sitemesh>
    <property name="decorators-file" value="/WEB-INF/decorators.xml"/>
    <excludes file="${decorators-file}"/>
    <page-parsers>
        <parser default="true"
            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/>
        <parser content-type="text/html"
            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/>
        <parser content-type="text/html;charset=ISO-8859-1"
            class="com.opensymphony.module.sitemesh.parser.HTMLPageParser"/>
    </page-parsers>
 
    <decorator-mappers>
        <mapper class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
            <param name="config" value="${decorators-file}"/>
        </mapper>
    </decorator-mappers>
</sitemesh>
sitemesh.xml定义了以下内容
1.      装饰器文件,如:decorators-file,值为/WEB-INF/decorators.xml
2.      页面解析,如:page-parsers,包括:
a)      default="true",缺省为true,表示所有页面都解析,指向的类为com.opensymphony.module.sitemesh.parser.HTMLPageParser
b)      content-type="text/html",表示content-typetext/html,指向的类为com.opensymphony.module.sitemesh.parser.HTMLPageParser
c)       content-type="text/html;charset=ISO-8859-1",表示content-typetext/html,同时指定charsetISO-8859-1,指向的类为com.opensymphony.module.sitemesh.parser.HTMLPageParser
3.      缺省装饰器映射,如:decorator-mappers,映射类为com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper,参数为${decorators-file},也就是/WEB-INF/decorators.xml
注意:关于sitemesh的配置,上面内容读者完全可以照做,根据实际需要,修改default.jsp的布局即可。

 [J1]这张图需要替换,其中servlet-api.jar不需要
SSO的基本原理:【上一篇】
JfreeChart在suse上weglogic9.2的中文问题解决方案:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 如何学习linux
  • 打造windows XP/2003万能GHOST
  • PHP 5.0 中的对象重载技术研究
  • Mock Objects
  • tsl脚本命令(转贴)
  • 深入Atlas系列:综合示例(1) - 调用服务器端方法时直接获得客户端具体类型
  • 跟踪用户会话
  • 设计,看上去很美
  • HOWTO - Linux VNCserver
  • Web 服务器上慎用杀毒软件
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.