SSI框架小实例,实现增删改查

来源:互联网 发布:无机晶体学数据库 编辑:程序博客网 时间:2024/06/05 18:09

初步学习SSI框架,做的struts2+spring+ibatis框架整合的小实例,实现增删改查操作。

项目框架如下所示:



准备工作:导入需要的struts2、spring、ibatis的jar包,这里不一一列举了。

下面直接上完整的配置文件内容和代码,不说明先后步骤了

一、配置文件

1、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"       xmlns:p="http://www.springframework.org/schema/p"       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"><!-- 引入参数配置文件,数据库配置信息 -->  <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath*:jdbc.properties</value></list></property></bean><!-- 数据源配制 -->  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driverClassName}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><property name="maxActive" value="20" /><property name="maxWait" value="1000" /><property name="testOnBorrow" value="true"/> <property name="testWhileIdle" value="true"/> <property name="validationQuery" value="select 1 from dual"/> <property name="poolPreparedStatements" value="true" /><property name="defaultAutoCommit" value="true" /></bean><!-- 注入ibatis配置文件 --><bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocations"><list><value>classpath*:/sqlMapConfig.xml</value></list></property><property name="dataSource" ref="dataSource" /></bean><!-- action --><bean id="userAction" class="com.user.action.userAction" scope="prototype"><property name="userService" ref="userSI"></property></bean><!-- service --> <bean id="userSI" class="com.user.service.impl.UserServiceImpl"><property name="userdao" ref="userDI" /></bean><!-- dao --><bean id="userDI" class="com.user.dao.impl.UserDaoImpl"><property name="sqlMapClient" ref="sqlMapClient" /></bean> </beans>

2、数据库参数配置文件jdbc.properties

jdbc.driverClassName=oracle.jdbc.OracleDriverjdbc.url=jdbc:oracle:thin:@198.10.3.138:1521:fapdbjdbc.username=fapdbjdbc.password=fapdb

3、ibatis配置文件sqlMapConfig.xml(持久层)

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>    <settings  cacheModelsEnabled="true"                                enhancementEnabled="true"                lazyLoadingEnabled="false"                maxTransactions="32"       maxRequests="512"        maxSessions="128"               useStatementNamespaces="false"/>   <sqlMap resource="com/user/model/sqlmap/User.xml" />   </sqlMapConfig>

4、实体类sql配置文件User.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 namespace="User"><!-- <typeAlias alias="User" type="com.user.model.User"> </typeAlias> --><resultMap id="userResultMap" class="com.user.model.User"><result property="userid" column="USERID" /><result property="username" column="USERNAME" /><result property="password" column="PASSWORD" /></resultMap><!-- 插入数据 --> <insert id="insertUser" parameterClass="com.user.model.User">insert into gy_user(USERID,USERNAME,PASSWORD) values(#userid#,#username#,#password#)</insert><!-- 查询数据 --><select id="queryUser" parameterClass="com.user.model.User" resultClass="com.user.model.User">select USERID,USERNAME,PASSWORD from gy_user<dynamic prepend="where"><isNotEqual prepend="and" property="userid" compareValue="0">USERID=#userid#</isNotEqual></dynamic>order by USERID</select><!-- 查询by id --><select id="queryUserById" parameterClass="int" resultClass="com.user.model.User">select USERID,USERNAME,PASSWORD from gy_user where USERID=#id#</select><!-- 删除数据 --><delete id="deleteUser" parameterClass="int">delete from gy_user where USERID=#id#</delete><!-- 更新数据 --><update id="updateUser" parameterClass="com.user.model.User">update gy_user set USERID=#userid#,USERNAME=#username#,PASSWORD=#password# where USERID=#userid#</update></sqlMap>

5、struts参数配置文件struts.properties

### 默认编码struts.i18n.encoding=UTF-8### 使用spring装配工厂struts.objectFactory = springstruts.objectFactory.spring.autoWire = namestruts.objectFactory.spring.useClassCache = truestruts.multipart.parser=jakartastruts.multipart.saveDir=/tmpstruts.multipart.maxSize=209715200struts.action.extension=dostruts.serve.static=truestruts.serve.static.browserCache=truestruts.enable.DynamicMethodInvocation = truestruts.enable.SlashesInActionNames = falsestruts.tag.altSyntax=truestruts.devMode = falsestruts.i18n.reload=truestruts.ui.templateDir=templatestruts.ui.templateSuffix=ftlstruts.configuration.xml.reload=turestruts.ui.theme=simplestruts.velocity.configfile = velocity.propertiesstruts.url.http.port = 80struts.url.https.port = 443struts.url.includeParams = getstruts.dispatcher.parametersWorkaround = falsestruts.freemarker.templatesCache=falsestruts.freemarker.beanwrapperCache=falsestruts.freemarker.wrapper.altMap=truestruts.xslt.nocache=falsestruts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xmlstruts.mapper.alwaysSelectFullNamespace=false

6、struts配置文件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>    <span style="white-space:pre"></span><package name="default" extends="struts-default">    <span style="white-space:pre"></span><!-- index_开头的action,调用action类中的*方法 -->    <span style="white-space:pre"></span><action name="index_*" class="userAction" method="{1}">    <span style="white-space:pre"></span><result name="success">/success.jsp</result>    <span style="white-space:pre"></span><result name="userResult">/userResult.jsp</result>    <span style="white-space:pre"></span><result name="successdelete">/success.jsp</result>    <span style="white-space:pre"></span><result name="querybyidRes">/userUpdate.jsp</result>    <span style="white-space:pre"></span><result name="successupdate">/success.jsp</result>    <span style="white-space:pre"></span></action>    <span style="white-space:pre"></span></package>    </struts>


7、web.xml配置文件

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>    <!-- 配置Spring -->   <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath*:applicationContext.xml</param-value>  </context-param>  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>      <!-- 配置Struts -->   <filter><filter-name>struts</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts</filter-name><url-pattern>*.do</url-pattern></filter-mapping><filter-mapping><filter-name>struts</filter-name><url-pattern>*.action</url-pattern></filter-mapping><filter-mapping><filter-name>struts</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping></web-app>

二、model模型层

实体类User.java

package com.user.model;public class User {private int userid;private String username;private String password;public int getUserid() {return userid;}public String getUsername() {return username;}public String getPassword() {return password;}public void setUserid(int userid) {this.userid = userid;}public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}}

三、Action控制层

userAction.java类

package com.user.action;import java.util.List;import javax.servlet.http.HttpServletRequest;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import com.user.model.User;import com.user.service.UserService;public class userAction extends ActionSupport{HttpServletRequest request;private User user;private UserService userService;int id;public int getId() {return id;}public void setId(int id) {this.id = id;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}public UserService getUserService() {return userService;}public void setUserService(UserService userService) {this.userService = userService;}public String insertUser() throws Exception{userService.insertUser(user);return "success";}//查询用户public String queryUser() throws Exception{List<User> userlist=userService.queryUser(user);System.out.println("userAction--size--"+userlist.size());for(int i=0;i<userlist.size();i++) {  System.out.println("userAction--"+userlist.get(i).getUserid()+"-"+userlist.get(i).getUsername()+"-"+userlist.get(i).getPassword());  }ActionContext.getContext().getSession().put("userresult", userlist);System.out.println("*****");return "userResult";}//删除用户public String deleteUser() throws Exception{System.out.println("userid:"+id);userService.deleteUser(id);return "successdelete";}//查询用户by idpublic String queryUserById() throws Exception{System.out.println("userid:"+id);User user=userService.queryUserById(id);System.out.println("--userAction--"+user.getUserid()+"--"+user.getUsername()+"--"+user.getPassword());ActionContext.getContext().getSession().put("result", user);return "querybyidRes";}//修改用户public String updateUser() throws Exception{userService.updateUser(user);return "successupdate";}}

四、Service接口+实现(业务逻辑层)

1、Service接口

UserService.java类

package com.user.service;import java.util.List;import com.user.model.User;public interface UserService {//添加用户public void insertUser(User user) throws Exception;//查询用户public List<User> queryUser(User user) throws Exception;//查询用户by idpublic User queryUserById(int id) throws Exception;//删除用户public void deleteUser(int id) throws Exception;//修改用户public void updateUser(User user) throws Exception;}

2、Service接口实现

UserServiceImpl.java类

package com.user.service.impl;import java.util.List;import com.user.model.User;import com.user.service.UserService;import com.user.dao.UserDao;public class UserServiceImpl implements UserService{private UserDao userdao=null;public UserDao getUserdao() {return userdao;}public void setUserdao(UserDao userdao) {this.userdao = userdao;}//添加用户public void insertUser(User user) throws Exception {// TODO Auto-generated method stubSystem.out.println("插入数据User开始--->UserService");userdao.insertUser(user);System.out.println("插入数据User结束--->UserService");}//查询用户public List<User> queryUser(User user) throws Exception{System.out.println("查询数据User开始--->UserService");List<User> userlist=userdao.queryUser(user);System.out.println("UserService--size--"+userlist.size());for(int i=0;i<userlist.size();i++) {  System.out.println("UserService--"+userlist.get(i).getUserid()+"-"+userlist.get(i).getUsername()+"-"+userlist.get(i).getPassword());  }System.out.println("查询数据User结束--->UserService");return userlist;}//删除用户public void deleteUser(int id) throws Exception {// TODO Auto-generated method stubSystem.out.println("删除数据User开始--->UserService");userdao.deleteUser(id);System.out.println("删除数据User开始--->UserService");}//查询用户by idpublic User queryUserById(int id) throws Exception {// TODO Auto-generated method stubSystem.out.println("查询数据BY ID开始--->UserService"+"---"+id);User user=userdao.queryUserById(id);System.out.println("查询数据BY ID结束--->UserService"+"---"+id);return user;}//修改用户public void updateUser(User user) throws Exception {// TODO Auto-generated method stubSystem.out.println("更新数据User开始--->UserService");userdao.updateUser(user);System.out.println("更新数据User开始--->UserService");}}

五、DAO接口+实现(持久层)

1、DAO接口

UserDao.java类

package com.user.dao;import java.util.List;import com.user.model.User;;public interface UserDao {//添加用户public void insertUser(User user);//查询用户public List<User> queryUser(User user);//查询用户by idpublic User queryUserById(int id);//删除用户public void deleteUser(int id);//修改用户public void updateUser(User user);}

2、DAO接口实现

UserServiceImpl.java类

package com.user.dao.impl;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;import com.user.dao.UserDao;import com.user.model.User;public class UserDaoImpl extends SqlMapClientDaoSupport implements UserDao{//添加用户public void insertUser(User user ){System.out.println("插入数据User开始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword());this.getSqlMapClientTemplate().insert("insertUser",user);System.out.println("插入数据User结束--->UserDao");}//查询用户public List<User> queryUser(User user){System.out.println("查询数据User开始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword());List<User> userlist=(List<User>)this.getSqlMapClientTemplate().queryForList("queryUser", user);System.out.println("查询数据User结束--->UserDao");return userlist;}//删除用户public void deleteUser(int id) {System.out.println("删除数据User开始--->UserDao"+"---"+id);this.getSqlMapClientTemplate().delete("deleteUser", id);System.out.println("删除数据User结束--->UserDao"+"---"+id);}//查询用户by idpublic User queryUserById(int id) {System.out.println("查询数据BY ID开始--->UserDao"+"---"+id);User user=(User)this.getSqlMapClientTemplate().queryForObject("queryUserById", id);System.out.println("查询数据BY ID结束--->UserDao"+"---"+id);return user;}//修改用户public void updateUser(User user) {System.out.println("更新数据User开始--->UserDao"+"---"+user.getUserid());this.getSqlMapClientTemplate().update("updateUser", user);System.out.println("更新数据User结束--->UserDao"+"---"+user.getUserid());}}

六、JSP文件(表示层)

1、index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>    <body>    <a href="userAdd.jsp">添加用户</a><br>    <a href="query.jsp">查询/管理用户</a>  </body></html>

2、query.jsp查询页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>    <body>  <form action="index_queryUser.do" method="post">    用户ID:<input type="text" name="user.userid" id="userid">    <input type="submit" value="查询">    </form>  </body></html>

3、userAdd.jsp添加用户页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>     </head>    <body>    <form action="index_insertUser.do" method="post">    <table>    <tr>    <td>用户ID:</td>    <td><input type="text" name="user.userid" id="userid"></td>    </tr>    <tr>    <td>用户名:</td>    <td><input type="text" name="user.username" id="username"></td>    </tr>    <tr>    <td>密码:</td>    <td><input type="text" name="user.password" id="password"></td>    </tr>    <tr>    <td><input type="submit" value="插入数据"></td>    </tr>    </table>    </form>  </body></html>

4、userUpdate.jsp修改用户页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="com.user.model.User" ;%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>     </head>    <body>  <%  User user=(User)session.getAttribute("result");  %>    <form action="index_updateUser.do" method="post">    <table>    <tr>    <td>用户ID:</td>    <td><input type="text" name="user.userid" id="userid" value="<%=user.getUserid() %>" readonly></td>    </tr>    <tr>    <td>用户名:</td>    <td><input type="text" name="user.username" id="username" value="<%=user.getUsername() %>"></td>    </tr>    <tr>    <td>密码:</td>    <td><input type="text" name="user.password" id="password" value="<%=user.getPassword() %>"></td>    </tr>    <tr>    <td><input type="submit" value="修改数据"></td>    </tr>    </table>    </form>  </body></html>

5、userResult.jsp用户列表

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="com.user.model.User" ;%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head>  </head>    <body>  <%  List<User> userlist=(List<User>)session.getAttribute("userresult");   System.out.println("userResult.jsp--size--"+userlist.size());  for(int i=0;i<userlist.size();i++) {  System.out.println("userResult.jsp--"+userlist.get(i).getUserid()+"-"+userlist.get(i).getUsername()+"-"+userlist.get(i).getPassword());  }  %>    <table border="1">    <tr>    <td>用户ID</td>    <td>用户名</td>    <td>密码</td>    <td>修改</td>    <td>删除</td>    </tr>    <%for(int i=0;i<userlist.size();i++) {%>    <tr>    <td><%=userlist.get(i).getUserid() %></td>    <td><%=userlist.get(i).getUsername() %></td>    <td><%=userlist.get(i).getPassword() %></td>    <td><a href="index_queryUserById.do?id=<%=userlist.get(i).getUserid() %>">修改</a></td>    <td><a href="index_deleteUser.do?id=<%=userlist.get(i).getUserid() %>">删除</a></td>    </tr>    <%} %>    </table>  </body></html>

6、success.jsp操作成功页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>  </head>    <body>    操作成功!  </body></html>


1 0
原创粉丝点击