由于学习的需要,学着写了一篇笔记来记录创建的过程,方便以后自己和别人学习使用。
一、开发工具
二、项目结构

三、编写项目
1、创建数据库papersystem
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for paper
-- ----------------------------
DROP TABLE IF EXISTS `paper`;
CREATE TABLE `paper` (
`paper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'paperID',
`name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'paper名称',
`number` int(11) NOT NULL COMMENT 'paper数量',
`detail` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'paper描述',
PRIMARY KEY (`paper_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of paper
-- ----------------------------
INSERT INTO `paper` VALUES (1, '机器学习', 2, 'mlmlmlml');
INSERT INTO `paper` VALUES (2, '深度学习', 3, 'dldldl');
INSERT INTO `paper` VALUES (3, '大数据', 4, 'bdbdbd');
SET FOREIGN_KEY_CHECKS = 1;
2、在项目 pom .xml中加载所需要的jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="#34; xmlns:xsi="#34;
xsi:schemaLocation=" #34;>
<modelVersion>4.0.0</modelVersion>
<groupId>com.zyb</groupId>
<artifactId>PaperSystem</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>PaperSystem maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<!-- junit 测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.12.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
<dependency>
<groupId> javax .servlet</groupId>
<artifactId> jstl </artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
<build>
<finalName>PaperSystem</finalName>
< plugin Management><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see #Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
3、在 pojo 包中编写实体类Paper
package com.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author zyb
*/@Data
@AllArgsConstructor
@NoArgsConstructor
public class Paper {
private long paperId;
private String name;
private int number;
private String detail;
}

4、在dao包编写接口PaperDao

package com.dao;
import com.pojo.Paper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author zyb
*/@Repository
public interface PaperDao {
/**
* 添加
* @param paper
* @return
*/ int addPaper(Paper paper);
/**
* 根据id删除
* @param paperId
* @return
*/ int deletePaperById(long paperId);
/**
* 修改
* @param paper
* @return
*/ int updatePaper(Paper paper);
/**
* 根据id查询
* @param paperId
* @return
*/ Paper queryById(long paperId);
/**
* 查询全部信息
* @return
*/ List<Paper> queryAllPaper();
}

5、在mapper包中编写PaperMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"#34;>
<mapper namespace="com.dao.PaperDao">
<resultMap id="paperResultMap" type="Paper">
<id column="paper_id" property="paperId"/>
<result column="name" property="name"/>
<result column="number" property="number"/>
<result column="detail" property="detail"/>
</resultMap>
<select id="queryAllPaper" resultMap="paperResultMap">
select paper_id,name,number,detail
from paper;
</select>
<select id="queryById" parameterType="long" resultType="Paper">
select paper_id,name,number,detail
from paper
where paper_id=#{paperId};
</select>
<insert id="addPaper" parameterType="Paper">
insert into paper(paper_id,name,number,detail) values(#{paperId},#{name},#{number},#{detail})
</insert>
<update id="updatePaper" parameterType="Paper">
update paper set name=#{name},number=#{number},detail=#{detail} where paper_id=#{paperId}
</update>
<delete id="deletePaperById" parameterType="long">
delete from paper where paper_id=#{paperId}
</delete>
</mapper>

6、在service包编写接口PaperService

package com.service;
import com.pojo.Paper;
import java.util.List;
/**
* @author zyb
*/public interface PaperService {
/**
* 添加
* @param paper
* @return
*/ int addPaper(Paper paper);
/**
* 根据id删除
* @param paperId
* @return
*/ int deletePaperById(long paperId);
/**
* 修改
* @param paper
* @return
*/ int updatePaper(Paper paper);
/**
* 根据id查询
* @param paperId
* @return
*/ Paper queryById(long paperId);
/**
* 查询全部信息
* @return
*/ List<Paper> queryAllPaper();
}

7、在service包的impl子包中编写PaperService接口的实现类

package com.service.impl;
import com.dao.PaperDao;
import com.pojo.Paper;
import com.service.PaperService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* @author zyb
*/@Service
public class PaperServiceImpl implements PaperService {
@Resource
private PaperDao paperDao;
@ Override
public int addPaper(Paper paper) {
return paperDao.addPaper(paper);
}
@Override
public int deletePaperById(long paperId) {
return paperDao.deletePaperById(paperId);
}
@Override
public int updatePaper(Paper paper) {
return paperDao.updatePaper(paper);
}
@Override
public Paper queryById(long paperId) {
return paperDao.queryById(paperId);
}
@Override
public List<Paper> queryAllPaper() {
return paperDao.queryAllPaper();
}
}

8、在controller包中编写PaperController

package com.controller;
import com.pojo.Paper;
import com.service.PaperService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import java.util.List;
/**
* @author zyb
*/@Controller
@RequestMapping("/paper")
public class PaperController {
@Resource
private PaperService paperService;
@RequestMapping("/allPaper")
public String list(Model model){
List<Paper> list = paperService.queryAllPaper();
model.addAttribute("list",list);
return "allPaper";
}
@RequestMapping("/toAddPaper")
public String toAddPaper(){
return "addPaper";
}
@RequestMapping("/addPaper")
public String addPaper(Paper paper){
paperService.addPaper(paper);
return "redirect:/paper/allPaper";
}
@RequestMapping("/del/{paperId}")
public String deletePaper(@PathVariable("paperId") long paperId){
paperService.deletePaperById(paperId);
return "redirect:/paper/allPaper";
}
@RequestMapping("/toUpdatePaper")
public String toUpdatePaper(Model model,long paperId){
model.addAttribute("paper",paperService.queryById(paperId));
return "updatePaper";
}
@RequestMapping("/updatePaper")
public String updatePaper(Model model,Paper paper){
paperService.updatePaper(paper);
paper=paperService.queryById(paper.getPaperId());
model.addAttribute("paper",paper);
return "redirect:/paper/allPaper";
}
}

9、在spring包中创建spring-dao.xml、spring-service.xml、spring-mvc.xml
(1)spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="#34;
xmlns:xsi="#34;
xmlns:context="#34;
xsi:schemaLocation="
#34;>
<context:property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.name}"/>
<property name="password" value="${jdbc.pwd}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="typeAliasesPackage" value="com.pojo"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.dao"/>
</bean>
</beans>

(2)spring-service.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="#34;
xmlns:xsi="#34;
xmlns:context="#34;
xmlns:tx="#34;
xsi:schemaLocation="
#34;>
<context:component-scan base-package="com.service"/>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

(3)spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="#34;
xmlns:xsi="#34;
xmlns:context="#34;
xmlns:mvc="#34;
xsi:schemaLocation="
#34;>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<context:component-scan base-package="com.controller"/>
</beans>
(4)jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/papersystem?useSSL=false&useUnicode=true&characterEncoding=utf8
jdbc.name=root
jdbc.pwd=123456
(5)mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"#34;>
<configuration>
<settings>
<setting name="useGeneratedKeys" value="true"/>
<setting name="useColumnLabel" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
(6)log4j.properties
log4j.rootLogger=ERROR,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
10、配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="#34;
xmlns:xsi="#34;
xsi:schemaLocation=" #34;
version="4.0">
<!--前端控制器-->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--encodingFilter乱码过滤-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
11、编写jsp页面
(1)index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首页</title>
<link rel="stylesheet" href="#34;>
<style type="text/css">
a{
text-decoration: none;
color: black;
font-size: 18px;
}
h3{
width: 180px;
height: 38px;
margin: 100px auto;
text-align: center;
line-height: 38px;
background: deepskyblue;
border-radius: 4px;
}
</style>
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
基于SSM框架的管理系统:简单实现增、删、改、查
</h1>
</div>
</div>
</div>
</div>
<br><br>
<h3>
<a href="${pageContext.request.contextPath}/paper/allPaper">点击进入管理系统</a>
</h3>
</body>
</html>
(2)allPaper.jsp
<%@ taglib prefix="c" uri="#34; %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Paper列表</title>
<%--BootStrap美化页面--%>
<link href="#34; rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
基于SSM框架的管理系统:简单实现增、删、改、查
</h1>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<small>论文列表--显示所有论文</small>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4 column">
<a class="btn btn-primary" href="${pageContext.request.contextPath}/paper/toAddPaper">新增</a>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<table class="table table-hover table-striped">
<thead>
<tr>
<th>论文编号</th>
<th>论文名称</th>
<th>论文数量</th>
<th>论文详情</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach var="paper" items="${list}" varStatus="status">
<tr>
<td>${paper.paperId}</td>
<td>${paper.name}</td>
<td>${paper.number}</td>
<td>${paper.detail}</td>
<td>
<a href="${pageContext.request.contextPath}/paper/toUpdatePaper?paperId=${paper.paperId}">更改</a>
|
<a href="${pageContext.request.contextPath}/paper/del/${paper.paperId}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
(3)addPaper.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>新增论文</title>
<%--BootStrap美化页面--%>
<link href="#34; rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
基于SSM框架的管理系统:简单实现增、删、改、查
</h1>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<small>新增论文</small>
</div>
</div>
</div>
<form action="${pageContext.request.contextPath}/paper/addPaper" method="post" >
论文名称:<input type="text" name="name"><br><br><br>
论文数量:<input type="text" name="number"><br><br><br>
论文详情:<input type="text" name="detail"><br><br><br>
<input type="submit" value="添加" >
</form>
</div>
</body>
</html>
(4)updatePaper.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改论文</title>
<%--BootStrap美化页面--%>
<link href="#34; rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<h1>
基于SSM框架的管理系统:简单实现增、删、改、查
</h1>
</div>
</div>
</div>
<div class="row clearfix">
<div class="col-md-12 column">
<div class="page-header">
<small>修改论文</small>
</div>
</div>
</div>
<form action="${pageContext.request.contextPath}/paper/updatePaper" method="post" >
<input type="hidden" name="paperId" value="${paper.paperId}">
论文名称:<input type="text" name="name" value="${paper.name}"><br><br><br>
论文数量:<input type="text" name="number" value="${paper.number}"><br><br><br>
论文详情:<input type="text" name="detail" value="${paper.detail}"><br><br><br>
<input type="submit" value="提交" >
</form>
</div>
</body>
</html>
12、运行项目
首页

论文列表页面

新增论文页面

修改论文页面
