做为一个JAVA新手,虽然有一些开发的底子,可是在SSM框架的学习中也是步履艰难。俗话说好记性不如烂笔头,在搭建好一个简单的基于SSM框架的小项目后,作如下的整理,文中表达不清楚的地方,还望各位给予建议(学习阶段借鉴雷老师的“SSM高级整合视频教程”,由于本人对版权一事不太清楚,因此此处不在上连接了,有兴趣的同窗能够去找一下相关视频)。html
项目地址:https://gitee.com/soft_luotuo/SSM_Maven前端
win10 64位java
JDK的下载根据本身的形同是64位仍是32位来选择下载,本人电脑是64位的,因此选择如图3.2.1所标注的版本(下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html)。mysql
图 3.2.1git
下载完成后,双击exe文件,一直选择next完成安装,在安装完成以后就是环境变量的配置,步骤以下:web
1)计算机->右键->属性->高级系统设置->高级->环境变量。ajax
2) 在系统变量中选择“新建”按钮(如图3.2.2),在弹出界面中,变量名:JAVA_HOME,变量值:C:\Program Files (x86)\Java\jdk1.8.0_144(这里是个人JDK安装路径,各位根据本身的安装状况来设置)。spring
图 3.2.2sql
3) 设置完成JAVA_HOME环境变量后,在环境变量中找到变量名:Path,点击编辑->新建,增长:%JAVA_HOME%\bin(图3.2.3)。数据库
图 3.2.3
4) 重复上述操做,新建变量名:CLASSPATH,变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
5) 上述4个步骤设置完毕后,下面进行测试,验证安装是否成功。快捷键WIN+R,打开“运行”,输入“cmd”,在弹出的DOS命令页面输入“java -version”命令,回车,出现以下图3.2.4效果,即说明安装JDK成功。
图 3.2.4
JAVA开发使用的IDE工具也比较多,这里我选用的Eclipse(下载地址:https://www.eclipse.org/downloads/),这里值得注意的是对于新手必定要下载正确的JAVA J2EE版本,错误的版本会在搭建项目中出现的异常状况摸不着头脑,下载完成后,若是不须要修改安装路径,一路next到底便可。
安装完成后,打开Eclipse,选择导航栏Window->Preference,弹出页面找到Java->Installed JREs选项,点击Add按钮,找到JRE安装目录,选择安装的JDK文件(图3.3.1)。
图 3.3.1
我这里选择的是Tomcat7.0的版本,你们能够根据本身状况选择不一样的版本(下载地址:http://tomcat.apache.org/download-70.cgi),进入下载页面,选择Core下的符合本身的版本,如图3.4.1是我下载的版本。
图 3.4.1
打开Eclipse中的Window->preference,选择Server选项下的Runtime Environments选项,点击Add按钮添加下载好的本地的Tomcat文件(图3.4.2),至此Tomcat设置完毕。
图 3.4.2
我这里下载的是Maven-3.5.2版本(下载地址:https://maven.apache.org/download.cgi),你们可根据本身的状况选择其余版本下载。下载后解压到方便记忆的路径,下面开始配置环境变量。
1) 计算机->右键->属性->高级系统设置->环境变量->"系统变量"下"新建“按钮。
2) 变量名:MAVEN_HOME,变量值:D:\Java_Tools\apache-maven-3.5.2-bin\apache-maven-3.5.2。
3) 选择“系统变量”下“Path”->编辑,加入:%MAVEN_HOME%\bin。
设置完成后快捷键WIN+R打开“运行”,输入“cmd”打开DOS命令行页面,输入:mvn -version命令,回车,出现如图3.5.1效果,说明Maven环境配置成功。
图 3.5.1
Maven数据仓库分为:本地仓库(当前用户根目录.m2\repository下),远程仓库(包含:中央仓库(https://repo.maven.apache.org/maven2)、私服、其余公共仓库(阿里云、开源中国等))。当咱们引用jar包的时候,Maven会先从本地仓库寻找所需jar包,若是本地仓库中不存在,Maven将会去远程地址下载所需jar包(由于外网地址访问可能受限,这里推荐使用其余公共仓库),下面进行相关配置。
1)打开maven的安装目录(例如:D:\Java_Tools\apache-maven-3.5.2-bin\apache-maven-3.5.2\conf)中的settings.xml文件,修改本地仓库位置到D:\Java_Tools\.m2\repository目录中(注意:Maven安装后默认的本地仓库是用户工做目录下的“.m2/repository“目录,如:C:\Users\Administrator\.m2\repository,由于这个目录中的文件可能会愈来愈多,为了节省C盘空间,建议本身新建一个单独目录保存本地仓库数据),如图3.6.1。
<!-- 修改本地仓库位置 --> <localRepository>D:/Java_Tools/.m2/repository</localRepository>
图 3.6.1
2)打开settings.xml,修改mirror镜像信息,如图3.6.2。
<mirror> <id>alimaven</id> <mirrorOf>aliyun maven</mirrorOf> <name>Central</name> <url>http://maven.aliyun.com/nexus/content/repositories/central</url> </mirror>
图 3.6.2
4)为了防止建立的项目中出现一些异常,下面在Settings.xml中配置maven工程的jdk版本是1.8,如图3.6.3。
<profile> <id>jdk-1.8</id> <activation> <jdk>1.8</jdk> <activeByDefault>true</activeByDefault> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
图 3.6.3
4) 打开Eclipse->window->preferences->Maven->Installations,点击Add添加下载后解压的Maven安装包的位置,勾选新增的Maven版本(如图3.6.4)。
图 3.6.4
4) 打开Eclipse->window->preferences->Maven->User Settings,设置settings.xml的路径(如图3.6.5)。
图 3.6.4
5)配置Maven完成后,查看当前用户目录下是否存在.m2目录(C:\Users\Administrator\.m2),若是不存在,是由于没有执行任何Maven相关的命令,使用任一Maven相关命令后便可出现.m2目录,例如:cmd下执行mvn help:system命令,执行完毕后会发现.m2文件夹已经产生。
在3.5和3.6节对Maven环境及数据仓库配置完毕后,下面来建立Maven项目。
1) 打开Eclipse->Project Explorer->右键->New->Other->Maven->Maven Project(图4.1.1),点击Next按钮。
图 4.1.1
2) 在图4.1.2中,建立一个Maven工程,点击Next按钮。
图 4.1.2
3) 在图4.1.3中,按照本身的状况设置Group Id,Artifct Id,Packaging,点击Finish按钮,完成项目的新建(上述三个名词的具体含义,各位自行查找)。
图 4.1.3
4) 选择maven-archetype-webapp,点击next,如图4.1.4。
图 4.1.4
5)下图4.1.5中GroupId为项目的基本的包名,Artifact Id为项目的名称,Packaging为打包方式,点击Finish完成项目的建立。
图 4.1.5
6)项目建立完毕后,Eclipse会根据Settings.xml文件中的镜像仓库地址去查找并下载所需的jar包到本地仓库(D:\java_tools\.m2\repository)中,同时完善项目的总体目录架构,如图4.1.6。
图 4.1.6
7)工程建立完成后,因为默认的servlet版本比较低,因此进行版本的修改,否则可能会提示“Cannot change version of project facet Dynamic web module to 2.3”的错误提示,在当前项目上右键->properties->Project Facets,按照本身的须要修改配置,如图4.1.7和图4.1.8。
图 4.1.7
图 4.1.8
8)修改完成后,若是web.xml提示错误,建议删除web.xml,去掉上图中Dynamic Web Module的勾选,点击Apply按钮,而后再次勾选Dynamic Web Module选择适合版本,点击Apply按钮,这是会出现如图提示,点击图4.1.9标记内容。
图 4.1.9
9)弹出页面中按下图4.1.10操做,而后保存修改便可。
图 4.1.10
10)完成后,运行项目正常显示网页内容,说明工程建立成功。
下载Spring IDE插件用于web.xml智能提示使用(下载地址:http://spring.io/tools/sts/all),根据本身Eclipse的版本选择下载,如图5.1.1。
图 5.1.1
打开Eclipse->Help->Install New Software,点击Add,添加已下在的本地Spring IDE文件,点击OK,如图5.1.2。
图 5.1.2
选择下图中的文件,去掉最下面复选框的勾选(这个设置会联网更新,由于Spring IDE已下载到本地,故这里不须要联网处理),进行安装,如图5.1..3。
图 5.1..3
包含内容(配置地址:https://mvnrepository.com/):
● Spring
● Spring mvc
● Mybatis
● Mybatis逆向工程包
● 数据库链接、驱动包
● 其余(jstl、junit、servlet-api)
<dependencies> <!-- spring mvc引用 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.0.0.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.0.RELEASE</version> </dependency> <!-- spring aspect引入 提供对aspectj的支持,以即可以方便的将面向切面的功能集成进ide中 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>5.0.0.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</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> <!-- 引入数据链接池包 --> <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- 引入Mysql驱动 --> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.44</version> </dependency> <!-- mybatis逆向工程包()做用生产对应的bean以及mapper等内容) 即代码生成器 --> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <!-- jstl --> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- servlet-api --> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- 引入单元测试包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies>
注意:Spring mvc对于的xml配置文件,例如:applicationContext.xml中若是报错提示:“cvc-elt.1: 找不到元素 'beans' 的声明”,检查是否缺乏“xmlns="http://www.springframework.org/schema/beans"”内容,添加上便可解决。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 设置spring配置文件的位置 --> <!-- needed for ContextLoaderListener --> <context-param> <param-name>contextConfigLocation</param-name> <!-- 指定applicationContext.xml为spring的配置文件 --> <!-- maven构建项目的时候classpath指的是resources文件夹位置 --> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 监听器:监听上面配置文件部署在哪 (学习地址:http://blog.csdn.net/ysughw/article/details/8992322) --> <!-- Bootstraps the root web application context before servlet initialization --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- springmvc的前端控制器,拦截全部请求,负责职责分派(学习地址:http://jinnianshilongnian.iteye.com/blog/1602617) --> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <!--servlet-name加上"-servlet"为springmvc的配置文件 --> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <!-- /表示拦截全部请求 --> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 字符编码过滤器(注意字符编码过滤器必定要放到全部过滤器以前设置) --> <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> <!-- 强制设置请求编码格式为上面设置的utf-8 --> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!-- 强制设置相应编码格式为上面设置的utf-8 --> <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> <!-- 使用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> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <!--springmvc的配置文件,包含网站跳转逻辑的控制及配置 --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd 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-4.3.xsd"> <!-- 设置spring-mvc只扫描Controll控制器。若是use-default-filters设置为true,则spring会扫描base-pack包或者其中子包的@Controller,@Service,@Componet等类,而后把扫描到的这些类注册为bean类。若是use-default-filters设置为false,context:include-filter的expression设置为Controller后,只会扫描@Controler类,而后注册为bean类。(学习地址:http://blog.csdn.net/chunqiuwei/article/details/16115135) --> <context:component-scan base-package="com.maven.ssm" 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> <!-- 两个标准配置 --> <!-- 将spring mvc不能处理的请求交给tomcat --> <mvc:default-servlet-handler /> <!-- 能支持springmvc更高级的一些功能 ,例如JSR303校验,快捷的ajax请求,映射动态请求等 --> <mvc:annotation-driven /> </beans>
<?xml version="1.0" encoding="UTF-8"?> <!-- spring的配置文件,这里主要配置和业务逻辑相关的内容 --> <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: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-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"> <!-- 业务逻辑组件扫描,这里除了springmvc对应的controller以外的其余组件都须要 --> <context:component-scan base-package="com.maven.ssm"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component-scan> <!-- 数据源链接配置 --> <!-- 添加dbconfig.properties文件,设置各个配置节点的值 --> <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"> <!-- mybaits的全局配置文件 --> <property name="configuration" value="classpath:mybatis-config.xml"></property> <!-- 指定数据库的数据源 --> <property name="dataSource" ref="pooledDataSource"></property> <!-- 指定mybatis,mapper文件的位置 --> <property name="mapperLocations" value="classpath:mapper/*.xml"></property> </bean> <!-- 配 置扫描器,将mybatis接口的实现加入到ioc容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--扫描全部dao接口的实现,加入到ioc容器中 --> <property name="basePackage" value="com.maven.ssm.dao"></property> </bean> <!-- 事务控制的配置 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 控制数据源 --> <property name="dataSource" ref="pooledDataSource"></property> </bean> <!-- 开启基于注释的事务,使用xml配置形式的事务(推荐使用配置的方式) --> <aop:config> <!-- 切入表达式(全部返回值类型的service包下或者子包下的全部类中任意多的参数的方法均可以切入) --> <aop:pointcut expression="execution(* com.maven.ssm.service..*(..))" id="txPoint" /> <!-- 指定事务加强的规则 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint" /> </aop:config> <!-- 配置事务加强,事务如何切入 --> <tx:advice id="txAdvice"> <tx:attributes> <!-- 表示全部方法都是事务方法 --> <tx:method name="*" /> <!-- 以get开始的方法都是事务方法 --> <tx:method name="get" read-only="true" /> </tx:attributes> </tx:advice> </beans>
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_test jdbc.driverClass=com.mysql.jdbc.Driver jdbc.user=root jdbc.password=123456
<?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"> <configuration> <settings> <setting name="mapUnderscoreToCamelCase" value="true"></setting> </settings> <typeAliases> <package name="com.manve.ssm.bean"/> </typeAliases> </configuration>
向pom.xml文件中加入如下代码,配置mybatis-generator的jar包(注意:上面的pom.xml文件配置中已添加)。
<!-- mybatis逆向工程包()做用生产对应的bean以及mapper等内容) 即代码生成器 --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency>
1) 在项目下建立mbg.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> <properties resource="dbconfig.properties" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <jdbcConnection driverClass="${jdbc.driverClass}" connectionURL="${jdbc.jdbcUrl}" userId="${jdbc.user}" password="${jdbc.password}"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 指定bean生成位置 --> <javaModelGenerator targetPackage="com.maven.ssm.bean" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 指定sql映射文件的生成位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 指定dao接口的生成位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.maven.ssm.dao" targetProject=".\src\main\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 指定每一个数据库表的生成策略 --> <table tableName="tbl_emp" domainObjectName="Employee"> </table> <table tableName="tbl_dept" omainObjectName="Department"> </table> </context> </generatorConfiguration>
2) 在com.maven.ssm.test包下建立java测试类MBGTest.java文件,运行生成对应逆向工程设置的文件。
package com.maven.ssm.test; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.zip.*; 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 { public static void main(String[] args) 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); } }
3) 配置完成最终项目框架,如图5.9.1
图 5.9.1
整个项目的搭建及配置的过程当中遇坑无数,各类百度找出问题,其中常常致使错误的反而是漏写一个字母或者是敲错一个字母,因此各位在项目搭建的过程必定要全神贯注,不要像我这样粗枝大叶。
介于本人的文笔功底太弱,因此不作过多的赘述。上述内容中若有问题请留言指正,相互学习。