ssmWeb开发框架_2014-01

一直在准备作一套系统, 具体用来干什么都没肯定. 只是从纯技术人员的想法, 先搭建一套开发的框架. 作的时候才发现, 系统用途不一样, 框架也是不一样的. 暂时就先看成企业内部管理的系统来作吧.css

 

后台基础框架是struts2+spring3+mybatis3.2. java

前台用jQueryweb

数据库:mySql正则表达式

 

以前搭建ssm的框架就废了很多时间, 刚开始幼稚的计划都用最新版本, 还增长了如struts2的json插件,spring-mybatis插件, mybatis-generator等插件, 结果都弄到一块儿才发现各类版本不兼容. 后来使用maven来搭建, 方便了不少, 能够方便的更换框架版原本调整. 但在搭建完成之后才以为开发的时候很别扭, 也多是我仍是不熟悉maven, 每次修改一个jsp都得从新发布. 想到基本框架搭建差很少了, 就把maven工程转换成了普通的web工程.spring

 

由于对美工不熟, js, css虽然会用, 但实在算不得熟练. 在网上了解了不少, 决定使用jQuery UI. sql

 

从一个基本的数据对象增删该查开始作起, 对框架的应用从开始的xml配置开始, 先完成基本的功能, 而后再优化代码,配置文件. 将以为多余的, 不方便的东西一一去掉. 如今开始用注解替换xml文件. 数据库

前台的页面, 从表格开始. 选择了使用json来做为重要的先后台传输数据, 发现手动去转换对象和json对象太过繁琐, 开始使用jQGrid. 期间发现了两个纠结了很多时间的问题.json

 

1. DAO层使用注解注入SqlSessionTemplate的问题mybatis

使用的继承SqlSessionDaoSupport的方式来完成SqlSessionTemplate的注入. 按道理SqlSessionDaoSupport应该也支持注解注入的. 还从网上下了源代码看, 貌似也没问题. 是在个人工程中却一直不行. 后来看了一下版本好,才发现mybatis-spring.jar从1.2版本去掉了Autowire的注解.app

image

找到缘由了, 就好解决了. 在工程中增长了一个baseDAO, 重写了setSqlSessionTemplate, 并增长注解

package dao;
 
import javax.annotation.Resource;
 
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport;
 
public class BaseDao extends SqlSessionDaoSupport{
    @Resource
    public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
        super.setSqlSessionTemplate(sqlSessionTemplate);
    }
 
    protected <S> S getMapper(Class<S> clazz) {
        return getSqlSession().getMapper(clazz);
    }
}

2. jQGrid没法解析从后台返回的json数据

1. jQGrid须要经过jsonReader来指定客户端如何解析服务端传过来的json数据

image

对应后台返回的数据应该是:

{
    "gridModel":
        [
            {"birthday":null,"id":1,"name":"wang","sex":1}
        ],
    "page":0,
    "record":1,
    "rows":0,
    "total":1
}

2. struts配置文件中要经过正则表达式指定返回json数据, 不然页面上不会显示数据.

<action name="jqGridUserActon" class="jqGridUserAction">
    <result name="success" type="json">
    <param name="includeProperties">
        ^gridModel\[\w+\]\.\w+,
        rows, page, total, record
    </param>
    <param name="noCache">true</param>
    <param name="ignoreHierarchy">false</param>
</result>
</action>
相关文章
相关标签/搜索