一. 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