项目总结

经历漫长的时间,终于把项目功能模块做完了,后期进行项目的测试、调优等工作。想想在这个项目中还是收获许多,比如:使用struts2+mybatis+bootstrap做商户管理系统,struts2虽然以前有使用过,但是自从struts2报高危漏洞之后就很少使用过,对于其中的一些用法不是很熟悉,只有自己慢慢的拾,struts2的拦截器做的真的很好,在做登录的时候就使用到了

/**
 * 登录拦截器
 * @author wangbowen@date 2014年9月1日
 * @version 1.0
 *
 */
public class LoginedCheckInterceptor extends AbstractInterceptor {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6812421935655688100L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		//获取请求的地址
		String url = ServletActionContext.getRequest().getRequestURL().toString();
		//获取响应
		HttpServletResponse response = ServletActionContext.getResponse();
		   //设置响应头信息
		    response.setHeader("Pragma","No-cache");          
	        response.setHeader("Cache-Control","no-cache");   
	        response.setHeader("Cache-Control", "no-store");   
	        response.setDateHeader("Expires",0);
	        //登录信息
	        MerchantLoginInfo merchantLoginInfo = null;
	       //对登录与注销请求直接放行,不予拦截
	        if (url.indexOf("goLogin")!=-1 || url.indexOf("goLoginOut")!=-1){
	            return invocation.invoke();
	        }else{
	            //验证Session是否过期
	            if(!ServletActionContext.getRequest().isRequestedSessionIdValid()){
	                //session过期,转向session过期提示页,最终跳转至登录页面
	                return "gotoLogin";
	            }else{
	            	merchantLoginInfo =(MerchantLoginInfo) ServletActionContext.getRequest().getSession().getAttribute("userInfo");
	                //验证是否已经登录
	                if (merchantLoginInfo==null){
	                    //尚未登录,跳转至登录页面
	                    return "gotoLogin";
	                }else{                    
	                    return invocation.invoke();         
	                }                
	            }            
	        }
	    }	
}
然后在xml中配置如下就可以使用了
<!-- 配置自定义拦截器LoginedCheckInterceptor -->
        <interceptors>
            <interceptor name="loginedCheck" class="cn.my.interceptor.mertchant.LoginedCheckInterceptor"/>
            <interceptor-stack name="mystack">
              <interceptor-ref name="defaultStack" />
                <interceptor-ref name="loginedCheck" />
            </interceptor-stack>
        </interceptors>     
         <!-- 定义全局result -->
        <global-results>
            <result name="gotoLogin">login.html</result>
        </global-results>
          
    <!-- 跳转至主页面 -->
	<action name="goMenu">
	<result>/view/merchant/main.html</result>
	 <interceptor-ref name="mystack"/> <!--使用自定义拦截器--->
	</action>
在以前的项目中数据库访问技术一般使用hibernate、jdbc,基本上没有使用过mybatis,只是看过相关文档。在使用的时候心里总是想还是 hibernate好,一些基本的sql语句不需要自己去写,而mybatis什么sql语句都需要自己去写。比如一个简单的分页语句,对于hibernate只需要调用方法就可以了,而mybatis需要手写查询数据的方法和查询总条数的方法

 <select id="getxx" resultMap="BaseResultMap" parameterType="cn.my.utils.PageParameter" >
   
    select * from (select * from  (select osd.AO_RUNNING_NUM,osd.AO_TRANS_DATETIME,osd.TRANS_TYPE,
     osd.TRANS_AMOUNT,osd.BILL_ORGAN_SERVICE_CHARGE,osd.MOBILE_NO ,rownum rn
      from osd_inprov_trans_details_info osd
    where osd.TRANS_BILL_ORGAN = ${parameterMap.get('merchantId')}
  	 <if test="parameterMap.get('beginTime') != null and parameterMap.get('beginTime') != ''">
  	 and to_char(osd.AO_TRANS_DATETIME,'yyyy-MM-dd')  between '${parameterMap.get('beginTime')}'  
  	 </if>
  	 <if test="parameterMap.get('endTime') != null and parameterMap.get('endTime') != ''">
  	 and  '${parameterMap.get('endTime')}'  
  	 </if>
  	 <if test="sort != null and order != null">
  	  order by ${sort} ${order}
  	 </if>
  	 )
  	<![CDATA[ 
		         where rn <= #{endRows,jdbcType=INTEGER}
		         )
				 where rn >#{startRows,jdbcType=INTEGER}
				  ]]>
  </select>
  
   <select id="getxxxTotal" resultMap="BaseResultMaps"  parameterType="cn.my.utils.PageParameter">
    select count(*) as total, sum(TRANS_AMOUNT) as sumMoney from  osd_inprov_trans_details_info osd
    where osd.TRANS_BILL_ORGAN = ${parameterMap.get('merchantId')}
  	 <if test="parameterMap.get('beginTime') != null and parameterMap.get('beginTime') != ''">
  	 and to_char(osd.AO_TRANS_DATETIME,'yyyy-MM-dd')  between '${parameterMap.get('beginTime')}'  
  	 </if>
  	 <if test="parameterMap.get('endTime') != null and parameterMap.get('endTime') != ''">
  	 and  '${parameterMap.get('endTime')}'  
  	 </if>
  	 <if test="sort != null and order != null">
  	  order by ${sort} ${order}
  	 </if>
  	
  </select>

但是慢慢发现mybatis还是很好用的,多以总结了以下 数据库访问技术的比较 :

  1. Hibernate可以提供开发效率,但是对底层SQL的控制不太方便;
  2. MyBatis通过模版化支持可以方便的控制SQL,效率不高
  3. JDBC自由度高、运行效率高,但是代码繁复,比如:完全依赖于数据配置产生的查询方案的综合查询系统
对于bootstrap响应式框架之前只是简单的使用,并没有详细的了解。对于页面的样式与布局不是很会,还需要多看多使用多总结。

其实让我真正受益匪浅的是软件开发的思想:做一个功能或者其他时,首先要弄清楚做的目的,接着就是做的方法有哪些?然后挑选出最能解决此问题的方法,构思此方法的一个实现逻辑;最后就是动手实践,在实践中修正不足之处。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值