2011.6.-2011.7
由于一些原因,从Android的学习又回到了J2EE。
仓促的时间,进入这个项目,只了解到一个大概。知道是对手机端发布的一些管理和统计。其中包括:客户端发行版本管理、服务端模块管理、服务端模块版本管理、系统配置、可用性配置、商品条码导出、装机量统计、访问量统计、崩溃日志、注册统计、订单量统计、意见反馈、数据导入、点击流。看着还是有点东西在里面吧。
这次使用的开发工具是 IntelliJ IDEA
此工具对Maven的集成比较好
IDEA对svn的导出也很好操作:
整体的项目结构
对我来说的收获,还是有几点的:
1)了解且运营Velocity模板语言,自己以前是用JSP的来进行页面渲染的 。之后在这公司的所有项目都有的Velocity来做的页面渲染。
2)小乌龟SVN的一些运用,之前Android虽有一些了解,这次了解更多一些。
3)领域对象(domain)的get、set方法有时需要注意,必须满足Struts2支持的ognl(Object-GraphNavigation Language)表达式。如这样的方式是不可用的:getinfo、setnum。Ognl参考http://baike.baidu.com/view/1347280.htm
4)资源码,权限管理方面的东西
Velocity里布局页面代码
<a href="$home.getTarget("/admin/config/list.action")" #if($index==7)class="cur" #end >系统配置</a>
代码home封装的针对根路径获取路径的方法,list.action为Action,if判断当前的模块,就加上cur的样式。
下面是展示select标签
功能类型:
<select name="typeId" value="2">
<option value="" >全部</option>
<option value="1" #if($typeId==1)selected="selected"#end>功能意见</option>
<option value="2" #if($typeId==2)selected="selected"#end>界面意见</option>
</select>
这个功能很多系统都会用到的。下面的时间控件也是不可少的。
反馈时间:
<input type="text" id="onlineTimeStart" name="startTime" value="$!startTime" readonly="readonly"/>
这个时间当初始的时候是使用的JQuery
jQuery(document).ready(function() {
jQuery("#onlineTimeStart").datepicker({dateFormat:"yy-mm-dd"});
});
还有一个常用的页面元素,列表:
#foreach($item in $feedBacks)
<tr>
<td>$!item.id</td>
<td>$!dateFormatUtils.format($!item.created,"yyyy-MM-dd HH:mm:ss")</td>
<td>$!stringEscapeUtils.escapeHtml($!item.ip)</td>
</tr>
#end
有了迭代,一条一条的记录都能很好的展示。
几种常用的页面元素,一看代码也很好理解,很好使用。公司封装了一些针对页面直接用的工具类,交给Spring管理,直接在页面调用,处理这样很方便
Struts2的规范,上面的查询参数typeId,在Action里接收的时候,是需要一个getTypeId、setTypeId的,如下代码:
public String getTypeId() {
return typeId;
}
public void setTypeId(String typeId) {
this.typeId = typeId;
}
当然Struts内部机制:Struts的拦截器根据Action提交的参数,用反射技术在Action中寻找同名的属性,再用set方法注入值,如果是对象,对象属性为null,用反射new一个对象,再注入其属性值。
Struts2还有很多需要了解的地方,深入了解 http://struts.apache.org/
最后来说一下权限管理,这个现在看来也不复杂,看一下代码
@HrmPrivilege(code = HrmPurviewConstants.MOBILE_ADMIN_KEFUVIEW)
public String list() {
//doSomething;
return SUCCESS;
}
就在方法上面加一行注解,在erp资源管理系统里去配置一些就ok。这里看着简单,其实后面慢慢了解到,权限管理还是很大一块功能,逻辑也还是有些复杂的。