`
qing_gee
  • 浏览: 122034 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

改造DWZ框架

阅读更多

前言:直接从网上荡下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";
	}

}

 以上代码会加载登录用户的权限资源和用户登录信息,然后跳转到

路径 写道
WEB-INF\jsp\management\index.jsp

 该文件中会加载登录用户的权限页面,见下面的代码

<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 写道
src\mybatis-configuration.xml

 以上文件中需要改造成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中原有的增删改查和分页有问题,我已经做了修改,下面列出一些注意点,如果你还需要再改造,请注意

路径 写道
WEB-INF\jsp\management\steelstandard\thickness\platelist.jsp

 以上文件中写了一个列表的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>

 

路径 写道
src\dwz\web\management\SteelstandardController.java

 该文件中需要注意

/**
	 * 列表查询.
	 * 
	 * @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信息和弹出框之类的一些信息,有需要的可以改造成自己的。

application-context.xml文件加载安全验证 写道
<context:component-scan base-package="dwz.business.security"/>
<!-- 隐式地向 Spring 容器注册 -->
<context:annotation-config/>

 

WebContent\include.inc.jsp加入了web端的根路径 写道
<c:set var="ctx" value="${pageContext.request.contextPath}" />

 这样就可以在一些路径下通过

WEB-INF\jsp\layout\template2\header.jsp 写道
<div id="logo"><img class="logobg" src="${ctx}/styles/website/${param.template}/themes/${param.theme}/images/sp.gif" width="250" height="60" /></div>

 

总结:改造DWZ是个痛苦的过程,当然还是必须感谢DWZ的开源,给我们带来一些便利,希望通过本篇文章的介绍,在以后的DWZ开发过程中,大家可以有一些借鉴的过程,项目的资源文件我会附在CSND的资源库中http://download.csdn.net/download/qing_gee/7969111

 

 

 

 

  • 描述: 登录页面
  • 大小: 25.5 KB
  • 描述: 欢迎页面
  • 大小: 46.6 KB
  • 描述: 列表增删改查、分页
  • 大小: 22 KB
  • 大小: 11.3 KB
  • 大小: 17 KB
  • 大小: 9.1 KB
  • 大小: 9.4 KB
  • 大小: 5.5 KB
分享到:
评论

相关推荐

    dwz框架及api文档

    DWZ框架是一款基于JavaScript的开源前端开发框架,主要用于构建富互联网应用(Rich Internet Applications,简称RIA)。该框架设计目标是简化网页应用的开发流程,提高用户体验,并且具有良好的可扩展性和易用性。...

    dwz框架 asp.net mvc3

    【标题】:“DWZ框架与ASP.NET MVC3的结合应用” 【内容】 DWZ框架,全称为“Dynamic Web Zone”,是一款基于JavaScript的前端UI框架,主要用于构建富互联网应用程序(RIA)。它提供了丰富的组件库,包括表格、...

    DWZ框架及使用教程

    DWZ框架是一款基于JavaScript和Ajax技术的开源富客户端框架,主要应用于Web应用的前端开发,旨在提高用户体验,简化开发者的工作。DWZ框架以其强大的功能、易用性和丰富的UI组件,深受开发者的喜爱。本教程将深入...

    DWZ框架在ASP.Net中的运用

    DWZ(Dynamic Web Zone)框架是一款基于jQuery的前端MVC框架,主要应用于构建富互联网应用程序(RIA)。在ASP.NET环境中,DWZ框架可以与后端的.NET技术紧密结合,提供高效、便捷的网页开发解决方案。本篇文章将深入...

    DWZ框架的一些用法

    DWZ(Dynamic Web Zone)框架是一款基于jQuery的国产Web应用框架,主要应用于快速开发富互联网应用程序(RIA,Rich Internet Applications)。DWZ框架以其强大的功能、易用性和良好的用户体验,深受国内开发者喜爱。...

    DWZ框架C#應用模板

    **DWZ框架C#应用模板**是基于C#编程语言构建的一个高效、易用的Web应用程序开发框架。这个模板集成了流行的JavaScript库,包括JQUERY UI、JQGRID和JQUERY UI,为开发者提供了强大的前端交互能力和数据管理功能。下面...

    DWZ框架1.4.4以及使用手册,入门指导

    DWZ框架dwz4j-springmvc dwz-ria-1.4.4 dwz-user-guide.swf DWZ框架使用的实例简单介绍.doc DWZ框架使用手册.pdf

    DWZ框架实例

    DWZ,全称为“Dynamic Web Zone”,是一款基于Ajax技术的开源JavaScript框架,主要应用于Web前端开发,特别适合构建富互联网应用程序(Rich Internet Applications,RIA)。这个框架由国内开发者设计,旨在简化网页...

    DWZ框架使用手册

    DWZ框架使用手册,适合开发人员快速搭建web应用之用,内有非常好的交互性的界面,无刷新自动增加,删除功能,界面友好;

    dwz框架实现拦截器 session超时跳转登陆页面

    dwz框架实现拦截器 session超时跳转登陆页面 DWZ框架 struts2拦截器 session超时

    dwz框架实例

    DWZ(Dynamic Web Zone)框架是一款基于JavaScript和Ajax技术的前端开发框架,专注于提供富互联网应用程序(RIA)的解决方案。DWZ的主要特点是轻量级、高效且易于使用,旨在简化Web应用的界面交互和用户体验设计。它...

    jqgird dwz 框架扩展

    **jqGrid和DWZ框架扩展详解** 在Web开发领域,jqGrid和DWZ框架是两个常用的工具,它们分别用于数据展示和页面构建。本篇文章将深入探讨如何在DWZ框架中扩展jqGrid,以及如何利用它们实现JSON数据的初始化加载。 **...

    dwz框架官网实例

    **DWZ框架详解** DWZ,全称是“Design for Web Zen”,是一个基于Ajax技术的开源JavaScript框架,专为Web应用程序设计,旨在提高用户体验和开发效率。DWZ框架结合了前端UI设计和后端交互,提供了丰富的组件和便捷的...

    DWZ框架和手册

    DWZ(Design What You Want)框架是一款基于JavaScript和Ajax技术的开源前端开发框架,主要用于构建富互联网应用程序(RIA)。这个框架结合了优雅的界面设计与强大的功能,为开发者提供了便捷的网页开发工具。同时,...

    DWZ框架控件应用程序

    **DWZ框架控件应用程序详解** DWZ框架是一款流行的JavaScript前端开发框架,专注于构建富交互式的Web应用。它集成了大量的UI控件和实用工具,为开发者提供了便捷的开发环境,使得网页应用的界面设计与功能实现更加...

    dwz框架与实例文档

    **DWZ框架详解** DWZ(Dynamic Web Zone)框架是一个基于AJAX技术的开源Web应用框架,主要用于构建富客户端的Web应用。它以其强大的功能、优秀的用户体验和良好的可扩展性,受到了众多开发者们的青睐。本篇文章将...

    dwzStruts(DWZ框架)

    **DWZ框架详解** DWZ框架,全称为“Design Without ZIndex”,是由国内开发者开发的一款基于AJAX技术的前端UI框架,主要用于构建响应式、易用的Web应用程序。DWZ框架与Struts相结合,可以创建出高效、稳定且用户...

    给mvc3穿上华丽外衣 dwz框架

    **标题解析:**“给mvc3穿上华丽外衣 dwz框架”这个标题表明我们要讨论的是如何使用DWZ框架来增强ASP.NET MVC3的应用程序界面,使其看起来更加美观和功能丰富。 **描述分析:**描述中提到“mvc3 穿上 华丽外衣 dwz...

    dwz - 简单实用国产jQuery UI框架 - DWZ富客户端框架(jUI)

    DWZ(Design What You Want)是一款基于jQuery的国产富客户端框架,主要针对Web应用的界面设计和交互体验,被称作“jUI”。这个框架旨在简化网页开发过程,提供了一系列组件和工具,使得开发者能够快速构建功能丰富...

Global site tag (gtag.js) - Google Analytics