记录一下老师讲的SSM框架的搭建过程
一:Maven国内镜像配置与工程创建
(1)配置maven镜像
由于默认的maven所需要的包在首次运行会自动下载,而下载的来源是外网,下载速度非常慢,因此需要配置一个国内的镜像,提高下载速度。
实测2021/9/1可用,将下列代码加入下列路径中:
E:\idea\IntelliJ IDEA 2021.1.2\plugins\maven\lib\maven3\conf\settings.xml(自己idea的安装位置)
在<mirrors></mirrors>标签内加入以下内容:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>central</id>
<name>Maven Repository Switchboard</name>
<url>http://repo1.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
<mirror>
<id>ibiblio</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<!-- *仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
如图所示。
(2)创建maven工程
此步,工程创建完毕。
二:相关包的下载和xml依赖的创建与导入
(1)导入pom.xml相关依赖
由于新建了一个Maven项目,要建立一个SSM框架就需要我们导入相应的依赖文件,并且下载响应的jar包才能运行,所以我们需要导入依赖。
1.pom.xml
我们可以看到项目中有一个pom.xml文件
这个文件是创建项目会自动生成的一个xml文件,用于约束规定相应的依赖
在其中导入已下内容
<?xml version="1.0" encoding="UTF-8"?>
<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.zxs.day1</groupId>
<artifactId>day1</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>day1 Maven Webapp</name>
<!-- FIXME change it to the project‘s website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>5.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
<scope>runtime</scope>
</dependency>
<dependency>
<!--jdbc连接池-->
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.4</version>
</dependency>
<!-- mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- Servlet web -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<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>
</dependency>
<!-- 日志文件管理包 -->
<!-- log start -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
<build>
<finalName>day1</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
-------------------------------------分界线-------------------------------------------
添加完成后如果报错,点击这个
点击这个进行下载资源包,等待下载完成后再点刷新完成配置
此步,pom.xml配置完成
(2)配置applicationContext.xml文件
applicationContext文件,个人感觉就是一个类似于容器的东西,常搭配ClassPathXmlApplicationContext和FileSystemXmlApplicationContext用于获取创建方法的xml文件路径(?话说我写了个啥玩意儿)
这里主要提一下配置xml,如下图,没有就自己建一个,建在/src/main/resources下
然后直接插入以下东西
<?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"
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/tx http://www.springframework.org/schema/tx/springtx.xsd">
<!--配合MyBatis-->
<!--配置数据库参数-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--数据库连接池-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--配置连接池属性-->
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!--c3p0连接池私有属性-->
<property name="maxPoolSize" value="${maxPoolSize}"/>
<property name="minPoolSize" value="${minPoolSize}"/>
<property name="checkoutTimeout" value="${checkoutTimeout}"/>
<property name="acquireRetryAttempts" value="${acquireRetryAttempts}"/>
</bean>
<!-- 配置 SqlSessionFactory 对象,spring和MyBatis完美整合,不需要mybatis的配置映射文件-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据库连接池-->
<property name="dataSource" ref="dataSource"/>
<!-- 配置 MyBaties 全局配置?件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 扫描 model 包 使?别名 -->
<property name="typeAliasesPackage" value="com.example.entity"/>
<!-- 扫描 sql 配置?件:mapper 需要的 xml ?件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- 配置扫描 dao 接?包, 动态实现 dao 接?, 注?到 Spring 容器中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注? sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 给出需要扫描 dao 接?包 -->
<property name="basePackage" value="com.example.dao"/>
</bean>
<!--spring-service-->
<!-- 扫描 service 包下所有使?注解的类型 -->
<context:component-scan base-package="com.example.service"/>
<!-- 配置事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注?数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
</bean>
</beans>
-------------------------------------分界线-------------------------------------------
这个颜色的内容表示加载同级目录下的jdbc.properties和mybatis-config.xml文件内写的方法和内容
这个颜色的内容表示加载和扫描逻辑层dao、service、entitiy包下的内容,自己如果写可能包名不一样,那么要修改路径,要注意
这个颜色的内容表示加载/src/main/resource/mapper目录下所有xml文件内的内容,一般是dao层的sql语句映射xml文件,自己可能包名不一样或者没有创建包,那么要修改路径,要注意
(3)配置jdbc.properties文件
不过多赘述了,数据库连接配置文件,我用的是mysql5.7的,连接方式和8可能不一样,自行修改
依旧是没有就自己创建,如图
创建完成后复制以下内容
jdbc.driver=com.mysql.jdbc.Driver
#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
jdbc.url=jdbc:mysql://localhost:3306/work_test?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
maxPoolSize=20
minPoolSize=10
checkoutTimeout=60000
acquireRetryAttempts=3
红色是数据库名//紫色是数据库连接用户名和密码
(4)配置log4j.properties文件
这是日志启动的配置文件(?应该)反正配就完了,不配报错跑不起来
老规矩,没有自己创建,如图
创建完成后复制以下内容
log4j.rootLogger=INFO,Console,File
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
log4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = logs/ssm.log
log4j.appender.File.MaxFileSize = 10MB
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
### show sql ###
#log4j.logger.com.ibatis=debug
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
#log4j.logger.java.sql.Connection=debug
#log4j.logger.java.sql.Statement=debug
#log4j.logger.java.sql.PreparedStatement=debug
(5)配置mybatis-config.xml文件
依旧是mybatis的全局config配置文件,关于数据库的一些约束
废话不多说,新建,如图
创建完成后,复制以下内容
<?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>
<!-- 显示mapper.xml文件中执行的sql语句-->
<setting name="logImpl" value="STDOUT_LOGGING" />
<!-- 使?jdbc的getGeneratedKeys获取数据库?增主键值 -->
<setting name="useGeneratedKeys" value="true" />
<!-- 使?列别名替换列名 默认:true -->
<setting name="useColumnLabel" value="true" />
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
(6)配置springmvc.xml文件
配置springmvc文件,主要是用于控制层contriller的请求响应与视图化解析(?不知道我在说什么)
总之,是很重要的东西,先和以前一样,先创建它
创建完成后,复制
<?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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- controller扫描器 -->
<context:component-scan base-package="com.example.controller"/>
<!-- 配置注解驱动 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value=""/>
<!--后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!--静态资源默认servlet配置
(1)加?对静态资源的处理: js,gif,png
(2)允许使?"/"做整体映射
-->
<mvc:default-servlet-handler/>
</beans>
-------------------------------------分界线-------------------------------------------
这个颜色的内容表示扫描控制层controller包下的内容,可能包名或者位置不一样,自行修改注意
(7)配置web.xml文件
web.xml文件用于配置读取applicationcontext容器传值和springmvc的相关内容(?继续胡言乱语)
web.xml文件位于src/main/webapp/WEB-INF下,如果没有,需要自己创建,如图
创建完成后,复制以下内容
<?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_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Archetype Created Web Application</display-name>
<!--Spring MVC 配置 并添加监听-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 字符过滤器 传值乱码-->
<filter>
<filter-name>encodingFilter</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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--配置前端控制器 进行请求分发 DispatcherServlet本质也是一个Servlet -->
<servlet>
<!--名字可以自定义-->
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--标记容器启动的时候就启动这个servlet-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!--拦截所有-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
-------------------------------------分界线-------------------------------------------
此颜色的内容表示读取相应resources目录下的applicationContext.xml文件和springmvc.xml文件的内容,我们上面已经创建了
至此,框架搭建完成,接下来就是相应的逻辑层的编写和前端页面的编写。