Fuguo-web
来自ling
- fuguo设计文档 fuguo编码规范
- fuguo-core fuguo-config
- fuguo-cache fuguo-cache-config
- fuguo-db fuguo-db-api fuguo-db-hibernate4 fuguo-db-hibernate4-config
- fuguo-security fuguo-security-api fuguo-security-default fuguo-security-config
- fuguo-web fuguo-web-core fuguo-web-rest
- fuguo-job fuguo-job-core fuguo-job-web
- fuguo-attachment fuguo-attachment-core fuguo-attachment-web
- fuguo-workflow fuguo-workflow-core fuguo-workflow-web
- fuguo-message fuguo-message-core fuguo-message-web
- fuguo-ecommerce fuguo-ecommerce-core fuguo-ecommerce-web
- fuguo项目初始化
- fuguo-autoproject
- fuguo-samplecenter
- fuguo-log
- fuguo-Preference 系统关闭登录
- 项目重构
- 项目部署 可视化文档管理 问卷调查 环境安装模块 项目初始化与配置 CXFWebservice使用
- 概要设计文档
功能
- 包含适配tomcat为主的服务容器的程序.
- wl-web-core 支持分布式集群访问,并带有权限控制的web项目核心
- wl-web-rest 以dubbo server服务为基础的,主要为app客户端提供数据的restful风格服务基础
- 不建议使用dubbo 的rest功能
- 在这一层,用nginx做代理,做负载均衡
- 通过一定的技术细节配合业务减少对dubbo server的访问次数来提高对app客户端的响应速度
- 不建议使用spring mvc 来提供restful服务
- 相关重要技术
- wl-web-core现在已经支持集群内用户信息共享,跨域(相同跟域,比如xxx1.ling2.cn,xxx2.ling2.cn)信息共享
- wl-web-rest主要使用spring mvc实现,支持权限配置,支持异常直接抛出,配置CORSFilter后支持使用angularJs等非原生语言开发的移动端数据访问
- 通过注解进行数据访问权限控制
- 参考代码如下
@RequestMapping(value = "/saveNewUser", method = RequestMethod.POST)
@ResponseBody
@RoleAnnotation(roles=RoleDef.ECOMMERCE_ADMIN)
public DefaultUserVo saveNewUser(DefaultUserVo user) {
AssertHelper.notEmpty_assert(user.getMobile(),"手机号不能为空");
AssertHelper.notEmpty_assert(user.getUsername(),"用户名不能为空");
AssertHelper.notEmpty_assert(user.getMobile(),"手机号不能为空");
AssertHelper.notEmpty_assert(user.getUsername(),"用户名不能为空");
//检查用户名
DefaultUser baseUser=(DefaultUser) userService.getByUserName(user.getUsername());
if(baseUser!=null){
throw new BusinessException("用户名已经存在");
}
//检查手机号
DefaultUser mobileUser=(DefaultUser) userService.loadUserByMobile(user.getMobile());
if(mobileUser!=null){
throw new BusinessException("手机号已经被使用");
}
//检查邮箱
DefaultUser emailUser=(DefaultUser) userService.loadUserByEmail(user.getEmail());
if(emailUser!=null){
throw new BusinessException("邮箱已经被使用");
}
baseUser=new DefaultUser();
//更新相应信息
baseUser.setUsername(user.getUsername());
baseUser.setMobile(user.getMobile());
baseUser.setNickname(user.getNickname());
baseUser.setRealName(user.getRealName());
baseUser.setRemark(user.getRemark());
baseUser.setEmail(user.getEmail());
baseUser.setCname(user.getRealName());
userService.registerCommonUser(baseUser);
List<DefaultRole> roles=roleService.loadUserRoles(baseUser.getUsername());
roleService.removeAll(roles);
for(DefaultRoleVo roleVo:user.getRoles()){
RoleMember roleMember=new RoleMember();
roleMember.setRoleId(roleVo.getId());
roleMember.setUsername(user.getUsername());
roleService.save(roleMember);
}
return user;
}
依赖
配置文件说明
关键类说明
- ContextHolder用于初始化当前登录用户的信息
- ContextUtils 用于获取当前登录用户信息,更多请参考ContextHolder的扩展
- WebApplicationInitializer 继承AbstractAnnotationConfigDispatcherServletInitializer,为在servlet3.0规范下有效,替代web.xml中的配置入口