您好,登錄后才能下訂單哦!
初步學(xué)習(xí)SSI框架,做的struts2+spring+ibatis框架整合的小實(shí)例,實(shí)現(xiàn)增刪改查操作。
項(xiàng)目框架如下所示:
準(zhǔn)備工作:導(dǎo)入需要的struts2、spring、ibatis的jar包,這里不一一列舉了。
下面直接上完整的配置文件內(nèi)容和代碼,不說明先后步驟了
一、配置文件
1、spring配置文件applicationContext.xml(業(yè)務(wù)邏輯層)
<?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"> <!-- 引入?yún)?shù)配置文件,數(shù)據(jù)庫配置信息 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:jdbc.properties</value> </list> </property> </bean> <!-- 數(shù)據(jù)源配制 --> <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、數(shù)據(jù)庫參數(shù)配置文件jdbc.properties
jdbc.driverClassName=oracle.jdbc.OracleDriver jdbc.url=jdbc:oracle:thin:@198.10.3.138:1521:fapdb jdbc.username=fapdb jdbc.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、實(shí)體類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> <!-- 插入數(shù)據(jù) --> <insert id="insertUser" parameterClass="com.user.model.User"> insert into gy_user(USERID,USERNAME,PASSWORD) values(#userid#,#username#,#password#) </insert> <!-- 查詢數(shù)據(jù) --> <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> <!-- 刪除數(shù)據(jù) --> <delete id="deleteUser" parameterClass="int"> delete from gy_user where USERID=#id# </delete> <!-- 更新數(shù)據(jù) --> <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參數(shù)配置文件struts.properties
### 默認(rèn)編碼 struts.i18n.encoding=UTF-8 ### 使用spring裝配工廠 struts.objectFactory = spring struts.objectFactory.spring.autoWire = name struts.objectFactory.spring.useClassCache = true struts.multipart.parser=jakarta struts.multipart.saveDir=/tmp struts.multipart.maxSize=209715200 struts.action.extension=do struts.serve.static=true struts.serve.static.browserCache=true struts.enable.DynamicMethodInvocation = true struts.enable.SlashesInActionNames = false struts.tag.altSyntax=true struts.devMode = false struts.i18n.reload=true struts.ui.templateDir=template struts.ui.templateSuffix=ftl struts.configuration.xml.reload=ture struts.ui.theme=simple struts.velocity.configfile = velocity.properties struts.url.http.port = 80 struts.url.https.port = 443 struts.url.includeParams = get struts.dispatcher.parametersWorkaround = false struts.freemarker.templatesCache=false struts.freemarker.beanwrapperCache=false struts.freemarker.wrapper.altMap=true struts.xslt.nocache=false struts.configuration.files=struts-default.xml,struts-plugin.xml,struts.xml struts.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 > </span><package name="default" extends="struts-default"> <span > </span><!-- index_開頭的action,調(diào)用action類中的*方法 --> <span > </span><action name="index_*" class="userAction" method="{1}"> <span > </span><result name="success">/success.jsp</result> <span > </span><result name="userResult">/userResult.jsp</result> <span > </span><result name="successdelete">/success.jsp</result> <span > </span><result name="querybyidRes">/userUpdate.jsp</result> <span > </span><result name="successupdate">/success.jsp</result> <span > </span></action> <span > </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模型層
實(shí)體類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 id public 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接口+實(shí)現(xiàn)(業(yè)務(wù)邏輯層)
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 id public User queryUserById(int id) throws Exception; //刪除用戶 public void deleteUser(int id) throws Exception; //修改用戶 public void updateUser(User user) throws Exception; }
2、Service接口實(shí)現(xiàn)
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 stub System.out.println("插入數(shù)據(jù)User開始--->UserService"); userdao.insertUser(user); System.out.println("插入數(shù)據(jù)User結(jié)束--->UserService"); } //查詢用戶 public List<User> queryUser(User user) throws Exception{ System.out.println("查詢數(shù)據(jù)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("查詢數(shù)據(jù)User結(jié)束--->UserService"); return userlist; } //刪除用戶 public void deleteUser(int id) throws Exception { // TODO Auto-generated method stub System.out.println("刪除數(shù)據(jù)User開始--->UserService"); userdao.deleteUser(id); System.out.println("刪除數(shù)據(jù)User開始--->UserService"); } //查詢用戶by id public User queryUserById(int id) throws Exception { // TODO Auto-generated method stub System.out.println("查詢數(shù)據(jù)BY ID開始--->UserService"+"---"+id); User user=userdao.queryUserById(id); System.out.println("查詢數(shù)據(jù)BY ID結(jié)束--->UserService"+"---"+id); return user; } //修改用戶 public void updateUser(User user) throws Exception { // TODO Auto-generated method stub System.out.println("更新數(shù)據(jù)User開始--->UserService"); userdao.updateUser(user); System.out.println("更新數(shù)據(jù)User開始--->UserService"); } }
五、DAO接口+實(shí)現(xiàn)(持久層)
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 id public User queryUserById(int id); //刪除用戶 public void deleteUser(int id); //修改用戶 public void updateUser(User user); }
2、DAO接口實(shí)現(xiàn)
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("插入數(shù)據(jù)User開始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword()); this.getSqlMapClientTemplate().insert("insertUser",user); System.out.println("插入數(shù)據(jù)User結(jié)束--->UserDao"); } //查詢用戶 public List<User> queryUser(User user){ System.out.println("查詢數(shù)據(jù)User開始--->UserDao"+"---"+user.getUserid()+"-"+user.getUsername()+"-"+user.getPassword()); List<User> userlist=(List<User>)this.getSqlMapClientTemplate().queryForList("queryUser", user); System.out.println("查詢數(shù)據(jù)User結(jié)束--->UserDao"); return userlist; } //刪除用戶 public void deleteUser(int id) { System.out.println("刪除數(shù)據(jù)User開始--->UserDao"+"---"+id); this.getSqlMapClientTemplate().delete("deleteUser", id); System.out.println("刪除數(shù)據(jù)User結(jié)束--->UserDao"+"---"+id); } //查詢用戶by id public User queryUserById(int id) { System.out.println("查詢數(shù)據(jù)BY ID開始--->UserDao"+"---"+id); User user=(User)this.getSqlMapClientTemplate().queryForObject("queryUserById", id); System.out.println("查詢數(shù)據(jù)BY ID結(jié)束--->UserDao"+"---"+id); return user; } //修改用戶 public void updateUser(User user) { System.out.println("更新數(shù)據(jù)User開始--->UserDao"+"---"+user.getUserid()); this.getSqlMapClientTemplate().update("updateUser", user); System.out.println("更新數(shù)據(jù)User結(jié)束--->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" rel="external nofollow" >添加用戶</a><br> <a href="query.jsp" rel="external nofollow" >查詢/管理用戶</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="插入數(shù)據(jù)"></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="修改數(shù)據(jù)"></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() %>" rel="external nofollow" >修改</a></td> <td><a href="index_deleteUser.do?id=<%=userlist.get(i).getUserid() %>" rel="external nofollow" >刪除</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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。