spring+struts2+ibatis 框架整合以及解析

一. spring+struts2+ibatis 框架 搭建教程

  参考:http://biancheng.dnbcw.net/linux/394565.html

二.分层

1.dao: 数据访问层(增删改查);一个接口,一个实现类,实现类需要继承 SqlMapClientDaoSupport
2.service:业务逻辑层;一个接口,一个实现类 ,在实现类添加dao的注入
3.action: 表示层 需要继承 ActionSupport ,添加service的注入

4.model :实体类
5.config:实体类对应的xml文件

三:配置文件解析

1.sqlMapConfig。xml 中的 setting 属性设置

参考:http://blog.sina.com.cn/s/blog_4a9eb8290100atff.html
<settings
cacheModelsEnabled="true" 全局性地启用或禁用 SqlMapClient 的所有缓存,true为启用。调试程序时使用。
lazyLoadingEnabled="false" 全局性地启用或禁用SqlMapClient的所有延迟加载
enhancementEnabled="true" 全局性地启用或禁用运行时字节码增强
maxSessions="64" 同一时间内活动的最大 session 数
maxTransactions="8" 同时进入 SqlMapClient.startTransaction()的最大线程数
maxRequests="128" 同时执行 SQL 语句的最大线程数
useStatementNamespaces="false" 如果启用本属性,必须使用全限定名来引用
classInfoCacheEnabled="true" 是否启用缓存类
errorTracingEnabled="true"
defaultStatementTimeout="" 被设置的值以秒为单位等待连接失效
statementCachingEnabled="true" 是否启用准备缓存
/>
根据实体类。xml进行映射 eg:<sqlMap resource="com/test/config/UsersModel.xml"/>

2.struts。xml 文件解析

一般放在src 的根目录下
参考: http://blog.csdn.net/thinkscape/article/details/7462670

struct-service.xml: dao 注入到service
struts-action.xml : service 注入到action

3.spring 的xml文件解析(applicationContext.xml)

<beana xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

</beans>
---xmlns -> xml namespace。 类似与java中的package
---xmlns:xsi-> xml schema instace。 xml 文件遵守的xml规范
---xsi:schemaLocation -> 本文档里的xml元素所遵守的规范。 schemaLocation:用来引用(schema)模式文档,第一个值表示命名空间,后面的值表示描述该命名空间的文档的位置

该文件主要做:配置数据源,事务管理,建立sqlMapClient 与dao 层的联系

4.web.xml

主要做: 配置起始页; 配置 struts,spring

5. 实体类的配置文件

主要做:增/删/改/查

根节点:<sqlMap namespace="space"></sqlMap>      

子节点: (1)查询: <resultMap id="Result" class="select">

                                  <result property="实体类中属性名" column="数据库中的列名"/>

                          </resultMap>

                          <select id="selectAllroleRule" resultMap="Result" parameterClass="参数类型">
                                   select * from 表名 where id=$实体类中对应的属性名$
                           </select>

                    条件查询:                               

                              <sql id="sql1">
                                           <dynamic prepend="where">
                                                <isNotEmpty perpend="and" property="name">
                                                              nameLike '%$name$%'
                                                </isNotEmpty>
                                          </dynamic>
                              </sql>

                              <select>
                                     select * from name
                                   <include refid="sql1">
                              </select>

              (2)添加:  <insert id="insert" parameterClass="roleRule">
                               <![CDATA[ 
                                         insert into role_rule(roleid, ruleid) values(#roleid#,#ruleid#)
                                       ]]>
                               </insert>

              (3)删除: <delete id="delete" parameterClass="参数类型">
                                   delete from role_rule where roleid = $roleid$
                            </delete>

             (4)修改:<update id="update" parameterClass="roleRule">
                              <![CDATA[
                                        update role_rule set    ruleid=#ruleid#   where    roleid = #roleid#
                               ]]>
                          </update>

          注意:a.通常情况下ibatis的参数在sqlmap中使用#param#的形式,参数名以’#‘包着,但当使用模糊查询时,须将#改为$.如上. 

                 b.<![CDATA[  ]]>:用来分隔sql语句,以防止与xml中一些语法冲突

四:jsp 页面

1. strusts 标签的使用  

     如: <s:iterator value="ulist">  需要引用<%@ taglib prefix="s" uri="/struts-tags" %>

2.java  数据提交方式

   1.1 表单提交 form get/post
       使用:配置form 表单 <form action="userAc!addUser.s" method="post"></form>
    (1) 使用struts 标签 <s:textfield name="umodel.logginid" label="登陆账号" /> <s:submit value="提交" />
            优点:使用简单 ,关键在配置 标签的 name="umodel.logginid" 属性
            缺点:不能做验证
    (2)使用普通标签<input type="text" id="loginid">
           优点:可以做验证。利用标签的id 获取到值做验证。 $("#form").submit(); 使用表单提交
           缺点:稍复杂,需使用js/js+jquery(jquery需要引用js文件)。

   1.2. ajax get/post
          优点: 异步刷新
     $.post("url",{'参数名':参数},function(data){
     //处理返回结果

     });

        action中获取ajax传过去的参数
         参数类型 a = request.getParameter("参数");

3.jquery的初始化方法

     $(document).ready(function(){  

         //页面一加载就调用的事件放入此处。

      });

4.两个jsp页面传值

           跳转方式为:window.location.href="update.jsp?id="+参数;
           接收方式为:<% String name=request.getParameter("id");%>

5. 关于for循环

   for(int i=0;i<2;i++)

      System.out.println(i);
        for(int j=2;j<4;j++)
             System.out.println(j);               打印 0 1 2 3

   for(int i=0;i<2;i++){
       System.out.println(i);
        for(int j=2;j<4;j++)
           System.out.println(j);
   }                                                     打印 0 2 3 1 2 3

 

五. 错误排查

1. 运行报404 错误

   (1)首先检查代码是否有误,在console 中查看是否有打印错误信息

   (2)检查在WEB-INF 下是否生成了classes 文件; 如果没有:点击项目,右键-》属性(properties)->java build path   source 下 更改default output folder

2.  找不到某文件

   (1)在项目下查看是否有某文件

   (2)查看文件是否发布成功-》D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps


    

posted @ 2017-02-21 17:34  青语  阅读(948)  评论(0编辑  收藏  举报