前言:直接从网上荡下DWZ的dwz4j企业级Java Web快速开发框架(Mybatis + SpringMVC) + jUI整合应用使用的话,里面的一些内容比较冗余,另外里面缺少权限和security,以及对postgre的数据库使用demo,而最近项目中需要开发Java Web的项目,我就花了几天的时间制作和部署了初始化系统,完成了login的登录,同时对用户登录和session过期进行安全验证,同时将原有的mybaits改造成了postgre,另外增加了权限的使用方法,由于原来的DWZ的列表增删改查、分页并不能直接使用,那么后来又新增了一个钢材厚度维护的列表供后续开发使用。
成果展示:
上图展示了一部分的关键页面,而下面则从代码架构角度分析这次改造DWZ的关键点以及使用DWZ注意的细节
1.login切入画面
对于刚上手的我,在对login画面进行改造的时候花费了不少时间,因为dwz大多使用了配置和文件套用的模式进行页面显示。那么改造login的时候,我们需要注意什么呢
上图中选中的两个文件为前端的login改造页面,替换成你需要的界面就好了,而后台的login切入点为下图所示
而在进行登录验证的地方请注意
// 对登录用户进行安全验证 Authentication authentication = myAuthenticationManager .authenticate(new UsernamePasswordAuthenticationToken(username, password)); SecurityContext securityContext = SecurityContextHolder.getContext(); securityContext.setAuthentication(authentication); HttpSession session = request.getSession(true); session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext); // 当验证都通过后,把用户信息放在session里 request.getSession().setAttribute(Constants.AUTHENTICATION_KEY, user);
以上代码中进行登录验证的时候,会关联到下图中的几个文件,如果你需要改用户权限和安全登录的代码时,请注意
在登录验证通过后,会加载会员的权限设置,见以下代码
package dwz.web.management; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import dwz.framework.user.ResourceServiceMgr; import dwz.framework.user.User; import dwz.framework.user.UserServiceMgr; import dwz.persistence.beans.SysResource; import dwz.web.BaseController; @Controller("management.indexController") @RequestMapping("/management") public class IndexController extends BaseController { @Autowired private UserServiceMgr userMgr; @Autowired private ResourceServiceMgr resourcesDao; @RequestMapping("") public String index(Model model) { model.addAttribute("now", new Date()); UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); User contextUser = userMgr.getUserByUsername(userDetails.getUsername()); model.addAttribute("contextUser", contextUser); List<SysResource> resources = resourcesDao.getResourcesByUserName(contextUser.getUsername()); model.addAttribute("resources", resources); return "/management/index"; } }
以上代码会加载登录用户的权限资源和用户登录信息,然后跳转到
该文件中会加载登录用户的权限页面,见下面的代码
<c:forEach items="${resources}" var="keyzero"> <c:if test="${keyzero.level eq 1}"> <div class="accordionHeader"> <h2>${keyzero.remark}</h2> </div> <div class="accordionContent"> <ul class="tree treeFolder"> <c:forEach items="${resources}" var="key" varStatus="stut"> <c:if test="${key.level eq 2}"> <li> <a>${key.remark}</a> <ul id="child${stut.index}"> <c:forEach items="${resources}" var="k"> <c:if test="${k.pid eq key.id}"> <li><a href="<c:url value='${k.sn}'/>" target="navTab" rel="plateNav">${k.remark}</a></li> </c:if> </c:forEach> </ul> </li> </c:if> </c:forEach> </ul> </div> </c:if> </c:forEach>
同时该文件的靠底部的代码中显示了欢迎信息,而关联的数据库是sys_user表中。
然后还需要注意对URL进行安全验证,可以查看下图中选中的文件内容,该文件中写了很多注释进行说明,该权限验证通过另外一位同仁的demo中改造而来,非常感谢!
以上就是登录验证的整个过程。
2.数据库从mysql改造到postgre,当然首先先安装好postgre就好了,然后把sql文件导入,由于整个项目比较大,我会放在CSDN的资源库中供大家下载,不过会收取一部分下载积分,为了赚积分获取别人的资源,呵呵。
以上文件中需要改造成postgre支持
<property name="dialectClass" value="dwz.dal.mybatis.dialect.PostgreSQLDialect"/>
然后改造jdbc.properties文件,里面使用以下内容
#postgre jdbc.driverClassName=org.postgresql.Driver jdbc.url=jdbc:postgresql://127.0.0.1:5432/starxxxx?useUnicode=true&characterEncoding=UTF-8 jdbc.username= jdbc.password= #mysql #jdbc.driverClassName=com.mysql.jdbc.Driver #jdbc.url=jdbc:mysql://127.0.0.1:3306/starxxxx?useUnicode=true&characterEncoding=UTF-8 #jdbc.username= #jdbc.password= dbcp.maxActive=50 dbcp.maxIdle=200
另外postgre的表字段需要时小写
数据库改造到此为止。
3.列表的增删改查和分页,DWZ中原有的增删改查和分页有问题,我已经做了修改,下面列出一些注意点,如果你还需要再改造,请注意
以上文件中写了一个列表的demo,我把需要注意的代码列在下面,混在了一起,请注意区分
<!-- 该处为分页的form提交单,必须 --> <form id="pagerForm" method="post" action="<c:url value='/management/steelstandard/thickness/platelist/'/>"> <input type="hidden" name="pageNum" value="1" /> <input type="hidden" name="pageSize" value="${numPerPage}" /> <input type="hidden" name="orderField" value="${param.orderField}" /> <input type="hidden" name="orderDirection" value="${param.orderDirection}" /> </form> <!-- 字段排序必须 --> <th width="120px" orderField="mill_no" class="${param.orderField eq 'mill_no' ? param.orderDirection : ''}">钢厂</th> <th width="100px" orderField="prod_no" class="${param.orderField eq 'prod_no' ? param.orderDirection : ''}">品种</th> <!-- 分页必须 --> <c:set var="targetType" value="${empty param.targetType ? 'navTab' : param.targetType}"/> <div class="panelBar"> <div class="pages"> <span>显示</span> <select name="pageSize" onchange="dwzPageBreak({targetType:'${targetType}',data:{numPerPage:this.value}})"> <option value="1" selected>20</option> <option value="2">50</option> <option value="3">100</option> <option value="4">200</option> </select> <span>条,共 ${vo.totalCount} 条</span> </div> <div class="pagination" targetType="${targetType}" totalCount="${vo.totalCount}" numPerPage="${vo.pageSize}" currentPage="${vo.pageNum}"></div>
该文件中需要注意
/** * 列表查询. * * @param vo 列表分页必须对象 * @param model * @return */ @RequestMapping("/thickness/platelist") public String thicknessplatelist(BaseConditionVO vo, Model model) { // 查询列表结果 List<Steelstandard> steelstandards = steelstandardMgr.getSteelstandards(vo); // 总条数,不能直接从steelstandards取size int totalCount = steelstandardMgr.searchSteelstandardsNum(vo); vo.setTotalCount(totalCount); model.addAttribute("tbpd04s", steelstandards); model.addAttribute("vo", vo); return "/management/steelstandard/thickness/platelist"; }
4.其他的注意点,不知道这个过程中有遗漏了什么内容,有需要的话可以联系
以上文件中国际化了一些web信息和弹出框之类的一些信息,有需要的可以改造成自己的。
<!-- 隐式地向 Spring 容器注册 -->
<context:annotation-config/>
这样就可以在一些路径下通过
总结:改造DWZ是个痛苦的过程,当然还是必须感谢DWZ的开源,给我们带来一些便利,希望通过本篇文章的介绍,在以后的DWZ开发过程中,大家可以有一些借鉴的过程,项目的资源文件我会附在CSND的资源库中http://download.csdn.net/download/qing_gee/7969111。
相关推荐
DWZ框架是一款基于JavaScript的开源前端开发框架,主要用于构建富互联网应用(Rich Internet Applications,简称RIA)。该框架设计目标是简化网页应用的开发流程,提高用户体验,并且具有良好的可扩展性和易用性。...
【标题】:“DWZ框架与ASP.NET MVC3的结合应用” 【内容】 DWZ框架,全称为“Dynamic Web Zone”,是一款基于JavaScript的前端UI框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括表格、...
DWZ框架是一款基于JavaScript和Ajax技术的开源富客户端框架,主要应用于Web应用的前端开发,旨在提高用户体验,简化开发者的工作。DWZ框架以其强大的功能、易用性和丰富的UI组件,深受开发者的喜爱。本教程将深入...
DWZ(Dynamic Web Zone)框架是一款基于jQuery的前端MVC框架,主要应用于构建富互联网应用程序(RIA)。在ASP.NET环境中,DWZ框架可以与后端的.NET技术紧密结合,提供高效、便捷的网页开发解决方案。本篇文章将深入...
DWZ(Dynamic Web Zone)框架是一款基于jQuery的国产Web应用框架,主要应用于快速开发富互联网应用程序(RIA,Rich Internet Applications)。DWZ框架以其强大的功能、易用性和良好的用户体验,深受国内开发者喜爱。...
**DWZ框架C#应用模板**是基于C#编程语言构建的一个高效、易用的Web应用程序开发框架。这个模板集成了流行的JavaScript库,包括JQUERY UI、JQGRID和JQUERY UI,为开发者提供了强大的前端交互能力和数据管理功能。下面...
DWZ框架dwz4j-springmvc dwz-ria-1.4.4 dwz-user-guide.swf DWZ框架使用的实例简单介绍.doc DWZ框架使用手册.pdf
DWZ,全称为“Dynamic Web Zone”,是一款基于Ajax技术的开源JavaScript框架,主要应用于Web前端开发,特别适合构建富互联网应用程序(Rich Internet Applications,RIA)。这个框架由国内开发者设计,旨在简化网页...
DWZ框架使用手册,适合开发人员快速搭建web应用之用,内有非常好的交互性的界面,无刷新自动增加,删除功能,界面友好;
dwz框架实现拦截器 session超时跳转登陆页面 DWZ框架 struts2拦截器 session超时
DWZ(Dynamic Web Zone)框架是一款基于JavaScript和Ajax技术的前端开发框架,专注于提供富互联网应用程序(RIA)的解决方案。DWZ的主要特点是轻量级、高效且易于使用,旨在简化Web应用的界面交互和用户体验设计。它...
**jqGrid和DWZ框架扩展详解** 在Web开发领域,jqGrid和DWZ框架是两个常用的工具,它们分别用于数据展示和页面构建。本篇文章将深入探讨如何在DWZ框架中扩展jqGrid,以及如何利用它们实现JSON数据的初始化加载。 **...
**DWZ框架详解** DWZ,全称是“Design for Web Zen”,是一个基于Ajax技术的开源JavaScript框架,专为Web应用程序设计,旨在提高用户体验和开发效率。DWZ框架结合了前端UI设计和后端交互,提供了丰富的组件和便捷的...
DWZ(Design What You Want)框架是一款基于JavaScript和Ajax技术的开源前端开发框架,主要用于构建富互联网应用程序(RIA)。这个框架结合了优雅的界面设计与强大的功能,为开发者提供了便捷的网页开发工具。同时,...
**DWZ框架控件应用程序详解** DWZ框架是一款流行的JavaScript前端开发框架,专注于构建富交互式的Web应用。它集成了大量的UI控件和实用工具,为开发者提供了便捷的开发环境,使得网页应用的界面设计与功能实现更加...
**DWZ框架详解** DWZ(Dynamic Web Zone)框架是一个基于AJAX技术的开源Web应用框架,主要用于构建富客户端的Web应用。它以其强大的功能、优秀的用户体验和良好的可扩展性,受到了众多开发者们的青睐。本篇文章将...
**DWZ框架详解** DWZ框架,全称为“Design Without ZIndex”,是由国内开发者开发的一款基于AJAX技术的前端UI框架,主要用于构建响应式、易用的Web应用程序。DWZ框架与Struts相结合,可以创建出高效、稳定且用户...
**标题解析:**“给mvc3穿上华丽外衣 dwz框架”这个标题表明我们要讨论的是如何使用DWZ框架来增强ASP.NET MVC3的应用程序界面,使其看起来更加美观和功能丰富。 **描述分析:**描述中提到“mvc3 穿上 华丽外衣 dwz...
DWZ(Design What You Want)是一款基于jQuery的国产富客户端框架,主要针对Web应用的界面设计和交互体验,被称作“jUI”。这个框架旨在简化网页开发过程,提供了一系列组件和工具,使得开发者能够快速构建功能丰富...