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

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

  參考:http://biancheng.dnbcw.net/linux/394565.htmlhtml

二.分層

1.dao: 數據訪問層(增刪改查);一個接口,一個實現類,實現類須要繼承 SqlMapClientDaoSupport
2.service:業務邏輯層;一個接口,一個實現類 ,在實現類添加dao的注入
3.action: 表示層 須要繼承 ActionSupport ,添加service的注入java

4.model :實體類
5.config:實體類對應的xml文件jquery

三:配置文件解析

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"/>linux

2.struts。xml 文件解析

通常放在src 的根目錄下
參考: http://blog.csdn.net/thinkscape/article/details/7462670web

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

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 層的聯繫spring

4.web.xml

主要作: 配置起始頁; 配置 struts,springsql

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

相關文章
相關標籤/搜索