目录
【开发环境】
一、【新建项目】
二、【目录结构调整】
三、【maven包初始化】
四、【Spring和Mybatis配置】
五、【Demo构建】
项目源码下载地址:https://gitee.com/liwenchao_jack/ssm
1.操作系统:windows
2.开发工具:IDEA
3.java -version
maven选项卡中找到对应的java web选项,然后下一步
在这里填入组织信息,按照自己的需求填写,然后下一步
在这里配置本地maven仓库,如果没有下载maven,请先下载,下载地址:https://maven.apache.org/download.cgi,选择apache-maven-xxx-bin.zip下载到本地,然后配置settings.xml文件的远程下载地址是阿里云,具体配置自行百度,然后按照下面步骤完成配置,点击下一步
给项目起个项目名和保存的路径,然后finish
项目创建完成,目录结构如下:
如果需要修改项目版本,可以在file→settings→搜索Java Compiler进行修改;快捷键:Ctrl+Alt+S;这里可以避免spring框架版本和JDK版本不兼容的问题,升级版本。
添加以下两个目录:java和resources
选择file→project Structure(Ctrl+Alt+Shift+S),选择Modules标签页,调整项目结构,java→Sources,resources→Resources,然后apply→ok
继续创建文件夹,如下完整目录结构:
- Java为主Java代码文件夹
- Controller 控制器文件文件夹
- Dao (数据访问)层文件夹
- Service(业务逻辑)层文件夹
- Entity(实体)层文件夹
- Test 测试文件夹
- resources资源文件夹
- mapper mybatis文件夹
- sql 数据表文件夹
- webapp web页面文件夹
Maven是采用配置文件的方式进行jar包的自动导入。下面添加我们将会用到的一系列jar包配置:
4.0.0
cn.com.springmvc
ssm_test
1.0-SNAPSHOT
war
ssm_test Maven Webapp
http://www.example.com
UTF-8
1.7
1.7
4.1.1.RELEASE
3.2.6
1.7.7
1.2.17
2.5.0
junit
junit
4.11
test
org.springframework
spring-test
${spring.version}
test
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-aspects
4.0.9.RELEASE
org.springframework
spring-tx
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.aspectj
aspectjrt
1.7.4
org.aspectj
aspectjweaver
1.7.4
cglib
cglib
3.1
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.2.2
mysql
mysql-connector-java
5.1.34
com.alibaba
druid
1.0.5
runtime
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
javax.servlet
javax.servlet-api
3.0.1
provided
javax.servlet.jsp
jsp-api
2.2
provided
javax.servlet
jstl
1.2
org.codehaus.jackson
jackson-core-asl
1.9.13
org.codehaus.jackson
jackson-mapper-asl
1.9.13
com.fasterxml.jackson.core
jackson-annotations
${jackson.version}
com.fasterxml.jackson.core
jackson-databind
${jackson.version}
com.fasterxml.jackson.core
jackson-core
${jackson.version}
net.sf.json-lib
json-lib
2.1
jdk15
dom4j
dom4j
1.4
net.sf.ehcache
ehcache-core
2.6.9
net.sf.ehcache
ehcache-web
2.0.4
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
org.apache.commons
commons-collections4
4.0
org.apache.commons
commons-lang3
3.3.2
commons-beanutils
commons-beanutils
1.7.0
commons-logging
commons-logging
org.freemarker
freemarker
2.3.19
dom4j
dom4j
1.6.1
Demo
org.apache.maven.plugins
maven-compiler-plugin
1.6
src/main/java
**/*.xml
true
src/main/resources
**/*.xml
**/*.properties
true
等待jar包下载到本地默认仓库,maven导入阶段完成,我们就可以进行下一步了。如果jar包不能正常导入,可以有下面处理办法:从这个地址:https://mvnrepository.com/;下载对应的jar包。然后查看本地是否安装了maven:
win+R快捷键,然后输入cmd,最后输入mvn -v;这里我已经配置好了,没有配置的自行百度。
通过命令安装jar包:
示例:mvn install:install-file -DgroupId=org.mybatis.generator -DartifactId=mybatis-generator-core -Dversion=1.3.5 -Dpackaging=jar -Dfile=D:\mybatis-generator-core-1.3.5.jar
-DgroupId、-DartifactId、 -Dversion可以参看我们pom里的jar包依赖修改,-Dfile是你下载下来的那个jar的本地目录,其他无需更改。
我在这里直接进行和mybatis的相关配置,不单一配置spring mvc,后面会提供源码下载供参考。
配置文件包含:spring-context.xml、spring-mvc.xml、web.xml、jdbc.properties、log4j.properties
配置spring-context.xml
Spring Configuration
配置spring-mvc.xml
Spring MVC Configuration
text/html;charset=UTF-8
text/json;charset=UTF-8
application/json;charset=UTF-8
配置web.xml
Manager
配置Spring配置文件路径
contextConfigLocation
classpath:config/spring-*.xml
配置Spring上下文监听器
org.springframework.web.context.ContextLoaderListener
Introspector缓存清除监听器
org.springframework.web.util.IntrospectorCleanupListener
request监听器
org.springframework.web.context.request.RequestContextListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
log4jConfigLocation
classpath:log4j.properties
log4jRefreshInterval
1800000
org.springframework.web.util.Log4jConfigListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:config/spring-mvc.xml
1
SpringMVC
/
default
/static/*
30
配置jdbc.properties
#MySQL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
#oracle
#jdbc.driver=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@localhost:3306:test
#jdbc.username=root
#jdbc.password=123456
配置log4j.properties
#日志输出级别
log4j.rootLogger=debug,stdout,D,E
#设置stdout的日志输出控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#输出日志到控制台的方式,默认为System.out
log4j.appender.stdout.Target = System.out
#设置使用灵活布局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p] method:[%c (%rms)] - %m%n
#每天产生一个日志文件
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
#设置的输出日志(绝对路径)
log4j.appender.D.File=D:/workspace/workspace3/ssm_test/src/main/webapp/WEB-INF/logs/all/log.txt
#设置的日志最大限制
log4j.appender.D.MaxFileSize=6000KB
#最多只保存20个备份文件
log4j.appender.D.MaxBackupIndex=20
#输出INFO级别以上的日志
og4j.appender.D.Threshold=debug
log4j.appender.D.Append = true
log4j.appender.D.ImmediateFlush = true
#设置使用灵活布局
log4j.appender.D.layout=org.apache.log4j.PatternLayout
#灵活定义输出格式
log4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p] method:[%l (%rms)] - %m%n
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
#设置的输出日志(绝对路径)
log4j.appender.E.File =D:/workspace/workspace3/ssm_test/src/main/webapp/WEB-INF/logs/error/error.txt
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} -[%p] method:[%l (%rms)] - %m%n
到此刻,我们的spring、springmvc、mybatis已经整合完毕,后面就是要进行demo测试,我们实现一个登陆功能。
打开数据库,执行以下sql脚本:
/*
Date: 2019-07-22 19:49:03
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `t_user`
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` varchar(11) NOT NULL,
`username` varchar(40) NOT NULL,
`password` varchar(40) NOT NULL,
`sex` varchar(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', 'user', '123', '男');
INSERT INTO `t_user` VALUES ('2', 'admin', '456', '女');
下面我们从entity→mapper→dao→service→controller来构建
编写entity:User
package com.springmvc.entity;
import java.io.Serializable;
/**
* Created by liwc on 2019-07-22
* 用户实体类.
*/
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**用户ID*/
private String id;
/**用户名*/
private String username;
/**密码*/
private String password;
/**姓名*/
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
编写mapper:UserMapper.xml
t.id,
t.username,
t.password,
t.sex
编写dao:UserDao
package com.springmvc.dao;
import com.springmvc.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created by liwc on 2019-07-22
* 用户dao接口.
*/
@Repository("UserDao")
public interface UserDao {
/**
* 查询所有用户
* @return
*/
List findAll();
}
编写service:UserService
package com.springmvc.service;
import com.springmvc.entity.User;
import java.util.List;
/**
* Created by liwc on 2019-07-22
* 用户service接口
*/
public interface UserService {
/**
* 查询所有用户
* @return
*/
List findAll();
}
UserviceImpl
package com.springmvc.service.impl;
import com.springmvc.dao.UserDao;
import com.springmvc.entity.User;
import com.springmvc.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* Created by liwc on 2019-07-22
* 用户service实现类
*/
@Service("UserService")
public class UserServiceImpl implements UserService {
@Resource(name = "UserDao")
private UserDao userDao;
@Override
public List findAll() {
return userDao.findAll();
}
}
编写controller:ViewController
package com.springmvc.controller;
import com.alibaba.fastjson.JSON;
import com.springmvc.entity.User;
import com.springmvc.service.UserService;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping("/user")
public class ViewController {
private Logger logger = Logger.getLogger(ViewController.class);
@Resource(name = "UserService")
private UserService userService;
@RequestMapping("/findAll")
@ResponseBody
public String findAll(){
List users = userService.findAll();
return JSON.toJSONString(users);
}
}
完整目录结构项:
根据下图完成本地tomcat的添加及配置:
选择Configure...→配置本地tomcat→ok
将我们的编译后打成war的项目添加进来,选择图中所示
IDEA有自己的热加载功能,可以参看下图中设置;当然,我们可以通过jrebel进行热加载,我们在file→settings→plugins→Marketplace→jrebel找到对应的插件进行安装,不过还需要破解,具体破解步骤可以自行百度。
启动项目,发url请求。下图中的都可以进行项目启动,启动项目之后要看具体的控制台输出日志,如有报错,自行百度解决。
如果发送请求之后页面中显示这个,那就表示SSM项目搭建完毕。
项目源码下载地址:https://gitee.com/liwenchao_jack/ssm
演示结束,谢谢!