SSM整合教程(MAVEN,相當的詳細,細節)
目錄
六,控制層測試和檢視層測試
七,注意事項
九,關於資料庫:自己建立一個數據庫,建立表,以及修改資料來源。
前言:跟著我的思路走,應該可以成功的完成一個SSM框架的整合
使用maven來構建專案的話,首先不用自己去導包之類的,使用eclipse中自帶的maven或者你下載的maven都行,之前的文章也都瞭解關於maven知識。第一步主要做的事情就是修改jdk的版本。
這是我剛構建的maven專案的目錄結構(J2SE-1.5),其中就確實了java和test,不需要我們去自己建立,修改版本號就可以。
還以一個地方就是這兒
這兩個地方改完之後我們的maven專案就算完成了,完成之後的目錄就夠是這樣的。
這裡報錯的原因是,index.jsp報錯,因為我們沒有匯入servlet的依賴,但是沒有任何的影響,接下來就是我們要做的正經事情。
首先我們來理一下這裡邊我們到底要新增多少依賴。
第一組:spring web ,spring webmvc ,spring jdbc
第二組:mybatis , mybatis spring
第三組: servlet , jstl , mysql connector(必須或者 oracle的驅動),json
第三組呢,主要是方便學習用的,可有可無。
看一下主要的依賴。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.j2ee</groupId> <artifactId>ProSSM</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ProSSM Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring web --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- spring web mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- spring jdbc --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- mybatis spring --> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!-- servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!-- jstl --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.8.RELEASE</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.32</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.46</version> </dependency> </dependencies> <build> <finalName>ProSSM</finalName> </build> </project>
當然這些依賴全部新增儲存之後,我們來看一下Jar包
在resources的檔案下,建立spring.xml
1.各種xsd檔案的url
2.自動掃秒的包(包中是類的使用自動掃描 是介面的使用bean掃描)
3.資料來源
4.會話工廠
5.事務管理
6.試圖解析器
以上就是我們基本上要新增的內容。spring.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:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 檢視解析器 --> <bean id="idvr" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="suffix" value=".jsp" /> <property name="prefix" value="/" /> </bean> <!-- 資料來源 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/democ" /> <property name="username" value="root" /> <property name="password" value="a123456" /> </bean> <!-- 會話工廠 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath:mapper/*.xml"/> </bean> <!-- 事務管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 通過註解 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 自動掃描 --> <mvc:annotation-driven /> <context:annotation-config/> <context:component-scan base-package="bizImpl"/> <context:component-scan base-package="controller"/> <!-- 掃描mapper的內容 因為mapper是介面 代理類 需要sqlSessionFactory引數--> <bean id="msc" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="mapper" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> </beans>
平時我們可能不需要引數之類的,因為他自動會去載入 XXX-servlet.xml在WEB_INF目錄下,這次我們來自己指定。
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>ssm</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 直接找專案中尋找spring.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ssm</servlet-name>
<url-pattern>*.spring</url-pattern>
</servlet-mapping>
</web-app>
五,測試
說一下測試的要點
1.mysql資料庫中democ資料庫,在配置資料來源的時候就可以看到。
2.bean 包 biz包 bizImpl包 mapper包
3.bean -----------------UserInfo(POJO)
4.biz--------------------- biz Interface
5.bizImpl---------------biz interface instance class
6.mapper--------------mapperXML,mapper interface
7.test
先看目錄結構: 其中的類,介面 我已經解釋過了
實現:
package bean;
public class UserInfo {
private Integer userId;
private String userName;
private String userSex;
private Integer userAge;
private String userAddress;
public UserInfo() {
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public String getUserAddress() {
return userAddress;
}
public Integer getUserAge() {
return userAge;
}
public void setUserAge(Integer userAge) {
this.userAge = userAge;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
@Override
public String toString() {
return "UserInfoBean [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAddress="
+ userAddress + "]";
}
}
package biz;
/**
* 業務介面
*/
import java.util.List;
import bean.UserInfo;
public interface UserBiz {
/**
* 查詢所有的使用者
*/
public List<UserInfo> findAllUser();
}
package bizImpl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import bean.UserInfo;
import biz.UserBiz;
import mapper.User;
@Service
public class UserInfoImpl implements UserBiz{
@Autowired
private User um;
//全查詢 進行業務包裝
public List<UserInfo> findAllUser() {
return um.findAllUser();
}
}
package mapper;
import java.util.List;
import bean.UserInfo;
public interface User {
public List<UserInfo> findAllUser();
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mabatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.User">
<select id="findAllUser" resultType="bean.UserInfo">
SELECT * FROM USERINFO
</select>
</mapper>
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import bean.UserInfo;
import biz.UserBiz;
import bizImpl.UserInfoImpl;
public class Test {
public static void main(String[] args) {
/**
* 先使用這樣的方式測試 , 只要查詢資料 就會返回一個集合 檢視集合的長度 ,我們會檢測出 持久城的錯誤。
*/
ApplicationContext bean = new FileSystemXmlApplicationContext("src/main/resources/spring.xml");
//代理
UserBiz ub=bean.getBean("userInfoImpl",UserInfoImpl.class);
List<UserInfo> list = ub.findAllUser();
System.out.println(list.size());
}
}
結果:
大功告成,接下來就是書寫cotroller層的東西。你可以選擇使用AJAX方式(esayUI)或者其他方式來實現,基本上已經完成。
六,控制層測試和檢視層測試
使用很簡單的方式是來測試
使用esayUI 查詢esayUI的包新增進來 ,編寫html
最終的目錄結構:
完成。
七,注意事項
1.各個jar包的版本號,需要注意,我在整合的過程中版本號讓我很難受。
2.關於mapper的注意事項很多
3.關於easyUI的url
4.在spring.xml中各個部分需要注意
5.在不清楚的情況下,可以直接複製到程式碼,整合是成功的!或者下載專案。