SSI整合小例子-增删改查
来源:互联网 发布:平安数据科技 模型组 编辑:程序博客网 时间:2024/04/30 04:33
一,数据库设计
create database ibatis; --创建数据库ibatis
use ibatis;
create table sperson
(
id int primary key auto_increment,
name varchar(50),
sex varchar(20),
age int,
salary float
);
二,搭建框架,创建web项目
打开MyEclipse8.5新建一个web project如图:
填写完项目名称后选择Java EE 5.0,点finish.
添加Spring支持:
选择spring2.5,这里的包默认就可以,因为jar包冲突所以我将不会使用MyEclipse里自带的包,这里我只要后边这个文件 如图:点next
将applicationContext.xml放在src文件夹下,即Folder的路径是src,点finish。
然后我将把导入的spring包删除
导入自己的包
点next
选择你要导入的spring的jar包,放在test/WebRoot/WEB-INF/lib目录下,finish。
接下来导入struts:
选择struts2.1 和 /*
点finish。然后删除导入的struts包,引入自己的jar包
finish.
引入其他jar包的方法:
选择好jar包后就能引入。本程序所用到的所有jar包为:
三,配置SSI3三部分所需要的配置文件
(1)web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 配置Spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> WEB-INF/classes/com/us/jack/config/applicationContext.xml WEB-INF/classes/com/us/jack/config/applicationContext-services.xml </param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!-- 配置Struts2 --> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list></web-app>(2) Struts2部分
struts.xml部分:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <include file="com/us/jack/action/sbookAction.xml"></include></struts>
spersonAction.xml部分:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts> <constant name="struts.i18n.encoding" value="GBK"/> <package name="sperson" extends="struts-default" namespace="/user"> <!-- 添加员工信息 记住:class="spersonAction"中的 spersonAction是在applicationContext-services.xml文件被Spring管理--> <action name="addSPerson" class="spersonAction" method="addSPerson"> <result name="success">/addPerson.jsp</result> <result name="error">/addPerson.jsp</result> </action> <!-- 你也可以下面这种写:这种就没有给Spring控制了 <action name="addSPerson" class="com.bjsxt.ssi2.action.SPersonAction" method="addSPerson"> <result name="success">/addPerson.jsp</result> <result name="error">/addPerson.jsp</result> </action> --> <!-- 查看全部员工信息 --> <action name="viewSPerson" class="spersonAction" method="viewSPerson"> <result name="success">/viewPerson.jsp</result> <result name="error">/viewPerson.jsp</result> </action> <!-- 通过ID查找员工 --> <action name="modifySPerson" class="spersonAction" method="modifySPerson"> <result name="success">/personMsg.jsp</result> <result name="error">/personMsg.jsp</result> </action> <!-- 更新员工 --> <action name="updateSPerson" class="spersonAction" method="updateSPerson"> <result name="success" type="redirectAction">viewSPerson</result> <!-- action重定向 --> <result name="error">/personMsg.jsp</result> </action> <!-- 删除员工 --> <action name="removeSPerson" class="spersonAction" method="removeSPerson"> <result name="success" type="redirectAction">viewSPerson</result> <result name="error" type="redirectAction">viewSPerson</result> </action> </package></struts>
(3)Spring部分
applicationContext.xml部分:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--配置一个数据源,根据上面propertyConfig指定的location去找数据库连接的配置信息--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><!-- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@134.224.15.38:1521:test38"/>--> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/ibatis" /> <property name="username" value="root" /> <property name="password" value="root" /> <property name="maxActive" value="100"/> <property name="maxIdle" value="30"/> <property name="maxWait" value="1000"/> <property name="logAbandoned" value="true"/> <property name="defaultAutoCommit" value="true"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="60"/> </bean> <!-- SqlMap setup for iBATIS Database Layer --> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"> <property name="configLocation"><value>classpath:sqlMapConfig.xml</value></property><property name="dataSource"><ref bean="dataSource" /></property> </bean> <!--根据sqlMapClien创建一个SqlMapClient模版类--> <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"> <property name="sqlMapClient"> <ref bean="sqlMapClient" /> </property> </bean> <!--将上面的模版类织入到我们的DAO对象中(注入PersonDAO层)--> <bean id="spersonDAO" class="com.bjsxt.ssi3.dao.impl.SPersonDAO"> <property name="sqlMapClientTemplate"> <ref bean="sqlMapClientTemplate" /> </property> </bean> </beans>
applicationContext-services.xml部分:
<?xml version="1.0" encoding="UTF-8"?><beans 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.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> <!-- 将业务逻辑Service类交给DAO去处理 --> <bean id="spersonServices" class="com.bjsxt.ssi3.services.impl.SPersonServices"> <property name="spersonDAO" ref="spersonDAO"/> </bean> <!-- 将PeractionAction交给Spring控制 --> <bean id="spersonAction" class="com.bjsxt.ssi3.action.SPersonAction"> <property name="spersonServices" ref="spersonServices"/> </bean> <!-- Transaction manager for a single JDBC DataSource --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <aop:config> <!-- 管理事务操作 --> <aop:pointcut id="servicesPointcut" expression="execution(* com.bjsxt.ssi3.services.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="servicesPointcut" /> </aop:config> <!-- 事务控制 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="remove*" propagation="REQUIRED" /> <tx:method name="get*" read-only="true" /> </tx:attributes> </tx:advice></beans>
四,IBatis部分
sqlMapConfig.xml部分:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"><sqlMapConfig> <sqlMap resource="com/bjsxt/ssi3/dao/impl/SPerson.xml"/></sqlMapConfig>SPerson.xml部分:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap> <typeAlias alias="sperson" type="com.bjsxt.ssi3.vo.SPerson" /> <!-- 添加一新员工--> <insert id="savePerson" parameterClass="sperson"> <selectKey keyProperty="id" resultClass="int"> <![CDATA[ SELECT LAST_INSERT_ID() AS VALUE ]]> </selectKey> <![CDATA[ INSERT INTO sperson(name,sex,age,salary) VALUES(#name#,#sex#,#age#,#salary#) ]]> </insert> <!-- 删除员工 --> <delete id="deletePerson" parameterClass="int"> <![CDATA[ DELETE FROM SPERSON WHERE ID=#id# ]]> </delete> <!-- 查找所有的员工 --> <select id="findAllPerson" resultClass="sperson"> <![CDATA[ SELECT * FROM sperson ]]> </select> <!-- 更新员工信息 --> <update id="updatePerson" parameterClass="sperson"> <![CDATA[ UPDATE SPERSON SET name=#name#,sex=#sex#,salary=#salary# WHERE id=#id# ]]> </update> <!-- 查找特定员工 --> <select id="findPersonById" parameterClass="int" resultClass="sperson"> <![CDATA[ SELECT * FROM sperson WHERE ID=#id# ]]> </select></sqlMap>
五,后台代码部分
1、vo实体类部分:SPerson.java
package com.bjsxt.ssi3.vo;/** * 员工类 * @author xia * * 其实就是JavaBen,对应的名字与表名一致 * */public class SPerson {private int id;private String name;private String sex;private int age;private float salary;public int getId() { return id;}public void setId(int id) { this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public float getSalary() {return salary;}public void setSalary(float salary) {this.salary = salary;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
2、DAO层
ISPersonDAO.java文件:
package com.bjsxt.ssi3.dao;import java.util.List;import com.bjsxt.ssi3.vo.SPerson;/**** * DAO层 * @author Administrator * */public interface ISPersonDAO {/** * 添加一员工至数据库中 * * @param person * 员工对象 * @throws RuntimeException */public void savePerson(SPerson person) throws RuntimeException;/** * 删除员工信息 * * @param id * ID编码 * @throws RuntimeException */public void deletePerson(int id) throws RuntimeException;/** * 更新一员工的信息 * * @param person * 员工对象 * @throws RuntimeException *//** */public void updatePerson(SPerson person) throws RuntimeException;/** * 查找库中所有的员工 * * @return 返回员工列表列表 * @throws RuntimeException */public List findAllPerson() throws RuntimeException;/** * 通过ID查找特定的员工 * * @param id * 员工的ID号 * @return 返回此ID对应的员工信息 * @throws RuntimeException */public SPerson findPersonById(int id) throws RuntimeException;}
package com.bjsxt.ssi3.dao.impl;import java.util.List;import org.springframework.orm.ibatis.SqlMapClientTemplate;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import com.bjsxt.ssi3.vo.SPerson;import com.bjsxt.ssi3.dao.ISPersonDAO;public class SPersonDAO implements ISPersonDAO {private SqlMapClientTemplate sqlMapClientTemplate; //sqlMapClientTemplate 在applicationContext.xml配置 public SqlMapClientTemplate getSqlMapClientTemplate() {return sqlMapClientTemplate;}public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate) {this.sqlMapClientTemplate = sqlMapClientTemplate;} /*** * //注意:insert("","")方法,第一个参数与SPerson.xml中的select元素的id属性值对应,第2个参数是传进来的参数 */public void savePerson(SPerson person) throws RuntimeException { sqlMapClientTemplate.insert("savePerson", person); } public void deletePerson(int id) throws RuntimeException { sqlMapClientTemplate.delete("deletePerson", id);}public void updatePerson(SPerson person) throws RuntimeException { sqlMapClientTemplate.update("updatePerson", person); }@SuppressWarnings("unchecked")public List findAllPerson() throws RuntimeException { List findList = null; try {findList = (List)sqlMapClientTemplate.queryForList("findAllPerson"); }catch (Exception e) {e.printStackTrace();} return findList; }/**** * 通过ID查询 */public SPerson findPersonById(int id) throws RuntimeException { SPerson sPerson = null;try {sPerson = (SPerson)sqlMapClientTemplate.queryForObject( "findPersonById", id);}catch (Exception e) {e.printStackTrace();}return sPerson;} }
3、业务逻辑层部分
ISPersonServices.java文件:
ISPersonServices.java文件:package com.bjsxt.ssi3.services;import java.util.List;import com.bjsxt.ssi3.vo.SPerson;public interface ISPersonServices {/** * 添加一员工至数据库中 * * @param person * 员工对象 * @throws RuntimeException */public void savePerson(SPerson person) throws RuntimeException;/** * 删除员工信息 * * @param id * ID编码 * @throws RuntimeException */public void removePerson(int id) throws RuntimeException;/** * 更新一员工的信息 * * @param person * 员工对象 * @throws RuntimeException */public void updatePerson(SPerson person) throws RuntimeException;/** * 查找库中所有的员工 * * @return 返回员工列表 * @throws RuntimeException */public List getAllPerson() throws RuntimeException;/** * 通过员工ID号得到员工对象 * * @param id * 员工ID号码 * @return 返回此ID对应的员工信息 * @throws RuntimeException */public SPerson getPersonById(int id) throws RuntimeException;}
SPersonServices.java文件:
package com.bjsxt.ssi3.services;import java.util.List;import com.bjsxt.ssi3.vo.SPerson;public interface ISPersonServices {/** * 添加一员工至数据库中 * * @param person * 员工对象 * @throws RuntimeException */public void savePerson(SPerson person) throws RuntimeException;/** * 删除员工信息 * * @param id * ID编码 * @throws RuntimeException */public void removePerson(int id) throws RuntimeException;/** * 更新一员工的信息 * * @param person * 员工对象 * @throws RuntimeException */public void updatePerson(SPerson person) throws RuntimeException;/** * 查找库中所有的员工 * * @return 返回员工列表 * @throws RuntimeException */public List getAllPerson() throws RuntimeException;/** * 通过员工ID号得到员工对象 * * @param id * 员工ID号码 * @return 返回此ID对应的员工信息 * @throws RuntimeException */public SPerson getPersonById(int id) throws RuntimeException;}
4、控制层
SPersonAction.JAVA文件:
package com.bjsxt.ssi3.action;import java.util.List;import com.bjsxt.ssi3.services.ISPersonServices;import com.bjsxt.ssi3.vo.SPerson;import com.opensymphony.xwork2.ActionSupport;public class SPersonAction extends ActionSupport {private ISPersonServices spersonServices;private SPerson sperson;private String tips;private String personId; private List personList;/** * 添加员工信息 * * @return 返回添加是否成功 */public String addSPerson() { String result = "error"; try { spersonServices.savePerson(sperson); this.setTips("添加成功"); result = "success"; } catch (Exception e) { e.printStackTrace(); this.setTips("系统出现问题"); } return result;}/** * 查看所有员工 * * @return */public String viewSPerson() { String result = "error"; try { personList = spersonServices.getAllPerson(); result = "success"; } catch (Exception e) { e.printStackTrace(); this.setTips("系统出现问题,请稍后访问"); } return result;}/** * 修改员工信息 * * @return */public String modifySPerson() { String result = "error"; try { sperson = spersonServices.getPersonById(Integer.parseInt(this.getPersonId())); result = "success"; } catch (Exception e) { e.printStackTrace(); this.setTips("系统出现问题"); } return result;}public String updateSPerson(){ String result = "error"; try{ spersonServices.updatePerson(sperson); result = "success"; }catch(Exception e){ e.printStackTrace(); this.setTips("更新操作失败"); } return result;} /** * 删除图书 * @return */public String removeSPerson(){ String result = "error"; try{ spersonServices.removePerson(Integer.parseInt(this.getPersonId())); result = "success"; }catch(Exception e){ e.printStackTrace(); this.setTips("删除操作失败"); } return result;} public SPerson getSperson() { return sperson;}public void setSperson(SPerson sperson) { this.sperson = sperson;}public void setSpersonServices(ISPersonServices spersonServices) { this.spersonServices = spersonServices;}public String getTips() { return tips;}public void setTips(String tips) { this.tips = tips;}public String getPersonId() {return personId;}public void setPersonId(String personId) {this.personId = personId;}public List getPersonList() {return personList;}public void setPersonList(List personList) {this.personList = personList;}}
(五)前台页面的开发
1、增加页面文件addPerson.jsp
<%@ page language="java" pageEncoding="GBK"%><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>添加员工</title> </head> <body> <s:property value="tips"/> <!--s:property 拿到Action类中定义的属性值,tips表示属性 --> <s:form action="addSPerson" method="post" namespace="/user"> <s:textfield name="sperson.name" label="姓名"/> <s:textfield name="sperson.sex" label="性别"/> <s:textfield name="sperson.age" label="年龄"/> <s:textfield name="sperson.salary" label="薪水"/> <s:submit value="添加"/> </s:form> <a href="<%=request.getContextPath() %>/user/viewSPerson.action">查看现有员工</a> </body></html>
2、修改页面文件personMsg.jsp
<%@ page language="java" pageEncoding="GBK"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>修改员工信息</title> </head> <body> <s:form action="updateSPerson" method="post" namespace="/user"> <s:hidden name="sperson.id">${id}</s:hidden> <s:textfield name="sperson.name" label="姓名" readonly="true">${name}</s:textfield> <s:textfield name="sperson.sex" label="性别">${sex}</s:textfield> <s:textfield name="sperson.age" label="年龄">${age}</s:textfield> <s:textfield name="sperson.salary" label="薪水">${salary}</s:textfield> <s:submit/> </s:form> <s:property value="tips" /> </body></html>
3、登录页面文件index.jsp
<%@ page language="java" pageEncoding="GBK"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>员工管理页面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <a href="addPerson.jsp">添加员工</a> <a href="user/viewSPerson.action">浏览员工</a> </body></html>
4、浏览页面文件viewPerson.jsp
<%@ page language="java" pageEncoding="GBK"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>浏览员工</title> </head> <body> <table align="center" border="1" style="width:80%;"> <tr> <th colspan="7" align="center">员工信息</th> </tr> <tr> <td align="left" colspan="7"><a href="<%=request.getContextPath()%>/addPerson.jsp">添加员工</a></td> </tr> <tr> <td>姓名</td> <td>性别</td> <td>年龄</td> <td>薪水</td> <td>操作</td> </tr> <s:iterator value="personList"> <!-- 表示的是SPersonAction.java类中定义List对象personList --> <tr> <td> <s:property value="name"/> </td> <td> <s:property value="sex"/> </td> <td> <s:property value="age"/> </td> <td> <s:property value="salary"/> </td> <td> <a href="<%=request.getContextPath()%>/user/modifySPerson.action?personId=${id}">修改信息</a> <a href="<%=request.getContextPath()%>/user/removeSPerson.action?personId=${id}">删除</a> </td> </tr> </s:iterator> <s:property value="tips"/> </table> </body></html>
- SSI整合小例子-增删改查
- SpringMVC+hibernate整合小例子,用户的增删查改
- SSI框架小实例,实现增删改查
- 用hibernate和spring整合做小例子对数据库增删改查
- SSI整合,简单的人员管理——增删改查
- SSM整合--增删改查
- SSM整合(增删改查)
- SSM整合--增删改查
- hibernate 增删改查例子
- 数据库增删改查例子
- Angularjs增删改查例子
- SSH整合 简单的增删改查
- SSH整合 简单的增删改查
- SSH整合 简单的增删改查
- SSH整合 简单的增删改查
- SpringMVC+Mybatis整合的增删改查
- SpringMVC+Mybatis整合的增删改查
- SSH整合 简单的增删改查
- 设计模式之Programming to an Interface, not anImplementation 程序指向接口,而不是实现
- oracle升级前必要准备工作
- MyEclipse如何快速生成get set 方法
- C语言多线程开发
- linux中select()函数分析详解
- SSI整合小例子-增删改查
- Adobe AIR中使用Flex连接Sqlite数据库
- POJ 3254 & POJ 1185 (状态压缩DP)
- 游戏开发中的人工智能——基本路径寻找及航点应用
- linux下使用yum安装mysql
- uva 10132 File Fragmentation
- 让Android App启动更协调
- 工作线程AfxBeginThread的使用
- Ubuntu/Fedora高版本安装海思SDK的方法