IDEA+Maven 整合SSM框架实现简单的增删改查

选用SSM框架的原因


在目前的企业级Java应用中,Spring框架是必须的。Struts2框架与Spring的整合问题日益凸显,而Spring MVC作为新一代的MVC框架,因其可以与Spring框架无缝整合的特性收到了越来越多的欢迎。Hibernate框架在面对需要存储过程或者复杂SQL时显得力不从心,不能提供高效的数据库控制。而Mybatis框架作为持久层的框架,虽然需要自己编写SQL语句,但是其对高并发高响应的支持,以及对动态SQL和动态绑定的支持使其脱颖而出。

因此SSM框架(Spring + Spring MVC +Mybatis)逐渐取代了之前广泛使用的SSH框架(Spring + Struts2 + Hibernate),成为了目前使用最多的框架。

本文使用IDEA,利用Maven管理项目,整合SSM框架搭建论文管理系统,实现简单的增、删、改、查功能。步骤详细,讲解丰富,适合新手入门。


开发工具

  • IntelliJ IDEA Ultimate 2017.2.2
  • Apache-tomcat-9.0.5
  • JDK 1.8.0_121
  • MySQL 5.7
  • Maven 3.3.9

工程结构

最终完成后的工程结构: 

下面开始详细的讲解项目的开发过程。


IDEA+Maven搭建项目骨架

1. 新建Maven项目: 
点击File -> New -> Project -> Maven -> 勾选 Create from archetype -> 选择 maven-archetype-webapp (注意:此处不要错选成上面的cocoom-22-archetype-webapp
这里写图片描述 
这里写图片描述
在弹出的new project 选项卡中填写GroupId和Artifactid,其中GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构,ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。对于入门练习,这两项可以随意填写。

这里写图片描述
之后点击next 选择Maven版本(其中IDEA 专业版自带Maven,也可以选择自己下载的maven)。之后填写项目名称和项目地址,完成后点击Finish,完成项目骨架的创建。 
这里写图片描述

.

2. 在新建的项目中添加所需要的文件/文件夹

创建之后的项目如图所示,我们需要在这之上新建一些目录。 
这里写图片描述

在项目的根目录下新建target文件夹,系统自动将其设置为“Excluded” 
这里写图片描述 
在src/main目录下新建Directory:“java”,并将其设置为“Source Root”(即:此项目默认的代码文件源目录) 
这里写图片描述 
这里写图片描述 
在刚才新建的java文件下新建“com”包,再在com包下新建四个包,分别命名为:pojo,service,dao,controller。(如果出现下图中所示的包名重叠的情况,可以点击图中所示的图标,将“Hide empty middle package取消掉”) 
这里写图片描述 
上面新建的四个包:pojo,service,dao,controller,其所存放的分别是:

  • pojo: 存放自定义的java类。如:paper类,user类,book类等,每个类的属性设为private,并提供public属性的getter/setter方法让外界访问
  • service:定义接口,包含系统所提供的功能。(之后还会在service包下再新建impl包)。
  • dao:定义接口,包含与数据库进行交互的功能。
  • controller:控制器,负责接收页面请求,转发和处理。

在resource包下新建Directory:“mapper”(用于存放xxxMapper.xml文件)和“spring”(用于存放spring-xxx.xml配置文件),新建文件:“jdbc.properties”(mysql数据库配置文件),”log4j.properties”(日志输出配置文件),”mybatis-config.xml”(mybatis框架配置文件)。 
这里写图片描述 
在web-inf目录下新建“jsp”包,存放xxx.jsp显示界面。 
补充之后的项目目录如下图所示,至此项目骨架搭建完毕,开始写代码实现增删改查功能。 
这里写图片描述

3. 自定义Paper类

在这之前要对项目的pom.xml文件进行配置,在此文件中配置项目所需要的jar包。

pom.xml

 
  1. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  2. 4.0.0

  3. com

  4. first

  5. war

  6. 1.0-SNAPSHOT

  7. first Maven Webapp

  8. http://maven.apache.org

  9. UTF-8

  10. UTF-8

  11. 5.0.3.RELEASE

  12. 3.4.4

  13. junit

  14. junit

  15. 3.8.1

  16. test

  17. org.springframework

  18. spring-core

  19. ${spring.version}

  20. org.springframework

  21. spring-beans

  22. ${spring.version}

  23. org.springframework

  24. spring-context

  25. ${spring.version}

  26. org.springframework

  27. spring-context-support

  28. ${spring.version}

  29. org.springframework

  30. spring-jdbc

  31. ${spring.version}

  32. org.springframework

  33. spring-tx

  34. ${spring.version}

  35. org.springframework

  36. spring-web

  37. ${spring.version}

  38. org.springframework

  39. spring-webmvc

  40. ${spring.version}

  41. org.springframework

  42. spring-test

  43. ${spring.version}

  44. javax.servlet

  45. javax.servlet-api

  46. 3.0.1

  47. provided

  48. javax.servlet.jsp

  49. jsp-api

  50. 2.2

  51. provided

  52. javax.servlet

  53. jstl

  54. 1.2

  55. taglibs

  56. standard

  57. 1.1.2

  58. com.fasterxml.jackson.core

  59. jackson-databind

  60. 2.9.4

  61. mysql

  62. mysql-connector-java

  63. 5.1.38

  64. com.mchange

  65. c3p0

  66. 0.9.5.2

  67. org.mybatis

  68. mybatis

  69. ${mybatis.version}

  70. org.mybatis

  71. mybatis-spring

  72. 1.3.1

  73. ch.qos.logback

  74. logback-classic

  75. 1.1.1

  76. first

  77. org.apache.maven.plugins

  78. maven-compiler-plugin

  79. 1.8

  80. 1.8

本项目所用的数据库为MySQL 5.7 建表语句如下:

 
  1.  
  2. SET FOREIGN_KEY_CHECKS=0;

  3.  
  4. -- ----------------------------

  5. -- Table structure for `paper`

  6. -- ----------------------------

  7. DROP TABLE IF EXISTS `paper`;

  8. CREATE TABLE `paper` (

  9. `paper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'paperID',

  10. `name` varchar(100) NOT NULL COMMENT 'paper名称',

  11. `number` int(11) NOT NULL COMMENT 'paper数量',

  12. `detail` varchar(200) NOT NULL COMMENT 'paper描述',

  13. PRIMARY KEY (`paper_id`)

  14. ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='paper表';

  15.  
  16. -- ----------------------------

  17. -- Records of paper

  18. -- ----------------------------

  19. INSERT INTO `paper` VALUES ('1', '机器学习', '2', 'mlmlmlml');

  20. INSERT INTO `paper` VALUES ('2', '深度学习', '3', 'dldldl');

  21. INSERT INTO `paper` VALUES ('3', '大数据', '4', 'bdbdbd');

下面开始写java代码:

  • 在pojo包中新建Paper.java
 
  1. package com.pojo;

  2.  
  3. public class Paper {

  4. private long paperId;

  5. private String paperName;

  6. private int paperNum;

  7. private String paperDetail;

  8.  
  9. public long getPaperId() {

  10. return paperId;

  11. }

  12.  
  13. public void setPaperId(long paperId) {

  14. this.paperId = paperId;

  15. }

  16.  
  17. public String getPaperName() {

  18. return paperName;

  19. }

  20.  
  21. public void setPaperName(String paperName) {

  22. this.paperName = paperName;

  23. }

  24.  
  25. public int getPaperNum() {

  26. return paperNum;

  27. }

  28.  
  29. public void setPaperNum(int paperNum) {

  30. this.paperNum = paperNum;

  31. }

  32.  
  33. public String getPaperDetail() {

  34. return paperDetail;

  35. }

  36.  
  37. public void setPaperDetail(String paperDetail) {

  38. this.paperDetail = paperDetail;

  39. }

  40.  
  41. }

中getter/setter方法可以在定义完私有属性之后使用IDEA提供的快捷键:ALT+Insert 来实现快速添加 


这里写图片描述 
这里写图片描述

  • 在service包中新建接口 PaperService:
 
  1. package com.service;

  2.  
  3. import com.pojo.Paper;

  4.  
  5. import java.util.List;

  6.  
  7. public interface PaperService {

  8. int addPaper(Paper paper);

  9.  
  10. int deletePaperById(long id);

  11.  
  12. int updatePaper(Paper paper);

  13.  
  14. Paper queryById(long id);

  15.  
  16. List queryAllPaper();

  17. }

  • 在service包下新建impl包,并在此包中新建PaperServiceImpl.java
 
  1. package com.service.impl;

  2.  
  3. import com.pojo.Paper;

  4. import com.dao.PaperDao;

  5. import com.service.PaperService;

  6.  
  7. import org.springframework.beans.factory.annotation.Autowired;

  8. import org.springframework.stereotype.Service;

  9.  
  10. import java.util.List;

  11.  
  12. @Service

  13. public class PaperServiceImpl implements PaperService {

  14. @Autowired

  15. private PaperDao paperDao;

  16.  
  17. @Override

  18. public int addPaper(Paper paper) {

  19. return paperDao.addPaper(paper);

  20. }

  21.  
  22. @Override

  23. public int deletePaperById(long id) {

  24. return paperDao.deletePaperById(id);

  25. }

  26.  
  27. @Override

  28. public int updatePaper(Paper paper) {

  29. return paperDao.updatePaper(paper);

  30. }

  31.  
  32. @Override

  33. public Paper queryById(long id) {

  34. return paperDao.queryById(id);

  35. }

  36.  
  37. @Override

  38. public List queryAllPaper() {

  39. return paperDao.queryAllPaper();

  40. }

  41.  
  42. }

  • 在dao包中新建接口 PaperDao.java
 
  1. package com.dao;

  2.  
  3. import com.pojo.Paper;

  4.  
  5. import java.util.List;

  6.  
  7. public interface PaperDao {

  8. int addPaper(Paper paper);

  9.  
  10. int deletePaperById(long id);

  11.  
  12. int updatePaper(Paper paper);

  13.  
  14. Paper queryById(long id);

  15.  
  16. List queryAllPaper();

  17.  
  18.  
  19. }

  • 在controller包中新建 PaperController.java
 
  1. package com.controller;

  2.  
  3. import com.pojo.Paper;

  4. import com.service.PaperService;

  5.  
  6. import java.util.List;

  7.  
  8. import org.springframework.beans.factory.annotation.Autowired;

  9. import org.springframework.stereotype.Controller;

  10. import org.springframework.ui.Model;

  11. import org.springframework.web.bind.annotation.PathVariable;

  12. import org.springframework.web.bind.annotation.RequestMapping;

  13.  
  14. @Controller

  15. @RequestMapping("/paper")

  16. public class PaperController {

  17. @Autowired

  18. private PaperService paperService;

  19.  
  20. @RequestMapping("/allPaper")

  21. public String list(Model model) {

  22. List list = paperService.queryAllPaper();

  23. model.addAttribute("list", list);

  24. return "allPaper";

  25. }

  26.  
  27. @RequestMapping("toAddPaper")

  28. public String toAddPaper() {

  29. return "addPaper";

  30. }

  31.  
  32. @RequestMapping("/addPaper")

  33. public String addPaper(Paper paper) {

  34. paperService.addPaper(paper);

  35. return "redirect:/paper/allPaper";

  36. }

  37.  
  38. @RequestMapping("/del/{paperId}")

  39. public String deletePaper(@PathVariable("paperId") Long id) {

  40. paperService.deletePaperById(id);

  41. return "redirect:/paper/allPaper";

  42. }

  43.  
  44. @RequestMapping("toUpdatePaper")

  45. public String toUpdatePaper(Model model, Long id) {

  46. model.addAttribute("paper", paperService.queryById(id));

  47. return "updatePaper";

  48. }

  49.  
  50. @RequestMapping("/updatePaper")

  51. public String updatePaper(Model model, Paper paper) {

  52. paperService.updatePaper(paper);

  53. paper = paperService.queryById(paper.getPaperId());

  54. model.addAttribute("paper", paper);

  55. return "redirect:/paper/allPaper";

  56. }

  57. }

  58.  
  59.  
  • 在resource/mapper包下新建 PaperMapper.xml(mybatis框架mapper代理开发配置文件)
 
  1. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

  2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

  3. INSERT INTO paper(paper_id,name,number,detail) VALUE (#{paperId},#{paperName}, #{paperNum}, #{paperDetail})

  4.  
  5. DELETE FROM paper WHERE paper_id=#{paperID}

  6.  
  7. UPDATE paper

  8. SET NAME = #{paperName},NUMBER = #{paperNum},detail = #{paperDetail}

  9. WHERE paper_id = #{paperId}

  10.  
  11.  
  • 在resource/spring包下分别新建配置文件:spring-dao.xml , spring-mvc.xml , spring-service.xml

这里写图片描述

spring-dao.xml:(spring-mybatis整合配置文件)

 
  1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xmlns:context="http://www.springframework.org/schema/context"

  3. xsi:schemaLocation="http://www.springframework.org/schema/beans

  4. http://www.springframework.org/schema/beans/spring-beans.xsd

  5. http://www.springframework.org/schema/context

  6. http://www.springframework.org/schema/context/spring-context.xsd">

  7.  
  8.  
  9.  
  10.  

spring-mvc.xml:(spring mvc配置文件)

 
  1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xmlns:context="http://www.springframework.org/schema/context"

  3. xmlns:mvc="http://www.springframework.org/schema/mvc"

  4. xsi:schemaLocation="http://www.springframework.org/schema/beans

  5. http://www.springframework.org/schema/beans/spring-beans.xsd

  6. http://www.springframework.org/schema/context

  7. http://www.springframework.org/schema/context/spring-context.xsd

  8. http://www.springframework.org/schema/mvc

  9. http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

  10.  
  11.  
  12.  

spring-service.xml

 
  1. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  2. xmlns:context="http://www.springframework.org/schema/context"

  3. xmlns:tx="http://www.springframework.org/schema/tx"

  4. xsi:schemaLocation="http://www.springframework.org/schema/beans

  5. http://www.springframework.org/schema/beans/spring-beans.xsd

  6. http://www.springframework.org/schema/context

  7. http://www.springframework.org/schema/context/spring-context.xsd

  8. http://www.springframework.org/schema/tx

  9. http://www.springframework.org/schema/tx/spring-tx.xsd">

  10.  
  11. class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

  • 在jdbc.properties文件中配置mysql数据库(这里的数据库名、表名,用户名,密码一定要记得修改!!!)。
 
  1. jdbc.driver=com.mysql.jdbc.Driver

  2. jdbc.url=jdbc:mysql://127.0.0.1:3306/papersystem?useUnicode=true&characterEncoding=utf8

  3. jdbc.username=root

  4. jdbc.password=12345678

  • 在log4j.properties文件中配置日志设定
 
  1. log4j.rootLogger=ERROR, stdout

  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender

  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

  4. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  • 在mybatis-config.xml文件中配置mybtis框架
 
  1. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

  2. "http://mybatis.org/dtd/mybatis-3-config.dtd">

  3.  
  4.  
  • 配置web.xml文件
 
  1. "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

  2. "http://java.sun.com/dtd/web-app_2_3.dtd" >

  3.  
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee

  5. http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

  6. version="3.1" metadata-complete="true">

  7. Archetype Created Web Application

  8. dispatcher

  9. org.springframework.web.servlet.DispatcherServlet

  10. contextConfigLocation

  11. classpath:spring/spring-*.xml

  12. dispatcher

  13. /

  14. encodingFilter

  15. org.springframework.web.filter.CharacterEncodingFilter

  16. encoding

  17. utf-8

  18.  
  19. encodingFilter

  20. /*

  21.  
  • 修改index.jsp文件

index.jsp

 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"

  2. pageEncoding="UTF-8" %>

  3. <%

  4. pageContext.setAttribute("path", request.getContextPath());

  5. %>

  6. 首页

  7. 基于SSM框架的管理系统:简单实现增、删、改、查。



  • 点击进入管理页面

    • 在WEB-INF/jsp包下分别新建addPaper,jsp , appPaper.jsp , updatePaper.jsp

    allPaper.jsp:所有论文显示界面

     
    1. <%--

    2. Created by IntelliJ IDEA.

    3. User: lenovo

    4. Date: 2018/4/6

    5. Time: 16:57

    6. To change this template use File | Settings | File Templates.

    7. --%>

    8. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

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

    10. <% String appPath = request.getContextPath(); %>

    11. Paper列表

    12. 基于SSM框架的管理系统:简单实现增、删、改、查。

  •  
  • 论文列表 —— 显示所有论文

  • 新增

  • 论文编号 论文名字 论文数量 论文详情 操作
    ${paper.paperId} ${paper.paperName} ${paper.paperNum} ${paper.paperDetail}

  • 更改 |

  • 删除

  •  
  • addPaper,jsp:论文添加页面

     
    1. <%--

    2. Created by IntelliJ IDEA.

    3. User: lenovo

    4. Date: 2018/4/7

    5. Time: 16:45

    6. To change this template use File | Settings | File Templates.

    7. --%>

    8. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

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

    10. <%

    11. String path = request.getContextPath();

    12. String basePath = request.getScheme() + "://"

    13. + request.getServerName() + ":" + request.getServerPort()

    14. + path + "/";

    15. %>

    16. 新增论文

    17. 基于SSM框架的管理系统:简单实现增、删、改、查。

    18.  
    19. 新增论文

    20. 论文名称:


    21. 论文数量:


    22. 论文详情:


    23.  

    updatePaper.jsp:论文更改界面

     
    1. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

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

    3. <%

    4. String path = request.getContextPath();

    5. String basePath = request.getScheme() + "://"

    6. + request.getServerName() + ":" + request.getServerPort()

    7. + path + "/";

    8. %>

    9. 修改论文

    10. 基于SSM框架的管理系统:简单实现增、删、改、查。

    11.  
    12. 修改论文

    13.  
    14. 论文名称:

    15. 论文数量:

    16. 论文详情:

    4. 利用tomcat进行项目部署

    这里写图片描述

    选择default -> tomcat -> local 选择下载安装到本地的tomcat服务器的地址

    这里写图片描述

    切换到Deployment选项页 点击 + 号选择 Arctifact ,

    这里写图片描述
    添加 项目名:war exploded 打包 
    这里写图片描述
    最后在Application context 中选择 空白 那一项,点击 Apply 应用。 
    这里写图片描述

    这里写图片描述

    5. 运行界面

    这里写图片描述

    论文列表界面: 
    这里写图片描述
    新增论文界面: 
    这里写图片描述
    论文修改界面: 
    这里写图片描述

    至此,利用IDEA+Maven+SSM框架实现的简单的增、删、改、查功能已经构建完毕!

    你可能感兴趣的:(IDEA+Maven)