• 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.pluginsorg.eclipse.wst.server.core mp0wtpwebapps


        

  • 相关阅读:
    git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法
    Android pix转换为sp
    职业四象限,分分钟定位你的方向
    我的微信公众号开通了!
    Android PermissionChecker 权限全面详细分析和解决方案
    Android沉浸式(侵入式)标题栏(状态栏)Status(三)
    Android沉浸式(侵入式)标题栏(状态栏)Status(二)
    Android沉浸式(侵入式)标题栏(状态栏)Status(一)
    为毛老抱怨工资低又不离职
    面试题:return和finally执行
  • 原文地址:https://www.cnblogs.com/Cyan-zoey/p/6425294.html
Copyright © 2020-2023  润新知