




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目标:对生成的实例项目分析Springside3.3.4 View层权限使用了Spring Security 2.0.5和struts2关于Spring Security请参考springside使用Spring Security 2和struts2的一些资料整理 /peachpi/article/details/6283453SpringSide 3 中的安全框架 Spring Security 2.0/shangpusp/article/details/5494563非常优秀的权限管理框架 - Spring Security /wenlin56/article/details/6081022struts2的配置使用了convention plugin,实现struts零配置,请参考struts.xmlStruts使用convention-plugin实现零配置/blog/398263convention plugin1. 默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts.convention.result.path这个属性的值来改变到其他路径。如:将路径配置到了WEB-INF/page 下。2. 默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action类的路径来搜索。你可以通过设置struts.convention.package.locators属性来修改这个配置。如:则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。Com.ywsoft.web.*/com.ywsoft.action.*都将被视为含有Action的包路径而被搜索。3. 接着,Convention从前一步找到的package以及其子package中寻找 com.opensymphony.xwork2.Action 的实现以及以Action结尾的类com.example.actions.MainAction ducts.Display(implementscom.opensymphony.xwork2.Action) pany.details.ShowCompanyDetailsAction4. 命名空间。从定义的.package.locators标示开始到包结束的部分,就是命名空间。举个例子:Com.ywsoft.web.user.userAction的命名空间是:”/user”。Com.ywsoft.web.user.detail.UserAction的命名空间是:”/user/detail”5. Convention通过如下规则确定URL的具体资源部分:去掉类名的Action部分。然后将将每个分部的首字母转为小写,用-分割,你可以设置.separator 如对于com.ustb.web.user.detail.UserDetailAction,映射的url就是/WEB-INF/content/user/detail/user-detail.jsp学习1:Struts2中典型CRUD Action的泛型抽象类CrudActionSupport学习2:条件查询的处理方式实例User.jsp你好, . 登录名: /红色部分采用EL表达式将页面上输入的值已url参数的形式传到服务端姓名或Email: /红色部分采用EL表达式将页面上输入的值已url参数的形式传到服务端UserAction.java/- CRUD Action 函数 -/Overridepublic String list() throws Exception List filters = PropertyFilter.buildFromHttpRequest(Struts2Utils.getRequest();/用解析后的属性名和值存储初始化生成PropertyFilter对象/设置默认排序方式if (!page.isOrderBySetted() page.setOrderBy(id);page.setOrder(Page.ASC);page = accountManager.searchUser(page, filters);return SUCCESS;PropertyFilter.java/* * 从HttpRequest中创建PropertyFilter列表, 默认Filter属性名前缀为filter. * * see #buildFromHttpRequest(HttpServletRequest, String) */public static List buildFromHttpRequest(final HttpServletRequest request) return buildFromHttpRequest(request, filter);/* * 从HttpRequest中创建PropertyFilter列表 * PropertyFilter命名规则为Filter属性前缀_比较类型属性类型_属性名. * * eg. * filter_EQS_name * filter_LIKES_name_OR_email */public static List buildFromHttpRequest(final HttpServletRequest request, final String filterPrefix) List filterList = new ArrayList();/从request中获取含属性前缀名的参数,构造去除前缀名后的参数Map.Map filterParamMap = ServletUtils.getParametersStartingWith(request, filterPrefix + _);/分析参数Map,构造PropertyFilter列表for (Map.Entry entry : filterParamMap.entrySet() String filterName = entry.getKey();String value = (String) entry.getValue();/如果value值为空,则忽略此filter.if (StringUtils.isNotBlank(value) PropertyFilter filter = new PropertyFilter(filterName, value);/在这里filterList.add(filter);return filterList;HibernateDao.java中protected Criterion buildCriterionByPropertyFilter(final List filters) List criterionList = new ArrayList();for (PropertyFilter filter : filters) if (!filter.hasMultiProperties() /只有一个属性需要比较的情况.Criterion criterion = buildCriterion(filter.getPropertyName(), filter.getMatchValue(), filter.getMatchType();criterionList.add(criterion); else /包含多个属性需要比较的情况,进行or处理.Disjunction disjunction = Restrictions.disjunction();for (String param : filter.getPropertyNames() Criterion criterion = buildCriterion(param, filter.getMatchValue(), filter.getMatchType();disjunction.add(criterion);criterionList.add(disjunction);return criterionList.toArray(new CriterioncriterionList.size();总结:1、 这样的方式可以大幅度降低重复的判断和sql语句的拼接语句 赞()/!2、 方法很巧,在页面中的查询条件中只要遵循规范,后面的代码几乎不需要再写什么,规范:filterName比较属性字符串,含待比较的比较类型、属性值类型及属性列表;默认前缀为filter_如:filter_EQS_loginName3、PropertyFilter类中/* 多个属性间OR关系的分隔符. */public static final String OR_SEPARATOR = _OR_;/* 属性比较类型. */public enum MatchType EQ, LIKE, LT, GT, LE, GE;/* 属性数据类型. */public enum PropertyType S(String.class), I(Integer.class), L(Long.class), N(Double.class), D(Date.class), B(Boolean.class);private Class clazz;private PropertyType(Class clazz) this.clazz = clazz;public Class getValue() return clazz;关于struts2中Preparable接口interceptor:paramsPrepareParamsStack,paramsPrepareParamsStack主要解决了ModelDriven和Preparable的配合问题,从字面上理解来说,这个stack的拦截器调用的顺序为:首先params,然后prepare,接下来modelDriven,最后再params。Struts 2.0的设计上要求modelDriven在params之前调用,而业务中prepare要负责准备model,准备model又需要参数,这就需要在prepare之前运行params拦截器设置相关参数,这个也就是创建paramsPrepareParamsStack的原因。流程如下: 1. params拦
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店抵押合同5篇
- 建设工程项目施工廉政合同4篇
- 婚前房产协议书范文5篇
- 新解读《GB-T 32612-2016纺织品 2-甲氧基乙醇和2-乙氧基乙醇的测定》
- 螺蛳粉运输合同范本
- 整形诊所合作合同范本
- 租赁水果树合同范本
- 建设合同范本哪里
- 玻璃代理销售 合同范本
- 车辆转换合同范本
- 防火防烟分区检查
- 《小学开学第一课:学生守则、行为规范、班级班规》课件
- 农产品营销的渠道策略讲义
- 工程总承包(EPC)模式市场应用现状
- 幼儿园行政工作保密协议
- 环境监测课件
- 食品安全管理制度小卖部
- 冰雪运动行业营销策略方案
- 建筑垃圾处理及清运方案
- 中职资料:第1讲 社会主义在中国的确立与探索+课件
- 新能源汽车空调检测与维修PPT完整全套教学课件
评论
0/150
提交评论