目录
一、介绍
ssm框架项目的开发需要提前搭建好环境,这时需要涉及到mybatis、spring、spring mvc、数据库、日记等等的配置文件和各种包的管理。不好记,但比较固定,需要时只需改动几个地方而已。而开发的重点在于dao层映射文件的编写,service层业务逻辑的编写,controller请求的处理与响应返回。而一般情况下,配置ssm的环境很繁琐,也容易配置错误,因此这篇博客主要是记录配置文件的,末尾也会给出ssm练手小项目的下载地址。听说spring boot配置很少?没学过,以后探讨。
二、环境
很多时候,我的项目不能在别人电脑上运行,就是因为环境不同。如果环境不同,适当修改还是能够解决运行问题的。
- eclipse开发
- maven作为构建工具并管理jar包
- jdk8
- tomcat 8.5
- windows 10
三、配置
2.1、pom.xml
pom.xml中声明了各种依赖下面列出一些必要的,如果还需要则需要自己添加。里面通过注释详细说明了包的作用。其中servlet包需要注意版本和tomcat容器版本对应,参考:Apache Tomcat Versions 。如果需要找jar包,可以在maven公共仓库中找:https://mvnrepository.com/ 。
<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.luo.store</groupId>
<artifactId>shopping</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>shopping Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 指定编码和JDK -->
<properties>
<!-- 指定构建和导出文档时使用的编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 指定JDK版本 -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--第二种方式
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
-->
<!-- maven创建项目时默认jdk为1.5版本的,需要在这里指定版本 -->
<!--
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
-->
<dependencies>
<!-- servlet依赖,版本需要和servlet容器的一致 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- 下面是mybatis和mybatis与spring整合的jar包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- mybatis的日记jar包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<!-- mysql数据库的驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
<!-- 单元测试所用的包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 下面是spring需要的包,包括必备的core、beans、context、aop,与数据库相关的jdbc、tx,同时aop需要用到aspectjweaver包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.1</version>
</dependency>
<!-- spring mvc需要的jar包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.8.RELEASE</version>
</dependency>
<!-- 数据源用到的包 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.5.0</version>
</dependency>
<!-- 使用json需要用到的jar包 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<!-- 文件上传使用的jar包 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</project>
2.2、mybatis-config.xml
数据源和事务管理的配置交给了spring,因此mybatis的配置很简单,就配置了个别名,指定了使用的日记。连mybatis映射文件都不用指定位置,因为mybatis和spring整合过程中,会指定扫描路径,自动扫描配置文件和mapper接口了。
<?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="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="com.luo.store.pojo"/>
</typeAliases>
</configuration>
2.3、log4j.properties
当classpath下有log4j的jar包,mybatis会自动使用log4j,并扫描日记配置文件。
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.luo.store=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.4、applicationContext.xml
spring ioc容器的配置文件,里面整合mybatis,配置了数据源和事务管理。
<?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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
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/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--读取db.properties -->
<context:property-placeholder location="classpath:db.properties"/>
<!-- 启用扫描机制,并指定扫描对应的包。该元素默认启动<context:annotation-config/> -->
<context:component-scan base-package="com.luo.store.service"/>
<!-- 数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 集成MyBatis -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
<!-- 事务管理器配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 使用注解定义事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 采用自动扫描方式创建mapper bean -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.luo.store.dao"/>
</bean>
</beans>
2.5、db.properties
applicationContext.xml中用到了db.properties来配置数据源。这里url要说明下,可能每个人的情况不同,会稍加改动,比如再添加一个编码参数啥滴。其他的用户名和密码当然也得改。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
jdbc.username=root
jdbc.password=123456
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5
2.6、springmvc-config.xml
接下来是spring mvc的配置文件,spring mvc中的组件有很多,但是一般都默认加载好了的,需要配置的不过多。需要开启包扫描和注解,允许静态资源访问,配置视图所在位置啥滴。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-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">
<!-- 配置扫描器 -->
<context:component-scan
base-package="com.luo.store.controller" />
<!-- 注解驱动:配置处理器映射器和适配器 -->
<mvc:annotation-driven>
<!-- 不使用后缀匹配 -->
<mvc:path-matching suffix-pattern="false"/>
</mvc:annotation-driven>
<!-- 允许静态资源访问 -->
<mvc:default-servlet-handler/>
<!-- 配置视图解释器ViewResolver -->
<bean id="jspViewResolver" class=
"org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置文件上传的解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
</bean>
<!-- 配置全局拦截器 -->
<!--
<mvc:interceptors>
<bean class="com.team.bookTicket.util.MyInterceptor"></bean>
</mvc:interceptors>
-->
</beans>
2.7、web.xml
既然是web应用,当然有web.xml,而且spring mvc的核心组件DispatcherServlet是一个servlet,必须要在这声明(不是必须的,3.0开始可以用注解声明servlet了)。然后一般spring mvc容器会有一个父容器,即spring ioc容器,分别对应上面的springmvc-config.xml和applicationContext.xml。除此之外还配置了编码转换器,用于防止中文乱码。
注意web.xml schema的版本,一定要和servlet容器能够支持的servlet版本对应起来。servlet和tomcat版本关系:Apache Tomcat Versions 。然后不同版本schema声明可以在这里找到:web.xml deployment descriptor examples 。
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<display-name>Archetype Created Web Application</display-name>
<!-- 配置加载Spring文件的监听器-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 配置Spring MVC前端核心控制器 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!-- 配置服务器启动后立即加载Spring MVC配置文件 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 编码过滤器 -->
<filter>
<filter-name>encoding</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>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
三、项目结构
ssm环境基本搭建好啦,可以写项目了,下面给出项目的结构。
图中解释很清楚,不多说。
idea中项目结构如下:
四、其他
4.1、小问题
这里稍微提一下可能会遇到的问题。
dynamic web module不能设置为,比如3.1。那么打开项目属性,尝试修改它:
如果没用,则打开项目的配置文件再修改,先通过打开配置文件所在地:
然后修改
重新构建项目,也就是右键项目,maven-->update project... ,不行的话就清空项目:点击菜单栏project-->clean... 。要是实在不行,就退出eclipse重新进。
over。
4.2、eclipse使用
一、运行代码后出现莫名其妙的问题,可能是eclipse生成的临时文件错误。可以通过清空项目缓存、tomcat缓存和重新运行项目解决。
- 清空项目缓存
- 清空tomcat缓存(也可以同时删除项目)
- 重新运行
二、运行项目时
- 编辑java代码或配置文件并保存后,eclipse会自动编译代码,重新发布到tomcat中,再重新运行;
- 如果编辑的是前端代码或web应用配置文件并保存,修改会同时作用在项目和web应用。因此修改html、jsp会立即生效。但是修改web.xml等配置文件却不会,因此tomcat不会自动重新读取,可以重新发布项目或者在tomcat中启动web应用。
项目文件
上传到了csdn,貌似必须需要下载积分。。
地址:https://download.csdn.net/download/jdbdh/10755763