博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb——SSM框架学习(1)
阅读量:3935 次
发布时间:2019-05-23

本文共 11469 字,大约阅读时间需要 38 分钟。

Javaweb——SSM 框架系列

  • SSM 框架指的是将 Spring、SpringMVC 和 MyBatis 框架结合起来开发 Java web 应用的框架集合。

一、SSM 框架基础

1、SSM 框架的组成

1.1、MyBatis

  • MyBatis 是一个持久层框架,用于操作数据库,支持定制化 SQL、存储过程以及高级映射。MyBatis 可以用 XML 或注解来配置和映射原生信息,将接口和 Java POJOs 映射成数据库中的记录。

1.2、SpringMVC

  • SpringMVC 是一个视图层框架,是后台 Java 程序和前台 JSP 页面的桥梁,类似于 Servlet。

1.3、Spring

  • Spring 是一个分层的 JavaSE/EE full-stack 轻量级开源框架。

2、搭建 SSM 框架

2.1、准备 JAR 包

  • SSM 框架所需的包共有 20 个,加上操作 MySQL 数据库的一个包,共 21 个,具体如下:
    JAR JAR JAR
    asm-5.2.jar c3p0-0.9.5.2.jar commons-logging-1.2.jar
    log4j-1.2.17.jar jstl-1.2.jar mchange-commons-java-0.2.11.jar
    mybatis-3.4.6.jar mybatis-spring-1.3.0.jar mysql-connector-java-8.0.18.jar
    slf4j-api-1.7.25.jar slf4j-log4j12-1.7.25.jar spring-aop-5.0.9.RELEASE.jar
    spring-beans-5.0.9.RELEASE.jar spring-context-5.0.9.RELEASE.jar spring-core-5.0.9.RELEASE.jar
    spring-expression-5.0.9.RELEASE.jar spring-jdbc-5.0.9.RELEASE.jar spring-orm-5.0.9.RELEASE.jar
    spring-tx-5.0.9.RELEASE.jar spring-web-5.0.9.RELEASE.jar spring-webmvc-5.0.9.RELEASE.jar
  • 由于我的 MySQL 数据库版本是 8.* 的,所以 JAR 包也是 8 的。
  • 将这些 JAR 包放置到 web/WEB-INF/lib 目录下。

2.2、准备配置文件

  • 首先是 application.xml 文件,这个是 Spring 框架的配置文件,该文件的初始内容如下:
  • 将该文件放在工程项目的 src 目录下,同时在该目录建立一个 db.properties 文件,用于配置数据库的 URL 和登录名、密码等信息
    user=rootpassword=******driverClass=com.mysql.cj.jdbc.Driverurl=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
  • 接着回到 application.xml 文件中配置 c3p0 连接池

2.3、准备数据库

  • 在 MySQL 的适当数据库中,新建一个数据表:
    在这里插入图片描述

3、编写组件及其配置

  • 这一步主要编写相关组件类及其配置

3.1、编写实体类

  • 根据数据库中的数据表的属性,建立一个 JavaBean,代码如下:
    package com.myCode.bean;import org.apache.ibatis.type.Alias;import org.springframework.stereotype.Component;@Alias("usersBean")@Componentpublic class UserBean {
    private int uId; private String uName; private int uAge; private String uAddress; private String uTel; public void setuName(String uName) {
    this.uName = uName; } public String getuName() {
    return uName; } public void setuId(int uId) {
    this.uId = uId; } public int getuId() {
    return uId; } public void setuAge(int uAge) {
    this.uAge = uAge; } public int getuAge() {
    return uAge; } public void setuAddress(String uAddress) {
    this.uAddress = uAddress; } public String getuAddress() {
    return uAddress; } public void setuTel(String uTel) {
    this.uTel = uTel; } public String getuTel() {
    return uTel; }}
  • 该类名上的两个 @ 就是注解,用于映射。

3.2、编写 interface

  • 编写一个 interface 对刚刚的实体类进行使用,代码如下:
    package com.myCode.dao;import com.myCode.bean.UserBean;import java.util.List;public interface UserDAO {
    // 查询 users 表中所有数据的方法 public List
    getAllUser(); // 根据用户 id 查询用户所有信息 public List
    getUserById(int uId); // 修改方法 public void updateUser(UserBean userBean); // 删除方法 public void delUser(int uId);}

3.3、创建一个 Mapper 配置文件

  • 新建一个 xml 文件用于配置 Mybatis 的 Mapper,代码如下:
    delete from users where uId=#{id}

3.4、配置 SqlSessionFactory

  • 回到 application.xml 文件中,增加如下代码:
    classpath:com/myCode/mapper/*-Mapper.xml

4、编写持久层

  • 这一步主要编辑两个 daoImpl 方法,需要用到 MyBatis 的 SqlSessionFactory 对象并从中获取 SqlSession于映射实例,代码如下:
    package com.myCode.dao.impl;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;@Repositorypublic class BaseDaoImpl
    {
    // 声明 SqlSessionFactory @Autowired private SqlSessionFactory sqlSessionFactory; // 声明 SqlSession protected SqlSession sqlSession; // 声明 Mapper 属性 private Class
    mapper; // 为 mapper 创建 get set public T getMapper(){
    return sqlSessionFactory.openSession().getMapper(mapper); } public void setMapper(Class
    mapper) {
    this.mapper = mapper; }}
    package com.myCode.dao.impl;import com.myCode.bean.UserBean;import com.myCode.dao.UserDAO;import org.springframework.stereotype.Repository;import java.util.List;@Repositorypublic class UserDAOImpl extends BaseDaoImpl
    implements UserDAO {
    public UserDAOImpl(){
    super(); this.setMapper(UserDAO.class); } @Override public List
    getAllUser(){
    return this.getMapper().getAllUser(); } @Override public List
    getUserById(int id){
    return this.getMapper().getUserById(id); } @Override public void updateUser(UserBean userBean){
    this.getMapper().updateUser(userBean); } @Override public void delUser(int id){
    this.getMapper().delUser(id); }}

5、编写业务层

  • 首先新建一个 Service 的 interface,代码如下:
    package com.myCode.service;import com.myCode.bean.UserBean;import java.util.List;public interface UserService {
    // 查询 users 表中所有数据的方法 public List
    getAllUser(); // 根据用户 id 查询用户所有信息 public List
    getUserById(int uId); // 修改方法 public void updateUser(UserBean userBean); // 删除方法 public void delUser(int uId);}
  • 接着编写它的实现类
    package com.myCode.service;import com.myCode.bean.UserBean;import com.myCode.dao.UserDAO;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Service("userService")public class UserServiceImpl implements UserService{
    @Autowired UserDAO userDAO; public List
    getAllUser(){
    return userDAO.getAllUser(); } public List
    getUserById(int uId){
    return userDAO.getUserById(uId); } public void updateUser(UserBean userBean){
    userDAO.updateUser(userBean); } public void delUser(int uId){
    userDAO.delUser(uId); }}

6、编写控制层

  • 创建一个 controller 类,用于管理映射等
    package com.myCode.controller;import com.myCode.bean.UserBean;import com.myCode.service.UserService;import org.apache.ibatis.annotations.Param;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.List;@Controller@RequestMapping("userController")public class UserController {
    @Autowired UserService userDao; @RequestMapping("/getAllUser") public ModelAndView getAllUser() {
    //创建一个List集合用于接收Service层方法的返回值 List
    listUser = userDao.getAllUser(); //创建一个ModelAndView对象 括号里面的参数是指定要跳转到哪个jsp页面 ModelAndView mav = new ModelAndView("getAll"); //通过addObject()方法 我们把要存的值存了进去。 mav.addObject("listUser", listUser); //最后把ModelAndView对象返回出去 return mav; } @RequestMapping("/getUserById") public ModelAndView getUserById(@Param("uId")Integer uId) {
    ModelAndView mav = new ModelAndView("toUpdate"); List
    list = userDao.getUserById(uId); mav.addObject("list", list); return mav; } @RequestMapping("/updateUser") public String toUpdate(UserBean usersBean){
    userDao.updateUser(usersBean); return "forward:getAllUser"; } public String delUser(@Param("uId")Integer uId) {
    userDao.delUser(uId); return "forward:getAllUser"; }}

7、配置 SpringMVC

  • 在 web/WEB-INF 目录下,新建一个 SpringMVC.xml 文件,用于配置 SpringMVC,文件代码如下:

8、建立 JSP 页面

  • 建立几个简单的 JSP 页面用于响应事务,分别如下:
  • getAll.jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    获取所有用户信息
    序号 姓名 年龄 操作
    ${list.uId } ${list.uName } ${list.uAge }
  • toUpdate.sjp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    更新用户信息
    序号:
    姓名:
    年龄:
  • index.jsp
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>      SSM 框架测试          

9、完成 webxml 和 application.xml 的配置:

  • application.xml 文件的最终代码如下:
    classpath:com/myCode/mapper/*-Mapper.xml
  • web.xml 文件如下:
    SSM
    org.springframework.web.context.ContextLoaderListener
    contextConfigLocation
    classpath:application.xml
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    contextConfigLocation
    /WEB-INF/SpringMVC.xml
    SpringMVC
    /
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    encoding
    UTF-8
    forceEncoding
    true
    characterEncodingFilter
    /*

10、部署运行

  • 部署到 Tomcat 上面运行,首先访问的是 index.jsp 页面,显示如下:
    在这里插入图片描述
  • 点击按钮,控制层的控制器将映射到 userController/getAllUser,而该方法的表现层页面就是 getAll.jsp,浏览器最终显示如下:
    在这里插入图片描述
  • 此时点击修改,控制层又重新映射,映射路径为 userController/getUserById?uId,对应表现层的 toUpdate.jsp 页面,浏览器显示如下:
    在这里插入图片描述
  • 同样将年龄修改成 23 后,点击提交,控制层将路径映射到 /userController/updateUser,而目标方法中由于 return “forward:getAllUser”; 语句的作用,将页面重新映射会上一个页面:getAllUser,最终浏览器显示如下:
    在这里插入图片描述
  • 最后贴上我这个项目的 GitHub 地址:

转载地址:http://poqgn.baihongyu.com/

你可能感兴趣的文章
使用FileChannel下载本地文件及扩展
查看>>
linux文件权限与目录配置问题与解答(整理篇)
查看>>
linux文件与目录管理问题与回答(整理篇)
查看>>
java 数组笔记整理
查看>>
java IO/NIO 下载上传的笔记
查看>>
对行为的描述---一般系统论读书笔记
查看>>
贪心算法
查看>>
分支限界法
查看>>
随机化算法
查看>>
项目整体管理(一)
查看>>
项目整体管理(二)
查看>>
推荐阅读书籍
查看>>
外包管理
查看>>
项目管理师职业道德规范
查看>>
战略管理概述
查看>>
业务流程管理和重组
查看>>
知识管理
查看>>
项目整体绩效评估
查看>>
信息安全系统和安全体系
查看>>
信息系统安全风险识别与评估
查看>>