- 本SSM框架是用eclipse搭建,SSM=Spring+SpringMVC+Mybaties,打包工具使用的是Maven,本教程会指导如何搭建SSM框架,一个各种配置文件的意义以及配置方式。
1. 创建maven项目,如下所示
1.第一步
image.png
2.第二步
image.png
3.第三步
image.png
2. 修改工程添加web.xml文件
- 因为按照上述方式创建的项目是没有web.xml文件的,所以使用以下方法为项目创建web.xml文件。
1.选择该项目右击>Properties----->Project Facts------>将Dynamic Web Service 2.5勾去掉(是否是2.5是具体的版本决定的)步骤二取消勾选后先点保存再将其勾选上,否则3不会出现
image.png
2.为web.xml选择保存地址,如步骤四中所示,web.xml一般放置在src/main/webapp目录下,记得一定要勾选5
image.png
3. 为项目配置maven工程
-
maven作为项目管理工具得到了广泛的应用,官方下载地址:http://maven.apache.org/download.cgi
image.png - 下载下来的是免安装的包,只需要解压进行配置便可使用,具体操作如下进行描述
1.解压下载的安装包并放在一个特定的目录,例如我windows的存放路径为:“E:\apache-maven-3.3.9”
- 右击我的电脑,新建系统变量 MAVEN_HOME,变量的值为 (E:\apache-maven-3.3.9)
- 编辑变量path,在最前面加上(%MAVEN_HOME%\bin;)
- 在dos命令下测试是否安装好,输入(mvn -v)或者(mvn -version),看是否如如下图所示信息出现,如有,则表示安装好
image.png
2.修改安装Maven的settings配置文件,文件位置:* E:\apache-maven-3.3.9\conf* ,这个配置文件是有关于你的.m2的文件位置(此目录主要用来放置maven项目依赖的jar包),此时我在settings文件最下面加入这样一句话(<localRepository>D:/m2/repository</localRepository>),这句话指本地maven仓库的地址在D盘的根目录的.m2文件夹下。改完记得保存。如下图所示:
image.png
3.修改maven原来的国外中央仓库为国内的阿里云仓库,加快依赖包的下载速度,具体修改位置和改成什么样子如下图所示:
修改前:
image.png
**修改后:
image.png
- 打开eclipse,选择windows--->preferences,找到Maven,修改默认的Maven插件
image.png
- 点击add,将之前解压的Maven添加进来
image.png - 勾选刚刚添加进来的Maven
image.png - 接着点击user Settings,将Maven里面的settings.xml文件添加进来
image.png - 此时.m2文件的生成路径是在如图所示,其中这个路径已经在前面的setting.xml文件中配置过:
image.png - .m2生成较慢,可以在网上下载一个放置到项目的目录,这样更快。但是不建议那么做,自己按照上述操作一遍也不难。
4. 配置pom.xml文件,引入项目依赖的jar包
- 项目依赖的 jar 包主要包括Spring+Spring MVC + Mybaties + web开发过程中一些常用的包,代码如下所示,都有详细的说明。
-
Maven仓库的地址为: http://mvnrepository.com/ ,在仓库中选择需要下载的Jar包,然后点击复制,以下为一个实例,例如下载Spring-mvc的依赖jar包。
image.png
点进步骤2,如下所示:
image.png
点击依赖复制:
image.png
以下为pom.xml中的文件详情,每一个依赖包有何作用已有备注。
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.atguigu</groupId>
<artifactId>ssm-crud</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<!-- 引入项目依赖的jar包 -->
<!-- springMVC、Spring -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- Spring-JDBC -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- Spring面向切面 编程-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- spring 测试 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- 分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.1</version>
</dependency>
<!-- Mybaties相关的Jar包 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- Mybaties逆向工程的JAR包 -->
<!-- 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>
<!-- 返回json字符串的 支持 -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</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/c3p0/c3p0 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<!-- <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!--jstl,server-api,junit -->
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<!-- tomcat中也有servlet-api包,会发生了冲突 解决方法:添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了 -->
<scope>provided</scope><!-- 告诉服务器已经提供 -->
</dependency>
<!-- junit -->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
5. 配置文件
- 配置文件主要有以下几种
1 web项目------->web.xml,web项目在启动时需要加载很多东西,包括监听器、过滤器、Servlet等
2 Spring ------>applicationContext.xml 主要描述了Spring相关配置信息,包括自动扫描Spring的注解类,引入数据源,创建创建SqlSessionFactory,装配DAO,配置Spring事物,AOP等
3 SpringMVC ---->springmvc-servlet.xml 主要描述了Spring MVC相关配置信息,包括配置控制器,即扫描controller所在的包(故在spring扫描的时候一般不扫描controller包),还有视图解析器、拦截器、映射器和适配器等等
4 Mybatis ---->mybatis-config.xml 主要描述了Mybaties的配置信息
5 数据库 ---->dbconfig.properties 主要描述了数据库的连接池、数据库名、用户名、密码等等,最主要的目的是为了开发过程的方便
-
说明:
1上述只是指出一个web项目中有哪些基本配置文件,在最后的项目中最后不一定是这么写的,比如在最后项目的配置中有可能将Spring与Mybatis的配置文件合到一起,变成spring-mybatis.xml,上述只是一个例子,本项目的搭建也是按照上述例子来的,基于尽量将配置文件分开写清楚一点的原则,当然当自己的自己水平达到一定的深度了以后可以将能合并的文件合并起来,简化配置文件也是推崇的。
配置文件内容如下所示:
1.web.xml配置文件:
- 启动java web程序的时候,java web会读取配置文件web.xml;读取<listener>和<context-param>两个节点,随后创建servletContext(servlet上下文),并且web中是所有部分共享这个上下文;容器将<context-param>转换为键值对,并交给servletContext,web.xml 的加载顺序是:ServletContext-> context-param ->listener -> filter -> servlet,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的。
<?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">
<!--是描述性的文字,可以去掉,cloudGateway指本web项目的名字-->
<display-name>cloudGateway</display-name>
<!--以下配置的加载顺序:先 ServletContext >> context-param >> listener >> filter >> servlet >> spring-->
<!--------------------------------- 1.全局范围内环境参数初始化---------------------------->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<!---------------------------------- 2.监听器的配置 --------------------------------------->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<!-- 防止Spring内存溢出监听器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!----------------------------------- 3.过滤器的配置 -------------------------------------->
<!-- 例:编码过滤器 -->
<filter> <!-- 用来声明filter的相关设定,过滤器可以截取和修改一个Servlet或JSP页面的请求或从一个Servlet或JSP页面发出的响应-->
<filter-name>CharacterEncodingFilter</filter-name> <!--指定filter的名字-->
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--定义filter的类的名称-->
<async-supported>true</async-supported> <!--设置是否启用异步支持-->
<init-param><!--用来定义参数,若在Servlet可以使用下列方法来获得:Stringparam_name=getServletContext().getInitParamter("param-name里面的值");-->
<param-name>encoding</param-name> <!--参数名称-->
<param-value>UTF-8</param-value> <!--参数值-->
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping> <!--用来定义filter所对应的URL-->
<filter-name>CharacterEncodingFilter</filter-name> <!--指定对应filter的名字-->
<url-pattern>/*</url-pattern> <!--指定filter所对应的URL,/*表示所有的url-->
</filter-mapping>
<!------------------------------------------- 4.servlet配置 ------------------------------------------------------------>
<servlet> <!-- 用来申明一个servlet数据 -->
<servlet-name>springmvc</servlet-name> <!-- 指定servlet的名称 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--指定servlet的类名称,这里配置了前端控制器-->
<init-param><!--用来定义参数,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数 -->
<param-name>contextConfigLocation</param-name> <!--参数名称-->
<param-value>classpath:spring/springmvc-servlet.xml</param-value> <!--参数值-->
</init-param>
<load-on-startup>1</load-on-startup><!--当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet.-->
</servlet>
<servlet-mapping><!--用来定义servlet所对应的URL-->
<servlet-name>default</servlet-name><!--指定servlet的名称-->
<url-pattern>/static/*</url-pattern><!--指定servlet所对应的URL-->
</servlet-mapping>
<servlet-mapping><!--用来定义servlet所对应的URL-->
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-----------------------------------------------其他配置------------------------------------------------->
<!-----会话超时配置(单位为分钟)---->
<session-config><!--如果某个会话在一定时间未被访问,则服务器可以扔掉以节约内存-->
<session-timeout>120</session-timeout>
</session-config>
<!-----MIME类型配置---->
<mime-mapping><!--设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开-->
<extension>*.ppt</extension> <!--扩展名名称-->
<mime-type>application/mspowerpoint</mime-type> <!--MIME格式-->
</mime-mapping>
<!-- 欢迎页面,这个不多说 -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!-- 配置错误页面 -->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/views/errors/404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/WEB-INF/views/errors/error.jsp</location>
</error-page>
</web-app>
2. applicationContext.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:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
default-init-method="init">
<!-- 1.自动扫描 将标注Spring注解的类自动转化成bean-->
<context:component-scan base-package="com.macrosan.cloudGateway">
<!-- 不扫描controller,其他都扫描-->
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 2.开启基于AOP功能,AOP如果用不到,可以不写 -->
<aop:aspectj-autoproxy proxy-target-class="true" />
<!-- 3.数据源 ,事务控制 -->
<!-- 引入jdbc配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties" order= "1" ignore-unresolvable="true"/>
<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>
<property name="testConnectionOnCheckin" value="false"/>
<property name="testConnectionOnCheckout" value="true"/>
</bean>
<!-- 4.配置和MyBatis的整合,创建SqlSessionFactory,同时指定数据源 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="pooledDataSource"></property>
<!-- 指定mybatis全局配置文件位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!-- 配置sql映射文件所在位置 注意:默认与mapper类位置相同 -->
<property name="mapperLocations" value="classpath:com/macrosan/cloudGateway/business/daoMapper/*.xml" />
</bean>
<!-- 5.装配dao接口,Mapper接口所在包名,Spring会自动查找其下的Mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.macrosan.cloudGateway.business.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<!-- 默认情况下会自动注入id=sqlSessionFactory的bean,也可以按上述方式指定sqlSessionFactory -->
</bean>
<!-- 6.配置一个可以执行批量的sqlSession -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
<!-- 执行类型批量 -->
<constructor-arg name="executorType" value="BATCH"></constructor-arg>
</bean>
<!-- 7.配置事务管理器,全注解声明式事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 控制住事务源 -->
<property name="dataSource" ref="pooledDataSource"></property>
</bean>
<!--对@Transactional这个注解进行的驱动,这是基于注解的方式使用事务配置声明,这样在具体应用中可以指定对哪些方法使用事务-->
<tx:annotation-driven transaction-manager="transactionManager" />
</beans>
3. springmvc-servlet.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd" >
<!-- 1.扫描controller层,使spring mvc认为该包下使用了@Controller注解的类是控制器 -->
<context:component-scan base-package="com.macrosan.cloudGateway.business.controller" />
<!-- 扫描service层 -->
<!-- 2.视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".html"></property>
</bean>
<!-- 3.配置映射器和适配器,能支持springMVC更高级的一些功能,JSR303校验,快捷的ajax..映射动态请求 -->
<mvc:annotation-driven />
<!-- 4.启用默认Servlet,将springmvc不能处理的请求交给tomcat-->
<mvc:default-servlet-handler/>
<!-- 5.拦截器的配置 -->
<mvc:interceptors>
<bean class="com.macrosan.cloudGateway.business.core.LoginInterceptor" />
</mvc:interceptors>
<!-- 6. 静态资源处理 -->
<mvc:resources mapping="/**" location="/"/>
</beans>
4.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">
<configuration>
<settings>
<!-- 开启驼峰命名规则 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 类型别名 -->
<typeAliases>
<package name="com.macrosan.bean"/>
</typeAliases>
<!-- 分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 分页合理化 -->
<property name="reasonable" value="true"/>
</plugin>
</plugins>
</configuration>
5 dbconfig.properties:
### ------链接mysql
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/cloudGateway?useUnicode=true&characterEncoding=utf-8
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=123456
网友评论