SSM(Spring,Spring MVC,Mybatis),下面我们就动手跟着步骤搭建一个 SSM 框架整合的项目工程,并写出一个基于 SSM 框架的商品管理系统。
开发环境:SSM,MyEclipse,JDK 1.7,Tomcat 7.0,Oracle数据库。
导入 jar 包,当然也可以使用 Maven ,这里以手动导 jar 包为例。
搭建SSM框架所需jar包:https://download.csdn.net/download/qq_40087415/10358080
创建好并导入 jar 包之后的项目结构,如下图所示:
我们可以在 src 目录下右击 New --> Source Folder 创建一个 config 同 src 同级的目录,放置我们的xml和properties文件。
1、配置数据库驱动 db.properties 文件(Oracle为例)
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:localhost:1521:orcl
username=scott
password=tiger
log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
index.jsp
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:spring-config.xml
dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-config.xml
dispatcher
/
characterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
characterEncodingFilter
/*
1、创建数据库商品信息表(goods_info)和商品状态表(status_info),SQL 语句如下:导入到 PL/SQL 中执行即可。
--如果存在删除原有的数据表和序列
drop table status_info;
drop table goods_info;
drop sequence seq_statusId;
drop sequence seq_goodsId;
--创建商品状态表
create table status_info(
statusId number primary key, --主键 状态编号
statusName varchar(20) not null --状态名称
);
--创建商品信息表 goods_info
create table goods_info(
goodsId number primary key, --商品ID
goodsName varchar2(50) not null, --商品名称
goodsPrice number not null, --商品价格
goodsType Varchar2(30) not null, --商品型号
statusId number not null,
constraint fk_statusId foreign key(statusId) references status_info(statusId), --商品状态(外键)
goodsStore number not null --商品库存
);
--创建状态表序列 seq_statusId
create sequence seq_statusId
start with 1
increment by 1
nomaxvalue
nocycle;
--创建商品信息表序列 seq_goodsId
create sequence seq_goodsId
start with 1
increment by 1
nomaxvalue
nocycle;
-- 插入模拟数据
insert into status_info values(seq_statusId.Nextval,'正常');
insert into status_info values(seq_statusId.Nextval,'库存不足');
commit;
--select * from status_info;
insert into goods_info values(seq_goodsId.Nextval,'茶壶',199,'GC5689',1,5);
insert into goods_info values(seq_goodsId.Nextval,'小米手机',799,'红米',2,0);
insert into goods_info values(seq_goodsId.Nextval,'三星手机',3699,'note39002',1,3);
insert into goods_info values(seq_goodsId.Nextval,'鼠标',35,'双飞燕JH5490',1,500);
commit;
--select * from goods_info;
2、编写 entity 实体类
package com.aaa.entity;
/**
* @Description 商品实体类
* @author 刘鹏博
* @version v1.0
* @date 2018-5-28
*/
public class Goods {
private int goodsId;
private String goodsName;
private double goodsPrice;
private String goodsType;
private int statusId;
private int goodsStore;
private String statusName;
public int getGoodsId() {
return goodsId;
}
public void setGoodsId(int goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public double getGoodsPrice() {
return goodsPrice;
}
public void setGoodsPrice(double goodsPrice) {
this.goodsPrice = goodsPrice;
}
public String getGoodsType() {
return goodsType;
}
public void setGoodsType(String goodsType) {
this.goodsType = goodsType;
}
public int getStatusId() {
return statusId;
}
public void setStatusId(int statusId) {
this.statusId = statusId;
}
public int getGoodsStore() {
return goodsStore;
}
public void setGoodsStore(int goodsStore) {
this.goodsStore = goodsStore;
}
public String getStatusName() {
return statusName;
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
}
3、编写 dao 层接口
package com.aaa.dao;
import java.util.List;
import com.aaa.entity.Goods;
/**
* @Description 商品管理接口
* @author 刘鹏博
* @version v1.0
* @date 2018-5-28
*/
public interface GoodsDao {
/**
* @Description 商品展示
* @author 刘鹏博
* @param goods
* @return
* List
*/
public List selectGoods(Goods goods);
}
4、编写 service 业务层接口
package com.aaa.service;
import java.util.List;
import com.aaa.entity.Goods;
/**
* @Description 商品管理业务类
* @author 刘鹏博
* @version v1.0
* @date 2018-5-28
*/
public interface GoodsService {
/**
* @Description 商品展示
* @author 刘鹏博
* @param goods
* @return
* List
*/
public List selectGoods(Goods goods);
}
5、实现 service 业务类
package com.aaa.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.aaa.dao.GoodsDao;
import com.aaa.entity.Goods;
import com.aaa.service.GoodsService;
/**
* @Description 商品管理业务实现类
* @author 刘鹏博
* @version v1.0
* @date 2018-5-28
*/
@Service
public class GoodsServiceImpl implements GoodsService {
@Autowired
private GoodsDao goodsDao;
public List selectGoods(Goods goods) {
// 调用查询方法
return goodsDao.selectGoods(goods);
}
}
6、编写 mapper 文件
7、编写 Controller 控制层
package com.aaa.controller;
import java.util.List;
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 com.aaa.entity.Goods;
import com.aaa.service.impl.GoodsServiceImpl;
/**
* @Description 商品管理控制层
* @author 刘鹏博
* @version v1.0
* @date 2018-5-28
*/
@Controller
@RequestMapping("goods")
public class GoodsController {
@Autowired
private GoodsServiceImpl serviceImpl;
@RequestMapping("show")
public String selectGoods(Model model,Goods goods){
List selectGoods = serviceImpl.selectGoods(goods);
model.addAttribute("goods", selectGoods);
return "show";
}
}
8、在WEB-INF 下新建 jsp 目录,新建 show.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
查看商品信息
商品信息
商品名称
商品价格
商品型号
商品数量
商品状态
${goods.goodsName }
${goods.goodsPrice }
${goods.goodsType }
${goods.goodsStore }
${goods.statusName }
${goods.goodsName }
${goods.goodsPrice }
${goods.goodsType }
${goods.goodsStore }
${goods.statusName }
9、部属项目并运行 Tomcat 服务器,浏览器输入:localhost:8080/goods-test/goods/show 访问项目,效果如下所示:
到此为止,框架的基本使用已经完成。在使用过程中,有些配置需要根据业务做稍微的改动或者添加,希望能够帮到正在努力学习中你,不足之处,请见谅并指出。