SSM框架搭建与实战案例

    SSM(Spring,Spring MVC,Mybatis),下面我们就动手跟着步骤搭建一个 SSM 框架整合的项目工程,并写出一个基于 SSM 框架的商品管理系统。

    开发环境:SSM,MyEclipse,JDK 1.7,Tomcat 7.0,Oracle数据库。

一、创建Java Web项目

    导入 jar 包,当然也可以使用 Maven ,这里以手动导 jar 包为例。

    搭建SSM框架所需jar包:https://download.csdn.net/download/qq_40087415/10358080

    创建好并导入 jar 包之后的项目结构,如下图所示:

SSM框架搭建与实战案例_第1张图片

二、配置 spring-config.xml 、springmvc-config.xml 、web.xml 文件

    我们可以在 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

    2、配置 spring-config.xml 文件



	
	
	
	
		
	 
	
	
		
		
		
		
	
	
	
		
		
	
	
	
		
	

    3、配置 springmvc-config.xml 文件



	
	
	
	
	
	
		
		
	
	
	
	
	
		
	

    4、当然我们也可以加入 log4j.properties 日志文件,可以查看项目运行时的状态信息

log4j.rootLogger=debug, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

    5、配置 web.xml 文件



  	
  
    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
  	/*
  
  

    到此为止,我们的 SSM 框架基本配置已经完成了,下面我们就可以基于此框架来开发案例了。整个环境搭建的项目结构如下图:
SSM框架搭建与实战案例_第2张图片

三、开发超市商品管理小案例

    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 访问项目,效果如下所示:

SSM框架搭建与实战案例_第3张图片

    到此为止,框架的基本使用已经完成。在使用过程中,有些配置需要根据业务做稍微的改动或者添加,希望能够帮到正在努力学习中你,不足之处,请见谅并指出。

你可能感兴趣的:(JavaEE,Java,Web,Spring,Spring,MVC,MyBatis)