栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SSM 整合 (这应该是最详细,最通俗易懂的文章了吧 小声BB)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM 整合 (这应该是最详细,最通俗易懂的文章了吧 小声BB)

SSM 整合系列
一、修改 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,修改镜像配置的方式是一样的。

1.2 修改 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 搭建项目

一定要选择第二个,如果你选择第一个就要重新建一个的新的项目

大家初始化的项目是这样的结构

2.2 配置 Maven 依赖

因为我们要搭建 ssm 项目,所以需要加入 Spring,SpringMVC,MyBatis 的依赖,以及一些其他的配置文件

  1. 项目版本锁定

  
    UTF-8
    1.8
    1.8
    5.2.3.RELEASE
    1.6.6
    1.2.12
    5.1.10
    3.4.5
  
  1. 依赖配置

  
    
      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 配置好了之后,这些内容就会在后台自动下载,这里我们就不用管了

三、配置文件编写
  1. Spring 的配置文件
  2. SpringMVC 的配置文件
  3. MyBatis 的配置我们也可以写(但是 Spring 整合了 MyBatis 对象,我们就不用在自己编写)
  4. 配置日志记录文件
3.1 Spring 配置文件

在 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 方法
  1. 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);
}
  1. 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 中跳转的页面时对应的)

为什么会这样的呢?

  1. 因为我们在 springmvc.xml 中配置了这样的一个视图解析器

  2. 因为我们使用了 controller 来接收所有的网络请求,这个请求会最先经过 web.xml 中配置的 前端控制器

  3. 经过了前端控制器,再会经过 视图解析器,然后根据返回的内容,跳转至指定页面,也就是 list.jsp

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false" language="java" %>


    list


    

查询了所有的账户信息

${list.get(0)} ${list.get(0)}
六、运行效果 6.1 返回字符串

6.2 查询所有

显示的内容我只打印了显示第一条数据,所以这里只有第一条数据

6.3 表单封装

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号