Day3:SSM框架实现

开发环境

  • IDEA 2018.2.2
  • JDK 1.8
  • Maven 3.6.0
  • MySQL 5.5
  • Apache-tomcat-7.0.94

项目创建

打开IDEA,新建Maven项目
2-1
填入Id
2-2
配置Maven
2-3
Next -> Finish 开始创建项目。打开项目,稍等一会,右下角有提示后,选择Enable auto import自动导包,等待项目创建(需要联网)。

项目创建成功后,在src->main下创建java和resources目录。将java目录选中,右键->Mark Directory as->Source Root,此时文件夹改变颜色。同样的对resources目录进行设置,将其设为Resources Root。
2-4
进一步创建包,完成后结构如下(可以设置文件结构显示方式)。
2-5
各目录功能:

  • util :工具
  • bean :实体类,和数据库对应
  • dao :持久层,数据库的增删改查
  • service :业务层
  • controller :控制层

搭建步骤

修改pom.xml文件

只需要替换掉properties和dependencies标签中的内容即可。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zhongruan</groupId>
  <artifactId>ssm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>ssm Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</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>
    <!-- spring版本号 -->
    <spring.version>5.0.2.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.6</mybatis.version>
    <!-- log4j日志文件管理包版本 -->
    <slf4j.version>1.7.7</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <c3p0.version>0.9.5.2</c3p0.version>
    <taglibs.version>1.1.2</taglibs.version>
  </properties>
  <dependencies>
    <!-- spring核心包 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- mybatis核心包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!-- mybatis/spring包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- 导入java ee jar 包 -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>
    <!-- 导入Mysql数据库链接jar包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.30</version>
    </dependency>
    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- JSTL标签类 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- 日志文件管理包 -->
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <!-- 数据连接池 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>${c3p0.version}</version>
    </dependency>
    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>${taglibs.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <!-- 导入servlet-api/jsp -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>ssm</finalName>
    <pluginManagement><!-- 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 http://maven.apache.org/ref/current/maven-core/default-bindings.html#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>

在bean中创建UserInfo类

此处需要加上不带参数的构造方法

package com.zhongruan.bean;

public class UserInfo {
    private int id;
    private String username;
    private String password;

    public UserInfo() {
    }

    public UserInfo(int id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "UserInfo{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

在dao中创建IUserInfoDao接口

package com.zhongruan.dao;

import com.zhongruan.bean.UserInfo;

import java.util.List;

public interface IUserInfoDao {
    public List<UserInfo> findAll();
}

修改配置文件

拷贝四个配置文件至resources
在这里插入图片描述
修改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- 配置加载类路径的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>
    <!-- 配置监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
    <!-- 解决中文乱码过滤器 -->
    <filter>
        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 前端控制器(加载classpath:spring-mvc.xml 服务器启动创建servlet) -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化参数,创建完DispatcherServlet对象,加载springmvc.xml配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 服务器启动的时候,让DispatcherServlet对象创建 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

在mapper中创建UserInfoMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zhongruan.dao.IUserInfoDao">
    <select id="findAll" resultType="com.zhongruan.bean.UserInfo">
    	select * from userinfo
    </select>

</mapper>

service接口及实现

在这里插入图片描述
IUserInfoService接口

package com.zhongruan.service;

import com.zhongruan.bean.UserInfo;

import java.util.List;

public interface IUserInfoService {
    public List<UserInfo> findAll();
}

UserInfoServiceImpl 实现

package com.zhongruan.service.impl;

import com.zhongruan.bean.UserInfo;
import com.zhongruan.dao.IUserInfoDao;
import com.zhongruan.service.IUserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service("userInfoService")
public class UserInfoServiceImpl implements IUserInfoService {
    @Autowired
    IUserInfoDao userInfoDao;

    @Override
    public List<UserInfo> findAll() {
        return userInfoDao.findAll();
    }
}

导入jsp页面

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" isELIgnored="false" %>

<html>
<body>
<h2>Hello World!</h2>
<a href="${pageContext.request.contextPath}/user/findAll.do">查询所有用户</a>
</body>
</html>

allUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>user列表</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" 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">
                <h1>
                    <small>用户列表 —— 显示所有用户</small>
                </h1>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4 column">
            <a class="btn btn-primary" href="${pageContext.request.contextPath}/user/toAddUser.do">新增</a>
        </div>
    </div>
    <div class="row clearfix">
        <div class="col-md-12 column">
            <table class="table table-hover table-striped">
                <thead>
                <tr>
                    <th>id</th>
                    <th>用户名</th>
                    <th>密码</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach items="${users}" var="userInfo">
                    <tr>
                        <td>${userInfo.id}</td>
                        <td>${userInfo.username}</td>
                        <td>${userInfo.password}</td>
                        <td>
                            <a href="${pageContext.request.contextPath}/user/toUpdate.do?id=${userInfo.id}">更改</a> |
                            <a href="${pageContext.request.contextPath}/user/delete.do?id=${userInfo.id}">删除</a>
                        </td>
                    </tr>
                </c:forEach>
                </tbody>
            </table>
        </div>
    </div>
</div>

创建UserInfoController类

实现页面的跳转

package com.zhongruan.controller;

import com.zhongruan.bean.UserInfo;
import com.zhongruan.service.IUserInfoService;
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("user")
public class UserInfoController {
    @Autowired
    IUserInfoService userInfoService;

    @RequestMapping("findAll.do")
    public ModelAndView findAll() {
        List<UserInfo> users = userInfoService.findAll();
        ModelAndView mv = new ModelAndView();
        mv.addObject("users", users);
        mv.setViewName("allUser");
        return mv;
    }
}

配置tomcat

添加Tomcat Server
在这里插入图片描述
选择tomcat路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后确认,完成配置,运行即可看到结果。

结果

项目结构
在这里插入图片描述
user列表
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1.鲜花展示以及用户模块:分别针对消费者,店长,总经理等不同角色进行不同页面,与库存表相关联 (1)针对消费者展示花的文字信息,以及图片,并展示购买按钮,选择分店进行下单。 (2)针对店长角色,在花的展示页面显示新增、修改、下架按钮,针对下架的商品店长有权限在待上架中操作鲜花上架。 (3)针对总经理,只展示鲜花展示页面,不显示任何操作。 (4)数据库查询出来的数据返回前台,将鲜花名称,花语,价格使用foreach循环放入div,展示到前台页面。(5)使用c:if标签判断登录用户角色,展示角色对应按钮。 (6)通过修改鲜花状态的字段来实现鲜花上下架功能。 (7)vip购买,显示折扣并显示折后价,普通用户没有。 (8)店长对本店客户的信息维护,总经理对所有店的客户的信息维护。 2.分店模块:与订单表,员工表相关联 (1)针对分店进行增删该查。 (2)在新增分店时指定分店店长,指定人员是从员工表中查出的非店长员工, 指定后要关联新增的分店Id并且要更改该员工对应的角色表。 (3)更改分店店长,指定的人员是从当前的分店中找出的,并且在指定新店长后,需要将原店长的角色指定回普通员工,这些涉及4表的更改。 3.员工以及前台页面模块:分别关联用户表,分店表(1)针对员工进行的增删改查。 (2)总经理登录可以看到所有分店的员工,分店店长登录只能看到自己店面的员工。 (3)可以调动员工到不同的分店,可以针对员工进行请假,请假的同时,工作天数会少一天,还有一个开除员工的选项。 (4)加入httpclient调用天气的接口,使用了H5和easyui来美化前台的皮肤。 4.库存管理以及前台页面模块:分别关联订单表,分店表,员工表,角色表,鲜花表 (1)不同角色登录可以看到不同的库存,总经理登录可以看到所有分店所有花材的库存,而分店店长登录只能看到本店花材的库存。(2)店长登录可以针对鲜花表增加的鲜花进行库存的新增。 (3)对外开放鲜花的webservice接口,添加时间控件的小部件。 (4)Bug的查找以及页面的美化。 5.订单以及javamail、POI模块:分别关联分店表,库存表,员工表,用户表,顾客表,供应商表,花材表,分为供应商订单和顾客订单 (1)顾客订单,顾客新增时可以新增鲜花订单,通过分店以及花材Id定位到库存,顾客可以进行订单的修改和退货。 (2)店长登录看到顾客订单后,确认发货顾客订单就不可以修改,同时库存也会相应减少。 (3)店长登录可以新增供应商订单,同时可以修改和退货。 (4)供应商登录可以看到订单,发货后相应库存会增加。 (5)顾客订单新增时,会判断用户是否为VIP来确定订单金额,并且会针对分店库存进行订单数量限定。 (6)POI报表打印以及javaMail发送邮件功能。 6.数据分析模块:关联库存表,分店表,订单表,员工表,用户表,角色表 (1)店长登录时,看到的所有数据,库存,销售金额,销售数量都是以本店的花朵为基础进行的查询。 (2)经理登录时,看到的所有数据是以分店为基础进行的查询。 7.供应商以及mongoDB模块:关联了供应商表,用户表,角色表 (1)进行普通的增删该查,条件查询。(1)进行普通的增删该查,条件查询。 (2)在spring中集合mongoDB,通过AOP切点切入mongoDB。 (3)针对log记录进行查询,可以查询正常以及异常的日志状态,以及时间区间,名字条件查询。 8.登陆和注册模块:关联了用户表,角色表,顾客表,员工表,供应商表 (1)注册时会选择需要注册的角色,供应商注册时会需要验证邮箱。 (2)任何角色注册时,都会进后台判断真实信息是否可以匹配,可以匹配才能注册。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值