Struts2採用的版本是2.2.3 java
Spring採用的版本是3.0.5 web
MyBatis,便是之前的iBatis。採用的版本是3.0.5 spring
個人習慣呢是一個一個來,先讓struts在系統上跑起來,Struts2的文檔讓偶有點生氣了,由於在之前的Struts2版本中 sql
要這5個jar包就能夠了,如今在新版中要的jar包更多了,每次更具服務器啓動的錯誤信息去找須要的jar包,不過還好沒多久就找全了。將commons-io,commons-lang,commons-fileupload,javassist。加上就差很少能夠了。那些個配置文件還都是同樣的使用,網上都是不少的,就很少說了。 服務器
接着就是加入spring了。這個就先將那些aop,core,orm,jdbc,beans,context,固然還有struts-spring-plugin這個插件jar包加入進來,spring的配置文件固然也不贅述了,啓動服務器吧,出了錯就通常應該就是沒有jar包,挨個挨個找,加進來就能夠了。有些人可能就以爲煩了,讓我本身一個一個試還看這個幹啥。我以爲凡事都要本身親自動手去坐坐,如今時幾個比較經常使用的框架在網上很容易就能找到,若是是不多人用的呢,又很缺乏文檔呢,仍是得靠本身的慢慢摸索。 mybatis
配置spring固然在web.xml中少不了這個監聽器 app
有了spring固然能夠將struts中配置action時須要的對象在spring容器中管理了。 框架
在struts配置action時以下 ide
在spring中配置這個action實例,可是請注意,action的scope是prototype,可是在這裏就不能偷懶不配置action中調用的service實例 this
再下來就是在這個平臺中加入MyBatis了。我也沒有接觸過這個框架,只是想試試,可是用了以後感受真得很不錯,本身寫SQL,可是本身不用去將查詢出來的ResultSet封裝成對象。
看它官方的文檔spring在和它集成是用的是Annotation,可是沒看明白,本身比較笨吧,仍是使用的是xml文件去配置的。將mybatis.jar和mybatis-spring.jar加入系統就能夠了。spring中配置的數據源使用的是DBPooL。spring的配置文件以下:
在Configuration.xml文件中只須要配置<mapper></mapper>就能夠了。
在dao層的類裏面爲了圖方便就直接引用了sqlSessionFactory。上面說到的AccountMapper.xml配置以下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.entity.Account"> <select id="selectAccount" parameterType="String" resultType="org.entity.Account"> select * from account where username =#{username} </select> <insert id="insertAccount"> insert account (username,password) values (#{username},#{password}) </insert> </mapper>
而在dao類中的代碼以下:
private SqlSessionFactory sqlSessionFactory; public final void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; } @Override public void selectAccount(String username) { SqlSession sqlSession = sqlSessionFactory.openSession(); Account account = (Account) sqlSession.selectOne("org.entity.Account.selectAccount", "sanmao"); System.out.println(account); sqlSession.close(); }
這裏還有個很方便的事情就是不用去配置什麼對象屬性和表結構的映射關係。
整個系統搭建好了,引入的jar包以下圖(裏面可能會有多餘的jar包,由於在缺乏包時往裏加包時,肯能往刪除了):