一、修改 Maven 镜像源
1.1 找到 maven 的配置文件 settings.xml
1.2 修改 Maven 源
二、搭建 Maven WebApp 项目
2.1 搭建项目
2.2 配置 Maven 依赖
三、配置文件编写
3.1 Spring 配置文件
3.2 log4j 配置文件编写
3.3 SpringMVC 配置文件
3.4 数据库创建
3.5 编写 web.xml
四、编写 java 类
4.1 创建如下包结构
4.2 编写实体类 Account
4.3 编写 dao 层方法
4.4 编写 Service 方法
4.5 编写 controller
五、编写前端页面
5.1 index.jsp 编写
5.2 编写成功跳转界面
六、运行效果
6.1 返回字符串
6.2 查询所有
6.3 表单封装
所谓 SSM,就是把 Spring,SpringMVC,Mybatis 三个框架放在同一个项目中使用,此文使用了一个简单的实例,给大家演示 ssm 的整合基本过程。文章代码量比较多,大家可以适当选择查阅
一、修改 Maven 镜像源 1.1 找到 maven 的配置文件 settings.xml我用的是 idea 自带的maven 工具,如果用得是自己下的maven,修改镜像配置的方式是一样的。
使用编辑器打开该文件,我使用 subline 打开的,找到第 146行左右,添加如下镜像信息,把我下面的注释塞进去,就可以解决 maven 下载慢的问题了
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
uk
central
Human Readable Name for this Mirror.
http://uk.maven.org/maven2/
CN
OSChina Central
http://maven.oschina.net/content/groups/public/
central
nexus
internal nexus repository
http://repo.maven.apache.org/maven2
central
二、搭建 Maven WebApp 项目
2.1 搭建项目
一定要选择第二个,如果你选择第一个就要重新建一个的新的项目
大家初始化的项目是这样的结构
因为我们要搭建 ssm 项目,所以需要加入 Spring,SpringMVC,MyBatis 的依赖,以及一些其他的配置文件
- 项目版本锁定
UTF-8
1.8
1.8
5.2.3.RELEASE
1.6.6
1.2.12
5.1.10
3.4.5
- 依赖配置
org.aspectj
aspectjweaver
1.7.4
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-jdbc
${spring.version}
junit
junit
4.11
compile
mysql
mysql-connector-java
${mysql.version}
javax.servlet
javax.servlet-api
3.1.0
provided
javax.servlet.jsp
jsp-api
2.2
provided
jstl
jstl
1.2
log4j
log4j
${log4j.version}
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.3
c3p0
c3p0
0.9.1.2
jar
compile
org.junit.jupiter
junit-jupiter
RELEASE
compile
maven 配置好了之后,这些内容就会在后台自动下载,这里我们就不用管了
三、配置文件编写- Spring 的配置文件
- SpringMVC 的配置文件
- MyBatis 的配置我们也可以写(但是 Spring 整合了 MyBatis 对象,我们就不用在自己编写)
- 配置日志记录文件
在 Maven 的 resources 目录里创建一个 applicationContext.xml 的配置文件,加入 Spring的 一些配置 和 约束
这里有些 IOC 的配置会报错,之后会解决
3.2 log4j 配置文件编写
这是一个 日志打印的一个配置文件
log4j.rootLogger=INFO,stdout,debug,error
#u8F93u51FAu5230u63A7u5236u53F0
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
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 [%t] %C.%M(%L) | %m%n
#u8F93u51FADEBUGu7EA7u522Bu4EE5u4E0Au7684u65E5u5FD7u5230u6587u4EF6
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %C.%M(%L) | %m%n
log4j.appender.debug.File=./logs/debug.txt
log4j.appender.debug.DatePattern=','yyyy-MM-dd
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.Append=true
log4j.appender.debug.Encoding=UTF-8
#u8F93u51FADEBUGu7EA7u522Bu4EE5u4E0Au7684u65E5u5FD7u5230u6587u4EF6
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %C.%M(%L) | %m%n
log4j.appender.error.File=./logs/error.txt
log4j.appender.error.DatePattern=','yyyy-MM-dd
log4j.appender.error.Threshold=ERROR
log4j.appender.error.Append=true
log4j.appender.error.Encoding=UTF-8
3.3 SpringMVC 配置文件
创建 springmvc.xml 在 resources 目录下
findAll();
// 保存账户信息
@Insert("insert into account(name,money) values(#{name},#{money})")
public int saveAccount(Account account);
}
4.4 编写 Service 方法
- AccountService编写
编写两个基础的账号操作接口
package cn.gorit.service;
import cn.gorit.entity.Account;
import java.util.List;
public interface AccountService {
// 查询所有账户信息
public List findAll();
// 保存账户信息
public void saveAccount(Account account);
}
- AccountServiceImpl 实现 AccountService 接口
前面我们在 mybatis 完成了数据库的操作,这里直接调用 dao 层对应的方法即可
package cn.gorit.service.impl;
import cn.gorit.dao.AccountDao;
import cn.gorit.entity.Account;
import cn.gorit.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("accountService")
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountDao accountDao;
@Override
public List findAll() {
System.out.println("业务层,查询所有账户...");
return accountDao.findAll();
}
@Override
public void saveAccount(Account account) {
System.out.println("业务层,存账户...");
accountDao.saveAccount(account);
}
}
4.5 编写 controller
使用 Controller 我们就可以在页面看到我们想要的数据了
package cn.gorit.controller;
import cn.gorit.entity.Account;
import cn.gorit.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
// 账户 web
@Controller
@RequestMapping("/account")
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/test")
@ResponseBody
public String test() {
// 使用 RequestBody 来标识这个方法,这样返回的就是一个字符串,不然 springmvc 就会去寻找同名的 jsp 文件
return "Hello World";
}
@RequestMapping("/findAll")
public String findAll(Model model) {
System.out.println("表现层,查询所有账户...");
// 调用 service 方法
List list = accountService.findAll();
model.addAttribute("list",list);
return "list";
}
// 保存数据
@RequestMapping("/save")
public void save(Account account, HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println("表现层,保存账户...");
System.out.println(account);
// 调用 service 方法
accountService.saveAccount(account);
response.sendRedirect(request.getContextPath()+"/account/findAll");
return;
}
}
但是你以为就这样结束了吗,不,我们还没编写 前端页面呢
五、编写前端页面 5.1 index.jsp 编写因为我们要在这里调用 controller 中的方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
测试
SpringMVC
findAll
测试保存
5.2 编写成功跳转界面
在 WEB-INF 目录下创建 pages 文件,再创建 list.jsp 和 success.jsp(和controller 中跳转的页面时对应的)
为什么会这样的呢?
-
因为我们在 springmvc.xml 中配置了这样的一个视图解析器
-
因为我们使用了 controller 来接收所有的网络请求,这个请求会最先经过 web.xml 中配置的 前端控制器
-
经过了前端控制器,再会经过 视图解析器,然后根据返回的内容,跳转至指定页面,也就是 list.jsp
<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>
list
查询了所有的账户信息
${list.get(0)} ${list.get(0)}
六、运行效果
6.1 返回字符串
6.2 查询所有
显示的内容我只打印了显示第一条数据,所以这里只有第一条数据



