一、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/maven-v4_0_0.xsd" >
< modelVersion> 4.0 .0 < / modelVersion>
< groupId> org. example< / groupId>
< artifactId> TheMainOfSSM < / artifactId>
< packaging> war< / packaging>
< version> 1.0 - SNAPSHOT < / version>
< name> TheMainOfSSM Maven Webapp < / name>
< url> http: / / www. example. com< / url>
< properties>
< project. build. sourceEncoding> UTF - 8 < / project. build. sourceEncoding>
< maven. compiler. source> 1.8 < / maven. compiler. source>
< maven. compiler. target> 1.8 < / maven. compiler. target>
< junit. version> 4.10 < / junit. version>
< spring. version> 4.3 .8 . RELEASE < / spring. version>
< mybatis. version> 3.2 .8 < / mybatis. version>
< mybatis. spring. version> 1.3 .2 < / mybatis. spring. version>
< mysql. version> 8.0 .31 < / mysql. version>
< druid. version> 1.1 .6 < / druid. version>
< slf4j. version> 1.6 .4 < / slf4j. version>
< jstl. version> 1.2 < / jstl. version>
< servlet- api. version> 2.5 < / servlet- api. version>
< jsp- api. version> 2.0 < / jsp- api. version>
< jackson. version> 2.9 .9 < / jackson. version>
< / properties>
< dependencies>
< ! -- 单元测试 -- >
< dependency>
< groupId> junit< / groupId>
< artifactId> junit< / artifactId>
< version> ${ junit. version} < / version>
< ! -- scope 作用域:仅限于测试使用 -- >
< scope> test< / scope>
< / dependency>
< ! -- Spring 和 spring- mvc 两个框架的jar包 -- >
< dependency>
< groupId> org. springframework< / groupId>
< artifactId> spring- webmvc< / artifactId>
< version> ${ spring. version} < / version>
< / dependency>
< ! -- SSM 整合的时候 需要导spring- jdbc -- >
< dependency>
< groupId> org. springframework< / groupId>
< artifactId> spring- jdbc< / artifactId>
< version> ${ spring. version} < / version>
< / dependency>
< ! -- 支持AOP 切面编程的jar 包-- >
< dependency>
< groupId> org. springframework< / groupId>
< artifactId> spring- aspects< / artifactId>
< version> ${ spring. version} < / version>
< / dependency>
< ! -- Mybatis 框架 -- >
< dependency>
< groupId> org. mybatis< / groupId>
< artifactId> mybatis< / artifactId>
< version> ${ mybatis. version} < / version>
< / dependency>
< ! -- Spring 框架整合 Mybaties 框架 的整合jar 包-- >
< dependency>
< groupId> org. mybatis< / groupId>
< artifactId> mybatis- spring< / artifactId>
< version> ${ mybatis. spring. version} < / version>
< / dependency>
< ! -- MySql 驱动包-- >
< dependency>
< groupId> mysql< / groupId>
< artifactId> mysql- connector- java< / artifactId>
< version> ${ mysql. version} < / version>
< / dependency>
< ! -- 连接池 -- >
< dependency>
< groupId> com. alibaba< / groupId>
< artifactId> druid< / artifactId>
< version> ${ druid. version} < / version>
< / dependency>
< ! -- 日志包-- >
< dependency>
< groupId> org. slf4j< / groupId>
< artifactId> slf4j- log4j12< / artifactId>
< version> ${ slf4j. version} < / version>
< / dependency>
< ! -- Jackson Json 处理工具包 将 数据转成json格式-- >
< dependency>
< groupId> com. fasterxml. jackson. core< / groupId>
< artifactId> jackson- databind< / artifactId>
< version> ${ jackson. version} < / version>
< / dependency>
< ! -- JSP 相关 -- >
< dependency>
< groupId> jstl< / groupId>
< artifactId> jstl< / artifactId>
< version> ${ jstl. version} < / version>
< / dependency>
< dependency>
< groupId> javax. servlet< / groupId>
< artifactId> servlet- api< / artifactId>
< version> ${ servlet- api. version} < / version>
< scope> provided< / scope>
< / dependency>
< dependency>
< groupId> javax. servlet< / groupId>
< artifactId> jsp- api< / artifactId>
< version> ${ jsp- api. version} < / version>
< scope> provided< / scope>
< / dependency>
< / dependencies>
< ! -- 在build中配置resources,防止资源导出失败-- >
< build>
< resources>
< resource>
< directory> src/ main/ resources< / directory>
< includes>
< include> * * * . xml< / include>
< include> * * * . properties< / include>
< include> * *
二、web.xml
< ! DOCTYPE web- app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
< web- app>
< display- name> Archetype Created Web Application < / display- name>
< ! -- 整合spring框架
1 、加载核心配置文件
2 、启动监听
-- >
< context- param>
< param- name> contextConfigLocation< / param- name>
< ! -- 指定文件位置 * 通配符 -- >
< param- value> classpath: spring. xml< / param- value>
< / context- param>
< ! -- 乱码处理filter过滤器 -- >
< filter>
< filter- name> encodingFilter< / filter- name>
< filter- class > org. springframework. web. filter. CharacterEncodingFilter< / filter- class >
< ! -- 指定编码集 -- >
< init- param>
< param- name> encoding< / param- name>
< param- value> utf8< / param- value>
< / init- param>
< / filter>
< filter- mapping>
< filter- name> encodingFilter< / filter- name>
< ! -- 指定拦截方式 -- >
< url- pattern>
三、db.properties
db. username= root
db. password= 123456
db. url= jdbc: mysql: / / localhost: 3306 / mybatis? useSSL= true & useUnicode= true & characterEncoding= utf8& serverTimezone= UTC
db. driver= com. mysql. cj. jdbc. Driver
db. initSize= 10
db. activeSize= 20
四、log4j.properties
log4j. rootLogger= INFO , A1
log4j. logger. cn. yhmis. mapper = DEBUG
log4j. appender. A1 = org. apache. log4j. ConsoleAppender
log4j. appender. A1 . layout= org. apache. log4j. PatternLayout
log4j. appender. A1 . layout. ConversionPattern= % - d{ yyyy- MM - dd HH : mm: ss, SSS } [ % t] [ % c] - [ % p] % m% n
五、mybatis.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>
< / configuration>
六、spring.xml
< beans xmlns= "http://www.springframework.org/schema/beans"
xmlns: context= "http://www.springframework.org/schema/context"
xmlns: xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= "http: / / www. springframework. org/ schema/ beans http: / / www. springframework. org/ schema/ beans/ spring- beans- 4.0 . xsd
http: / / www. springframework. org/ schema/ context http: / / www. springframework. org/ schema/ context/ spring- context- 4.0 . xsd">
< context: component- scan base- package = "wtf" / >
< ! -- 加载jdbc. properties文件
location指定属性文件的位置
-- >
< context: property- placeholder
location= "classpath:db.properties" / >
< ! -- 配置druid,作为数据源
id是固定值
class 是阿里对象的全路径
-- >
< bean id= "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" >
< ! -- 给对象的属性设置值 spring 表达式 ${ } -- >
< property name= "username" value= "${db.username}" > < / property>
< property name= "password" value= "${db.password}" > < / property>
< property name= "driverClassName" value= "${db.driver}" > < / property>
< property name= "url" value= "${db.url}" > < / property>
< property name= "initialSize" value= "${db.initSize}" > < / property>
< property name= "maxActive" value= "${db.activeSize}" > < / property>
< / bean>
< ! -- 整合spring和MyBatis 框架 -- >
< ! -- 配置SessionFactory -- >
< bean id= "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" >
< ! -- 实例化sqlSessionFactory时需要使用上述配置好的数据源以及SQL 映射文件 -- >
< property name= "dataSource" ref= "dataSource" / >
< property name= "configLocation" value= "classpath:mybatis.xml" / >
< ! -- 配置实体类别名 默认的别名就是类的类名-- >
< property name= "typeAliasesPackage" value= "wtf.pojo" > < / property>
< ! -- 指定 mapper 的sql映射文件 -- >
< property name= "mapperLocations" value= "classpath:mappers/*.xml" / >
< / bean>
< ! -- 扫描mapper配置文件的地址 -- >
< bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" >
< ! -- 扫描mapper包下面的接口 框架会自动生成接口的代理实现类-- >
< property name= "basePackage" value= "wtf.mapper" / >
< property name= "sqlSessionFactoryBeanName" value= "sqlSessionFactory" / >
< / bean>
< ! -- 配置Spring 的事务管理器 -- >
< bean id= "transactionManager"
class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name= "dataSource" ref= "dataSource" / >
< / bean>
< / beans>
七、springmvc.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: mvc= "http://www.springframework.org/schema/mvc"
xmlns: context= "http://www.springframework.org/schema/context"
xsi: schemaLocation= "http: / / www. springframework. org/ schema/ mvc
http: / / www. springframework. org/ schema/ mvc/ spring- mvc- 4.0 . xsd
http: / / www. springframework. org/ schema/ beans
http: / / www. springframework. org/ schema/ beans/ spring- beans- 4.0 . xsd
http: / / www. springframework. org/ schema/ context
http: / / www. springframework. org/ schema/ context/ spring- context- 4.0 . xsd">
< ! -- 注解驱动 spring提供的注解 比如@Component @Controller @Service @Repository
在springMVC中 能够将扫描到的带有该注解的类扫描给spring容器 进行管理
但是要想springMVC实现更加完整的功能,springMVC又封装了自身的注解
比如@RequestMapping @GetMapping -- >
< mvc: annotation- driven/ >
< ! -- 包扫描 将带有spring注解的类交给spring容器 进行管理
建议扫描根包即可-- >
< context: component- scan base- package = "wtf" > < / context: component- scan>
< mvc: default - servlet- handler/ >
< ! -- 内部资源视图解析器 最终实现拼装成页面正确的路径-- >
< bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
< property name= "prefix" value= "/WEB-INF/pages/" > < / property>
< property name= "suffix" value= ".html" > < / property>
< / bean>
< / beans>
八、UserMapper.xml
< ? xml version= "1.0" encoding= "UTF-8" ? >
< ! DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
< mapper namespace= "wtf.mapper.UserMapper" >
< select id= "selectUser" resultType= "wtf.pojo.User" >
select * from user;
< / select>
< / mapper>
九、Service层
package wtf. service ;
import wtf. pojo. User ;
import java. util. List ;
public interface UserService {
public List < User > selectUser ( ) ;
}
package wtf. service ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
import wtf. mapper. UserMapper ;
import wtf. pojo. User ;
import java. util. List ;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List < User > selectUser ( ) {
return userMapper. selectUser ( ) ;
}
}
十、dao层
package wtf. mapper ;
import wtf. pojo. User ;
import java. util. List ;
public interface UserMapper {
public List < User > selectUser ( ) ;
}
十一、pojo
package wtf. pojo ;
public class User {
private int id;
private String name;
private String pwd;
public int getId ( ) {
return id;
}
public void setId ( int id) {
this . id = id;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public String getPwd ( ) {
return pwd;
}
public void setPwd ( String pwd) {
this . pwd = pwd;
}
@Override
public String toString ( ) {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}' ;
}
}
十二、controller层
package wtf. controller ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Controller ;
import org. springframework. web. bind. annotation. RequestMapping ;
import wtf. pojo. User ;
import wtf. service. UserService ;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping ( "/user1" )
public String getuser ( ) {
for ( User user : userService. selectUser ( ) ) {
System . out. println ( user) ;
}
return "hello" ;
}
}