Java 框架之个人心得
作者:wangyp
2016 4 26
经过这一年的自我代码总结,发现对三大框架有了新的认识。
Boss 系统框架主要是基于struts1 +ibatis ,也有struts2,本人工作也就是基于Struts1 和后台的buff的调用,至于业务逻辑自己实在不理解。这就是我一直以来的缺陷所在吧,我不太想关注业务逻辑,我认为技术才是一把利剑。不管去哪都能行走天涯。
一.框架一:struts1.
1.走进struts1.三大框架的本质都是mvc 模式,model+view +controller;以前不够理解什么是视图分离,现在理解了,都是和servlet差不多。Strut1.也就是servlet 发展而来。Servlet :请求到servlet ,然后通过servlet跳转。Strut1 :请求到action 然后跳转到视图。通常继承DispatchAction
成卡派发模块:
首先来看下请求的url:
:
来看下 漂亮的xml 的配置:
再来看下action 里面
请求由url ,xxx.go. 或者xx.go?command=XXX &xx,请求直接不带参数,就是直接跳转到init 里面,如果带command 就是带跳转的路径action里面 也可以 return 到
请求的路径mapping .findForard(nextpage) 到 对应的xml 里面找到jsp;如图;
二.框架二。Struts2:
走进struts2:
Struts2我的理解就是比strut1多了个对action的通配符,可以匹配不同的action 和页面。然后通过返回String 对应result页面,比struts1更简洁。而且 struts2 对表单的参数有自动的封装功能,只要是参数名对应都可以自动传递。不像strut1 需要post 和request.getparameter();
通常action继承 ActionSupport
集团增值税订单生成模块
首先看看url:
再看看 xml 配置
看看 action 配置
Ibatis :
就我的 理解ibatis 都是通过SqlMapconfig.xml 配置个sql xml 然后 ,这个联系起来 对应 的pojo 和sql 语句的关系。
然后通过读取SqlMappConfig.xml , 生成SqlMapClient,就可以调用增删改查。不过一般都和spring结合 生成 的getSqlMapClientTemplate ()模板类使用
这个 要配置好 SqlMapClientFactoryBean 然后类继承 SqlMapClientDaoSupport 即可 。
参考:http://blog.csdn.net/jinoon/article/details/6522172
关于自动生成工具:就是通过自动生成工具配置好表字段 和生成的Dao sqlxml 目录 就可以通过反射生成 对应的dao 和 daoimpl ,sql.xml
我的理解是和hibernate 的逆向生成很类似。可以通过表生成 pojo ,也可以通pojo 生成 表。
关于ibaits 分页:
参考:http://blog.csdn.net/ubuntu64fan/article/details/10366675
map.put("pageNum", new Integer(pageBar.getPageNum()));
map.put("rowCountPerPage", new Integer(pageBar.getRowCountPerPage()));
int rowCount = ((Integer) getSqlMapClientTemplate().queryForObject(
sqlKeyCount, map)).intValue();
// 记录总数
pageBar.setRowCount(rowCount);
// 总页面数量
pageBar.setPageCount((pageBar.getRowCount()
+ pageBar.getRowCountPerPage() - 1)
/ pageBar.getRowCountPerPage());
List lst = getSqlMapClientTemplate().queryForList(sqlKey, map);
一般都是通过map 传入总条数,页面数量,调用queryForList()。实现物理分页
至于这个里面配置的oracle 自动分页的东东 public.oraclePageStart不太理解 哈哈。。不知道是不是自动生成的还是怎么弄的,问了好多人 。。
Mybatis
普通的mybatis 配置和ibatis 差不多。都是通过配置SqlMapConfig.xml 里面对应pojo 和xml 的对应关系 ,然后读取SqlMapConfig.xml。
SqlSessionFactory 工厂。生成SqlSession 增删改查。
不过 不同的是mybatis 有 mapper 代理对象 ,我的理解是mapper,通过扫描 mapper.xml。 代理过后不需要daoImpl 了,直接通过 mapper代理对象
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
调用增删改查 。。
关于自动生成工具:
配置好表字段,mapper ,pojo 生成目录,可以自动生成 mapper接口 还有mapper.xml 还有pojo
关于mybatis 分页:
可以用 pageHelper 插件基于mybaits 拦截器 对sql 拦截实现分页
Springmvc
Springmvc 的核心就是基于dispatchservlet ,传入url ,通过映射器处理器 handlerMapping 对应到 相应的controller ,通过反射执行相应的 方法。返回ModelAndView,
返回到dispatchservlet 交给视图解析图,响应响应的视图
核心请参考 :黄勇的,架构探险
后结:关于boss 系统框架
关于复用。
1.逻辑的复用
2.页面的复用
1.只要是请求的action和参数相同的逻辑 就可以放进js里面复用。所以不需要重写逻辑
2.页面的复用:框架用到DisplayTag table.自己就可以实现list 的展示。分页 和 数据库里面配置展示字段
关于基本的查询分页:参考红名单管理 俺写的直接sql 分页 方便。O(∩_∩)O哈哈~