如何快速搭建一個ssm框架
首先我們需要建立一個maven專案
1.右鍵 new maven project
第一個勾選然後下一步
groupid 可以寫com.xxx.xxx 之類的
artifaceid 寫專案名 xxx
web專案選擇打war包 然後下一步就ok
2.專案中少web.xml /WEB-INFO 右鍵專案 properties → project faces → Dynamic Web Module 勾選去掉點選apply →再勾選上 然後 它會提醒你配置 然後第二個框目錄 寫src/main/webapp 應用就好了 maven的setting 路徑自己配置 映象位置推薦用阿里雲的
3.pom檔案的配置
這裡jar包miss報錯 還有專案紅色歎號 怎麼弄maven update project 還有build path clean都沒有用, 直接去網址下載jar包 然後放進資料夾裡
具體的pom 需要的jar包 如下
<dependencies> <!-- springwebmvc包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- springjdbc事務控制 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!--spring aspects 面向切面程式設計 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <!-- mybatis spring 整合適配 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!--資料庫連結池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <!--mysql驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> <!--開發web的標配包 jstl seevlet-api junit --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> <!--系統本來就有打包自動剔除 --> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies>
4.我們對WEB-INF 下的web.xml 進行編寫 <web-app> </web-app> 這個分開 在裡面補充
1).spring 的容器 ContextLoaderListener 快捷鍵補全 alt+/
<param-value>classpath:applicationContext.xml</param-value>
只用修改這個 並且在src/main/resources 右鍵 new spring bean configuration File 建立上面的 spring的配置檔案
2).springMVC前端控制器
DispatcherServlet 快捷鍵提示補全
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>location</param-value>
</init-param> 刪掉不指定 預設全部掃描
將<servlet-name>dispatcherServlet</servlet-name> 全改成這個名
<url-pattern>/</url-pattern> 全部掃描
然後在web.xml同級目錄下建立dispatcherServlet-servlet.xml 建立方式同上applicationContext.xml
在這個裡面控制springMVC掃描
3).新增兩個基本的過濾器
<!-- 3.字元編碼過濾器 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name> <!-- 這些屬性可以在類中看 -->
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name> <!-- 返回 -->
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name> <!-- 響應 -->
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern> <!--攔截所有 -->
</filter-mapping>
<!--4.Rest風格的URI 將頁面post請求轉為指定的delete 或者put請求 -->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern> <!--攔截所有 -->
</filter-mapping>
5.在dispatcherServlet-servlet.xml配置檔案頂部加這個
xmlns:context="http://www.springframework.org/schema/context"
然後對SpringMVC 的配置檔案 包含網站跳轉邏輯的控制,配置 即註解的掃描的範圍的指定
選擇該xml下面的Namespaces mvc勾選上
<!-- SpringMVC 的配置檔案 包含網站跳轉邏輯的控制,配置 -->
<context:component-scan base-package="com.ice" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--配置檢視解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property> <!--指定頁面位置 -->
<property name="suffix" value=".jsp"></property> <!-- 指定字尾 -->
</bean>
<!-- 兩個標準配置 -->
<!-- 將springmvc不能處理的交給tomcat -->
<mvc:default-servlet-handler/>
<mvc:annotation-driven>
<!-- 能支援springmvc更高階的一些功能 快捷的ajax請求, JSR303校驗,對映動態請求 -->
</mvc:annotation-driven>
6. 配置c3p0資料庫相關
在applicationContext.xml 檔案開啟 然後選擇namespace aop(√) context (√) tx(√)
<context:component-scan base-package="com.ice">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <!-- springmvc掃描帶註解的這裡spring不掃描 -->
</context:component-scan>
<!-- spring的配置檔案 與主要配置及業務邏輯有關的 -->
<!-- 資料來源的控制 事務控制 xxx -->
<context:property-placeholder location="classpath:dbconfig.properties"/>
<bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 配置和mybatis的整合 -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--指定mybatis全域性配置檔案的位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!--資料來源就是上面的資料來源 -->
<property name="dataSource" ref="pooledDataSource"></property>
<!-- mapper 檔案放的位置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
<!-- 配置掃描器 將mybatis介面的實現加入到ioc容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--掃描所有dao介面的mapper的實現 加入到ioc容器中 -->
<property name="basePackage" value="com.ice.dao"></property>
</bean >
<!--事務控制 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="pooledDataSource"></property> <!-- 說明資料來源 -->
</bean>
<!-- 開啟註解的事務,使用xml配置的形式的事務(比較重要的使用這個) -->
<aop:config>
<!-- 切入表示式 下面是所有的方法多少個引數都能切入事務-->
<aop:pointcut expression="execution(* com.ice.service..*(..))" id="txPoint"/>
<!-- 配置事務增強 -->
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
</aop:config>
<!-- 配置事務增強如何切入 -->
<tx:advice id="txAdvice" ><!-- 預設屬性transaction-manager="transactionManager" -->
<tx:attributes>
<tx:method name="*"/> <!--所有方法都是事務方法 -->
<tx:method name="get*" read-only="true"/><!-- 以get開始的所有方法 -->
</tx:attributes>
</tx:advice>
此步驟建立了 mapper包 同時還有mybatis的配置檔案 mybatis-config.xml 與applicationContext在同一目錄下
7.mybatis的配置 mybatis-config.xml的主要配置如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"> <!--從mybatis官網的 getting started 獲得 -->
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/> <!-- 這個類從configuration xml settings mapUnderscoreToCamelCase 駝峰命名規則 -->
</settings>
<typeAliases >
<package name="com.ice.bean" />
</typeAliases>
</configuration>
然後就是 mybatis逆向工程 必須的xml 和java類
這個是xxx.xml 直接放在包下面 跟pom.xml同級
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--資料庫驅動,最好不要有中文字元,不然會找不到-->
<!-- <classPathEntry location="D:/mysql-connector-java-5.1.40-bin.jar" /> -->
<context id="cosmetic" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- 是否去除自動生成的註釋 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--配置資料庫連結資訊賬號密碼-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.204.131:3306/ssh_crud" userId="root" password="123456">
</jdbcConnection>
<!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 和
NUMERIC 型別解析為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!--生成javabean類存放位置-->
<javaModelGenerator targetPackage="com.ice.bean" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成對映檔案mapper介面存放位置-->
<sqlMapGenerator targetPackage="com.ice.dao" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成mapper介面、mapper.xml類存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.ice.dao" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成對應表及類名,需要記住的一點是逆向工程無法生成關聯關係,只能生成單表操作-->
<table tableName="emp" domainObjectName="Employee" />
<table tableName="dept" domainObjectName="Department" />
</context>
</generatorConfiguration>
xxx.java
package com.ice.test;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
public class MBGTest {
//生成bean mapper 的方法
public void generator() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置檔案
File configFile = new File("mbg.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null);
}
public static void main(String[] args) throws Exception {
try {
MBGTest generatorSqlmap = new MBGTest();
generatorSqlmap.generator();
} catch (Exception e) {
e.printStackTrace();
}
}
}
執行上面的java 就生成了所需的 mapper 以及實體類javabean
我們的框架三部分就完成的差不多了