mimissm

米米商城后台管理系统

1. 项目目标

本项目主要目的是使学员更深层的了解IT企业的文化和岗位需求、模拟企业的工作场景,分享研制成果,增加学员对今后工作岗位及计算机应用开发对客观世界影响的感性认识,使学员对技术有更深入的理解,在今后工作中能有更明确的目标和方向。并能为日后职业规划提供很好的指导作用。

1.1 具体的技术指标

  1. 熟悉Spring框架的使用

  2. 熟悉SpringMVC框架的使用;

  3. 熟悉MyBatis框架的使用

  4. 掌握JSP的标签库的使用

  5. 掌握EL表达式的使用

  6. 掌握AJAX异步刷新技术的使用

  7. 掌握文件上传实现

  8. 掌握异步AJAX分页实现

  9. 熟悉企业日常的接口开发流程

  10. 熟悉企业的项目进度控制规范

  11. 建立起软件开发的基本思想和积累开发中常见的设计思路

  12. 巩固SSM框架以及JavaEE的相关知识点,增强对各个知识点的进一步认识

2. 项目介绍

2.1 项目名称:米米商城后台管理系统

本系统采用SSM技术进行开发与设计,可以让学员对JavaEE的框架有个全面的认识,并能将实用技能与理论知识进行完美的结合,让学员知其然的同时,也要知其所以然,加快学员向IT技术转型的专业知识,增加学员在社会就业时的竞争力。

2.2 使用技术

服务端:Spring+SpringMVC+MyBatis框架整合

数据库:MySql8.0

web服务器:Tomcat

项目管理:Maven

前端:jQuery+BootStrap+JavaScript

开发工具:idea2020

3. 开发步骤

1、介绍项目实现功能,使用到的技术点,使用到的框架,演示最终效果。

2、创建数据库和表,添加idea可视化。

3、完成SSM框架的搭建。

4、添加字符编码过滤器,实现中文编码解析。

5、使用数据库连接池技术,使用mybatis框架完成底层实体类的创建和数据访问层的实现。

6、实现登录功能。

7、实现登录成功后全部商品分页显示。

8、实现Ajax的翻页功能。

9、添加监听器,实现获取全部商品类型功能。

10、实现商品增加功能。

11、实现Ajax商品删除功能。

12、实现Ajax商品批量删除功能。

13、实现商品修改的回显功能。

14、实现商品修改功能。

15、实现按商品名称条件查询并分页功能,翻页使用Ajax技术。

16、实现按商品类型查询并分页功能,翻页使用Ajax技术。

17、实现按商品价格查询并分页功能,翻页使用Ajax技术。

18、实现按商品名称、商品类型、商品价格多条件查询并分页,翻页使用Ajax技术。

19、实现退出功能。

maven工程构建web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4nFiq8Q-1652020287301)(http://zwj.birenyin.cn//img/image-20220503100911939.png)]

pom.xml

<?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.bjpowernode</groupId>
  <artifactId>mimissm</artifactId>
  <version>1.0</version>
  <packaging>war</packaging>

  <!-- 集中定义依赖版本号 -->
  <properties>
    <junit.version>4.12</junit.version>
    <spring.version>5.2.5.RELEASE</spring.version>
    <mybatis.version>3.5.1</mybatis.version>
    <mybatis.spring.version>1.3.1</mybatis.spring.version>
    <mybatis.paginator.version>1.2.15</mybatis.paginator.version>
    <mysql.version>8.0.22</mysql.version>
    <slf4j.version>1.6.4</slf4j.version>
    <druid.version>1.1.12</druid.version>
    <pagehelper.version>5.1.2</pagehelper.version>
    <jstl.version>1.2</jstl.version>
    <servlet-api.version>3.0.1</servlet-api.version>
    <jsp-api.version>2.0</jsp-api.version>
    <jackson.version>2.9.6</jackson.version>
  </properties>


  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- 不一定借助mybaties 自己底层也jdbc一整套的处理  -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jms</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>
      <!-- spring的test和junit的test有什么区别和说法 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- Mybatis -->
      
       <!-- 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>${mybatis.spring.version}</version>
    </dependency>
      
       <!-- Mybatis 和 分页整合-->
    <dependency>
      <groupId>com.github.miemiedev</groupId>
      <artifactId>mybatis-paginator</artifactId>
      <version>${mybatis.paginator.version}</version>
    </dependency>
       <!-- 分页本身依赖 -->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>${pagehelper.version}</version>
    </dependency>
    <!-- MySql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <!-- 连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>

    <!-- junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>


    <!-- JSP相关 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>${jstl.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <scope>provided</scope>
      <version>${jsp-api.version}</version>
    </dependency>
    <!-- Jackson Json处理工具包 -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20140107</version>
    </dependency>

<!--    文件异步上传使用的依赖-->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.1</version>
    </dependency>
  </dependencies>

  <!-- 插件配置    -->
      <!-- JDK编译器的一个插件    -->  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
              <!-- 开发的时候使用的1.8    -->
          <source>1.8</source>
              <!--  交付给客户的时候使用的也是1.8   -->
          <target>1.8</target>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
    </plugins>
    <!--识别所有的配置文件-->
      
      <!-- 资源文件指定添加的文件   -->  
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  </build>


</project>

mysql驱动和mysql数据库适配版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6efELoak-1652020287304)(http://zwj.birenyin.cn//img/image-20220503104702446.png)]

配置文件内容都是小写

applicationContext_dao.xml

applicationContext_dao.xml
image-20220503125003472
SqlMapConfig.xml
image-20220503125045763
spring applicationContext_dao.xml接管mabatis.xml配置文件大多数功能

image-20220503111817976

classpath:

image-20220503111211691

DruidDataSource 德鲁伊数据库连接池

image-20220503111616308

applicationContext_service.xml

按照分层来拆

applicationContext_service.xml
image-20220503125233683

dao(mybatis) serviece(事务) controller

image-20220503114930750

<import resource="classpath:applicationContext_dao.xml"></import>

可能发生循环注入

image-20220503115308999

datasource报红没有关系

最后初始化注入的时候都会将这两个配置文件(dao service.xml)都注入到spring 容器中

image-20220503115236134

image-20220503115910681

image-20220503120644174

切入到业务逻辑层

image-20220503121025490

springmvc.xml

springmvc.xml
image-20220503124839093

InternalResourceViewResolver jsp视图解析器的父类码源

InternalResourceViewResolver extends UrlBasedViewResolver

image-20220503122326838

mvc

image-20220503124348514

mvc注解 驱动配置

image-20220503124615666

web.xml

web.xml
image-20220503130240376

监听器配置spring 监听器启动是最早的 过滤器 -->servlet

当web容器启动的时候能直接加载

image-20220503162315917

DispatcherServlet和DefaultServlet区别 要加注解驱动

image-20220503130206859

整个大集合

Mapper

已经对Mapper接口 进行了创建

<!--加载dao包中的所有DAO接口,通过sqlSessionFactory获取sqlSession,然后创建所有的DAO接口对象,存储在Spring容器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.liguoqing.dao"/>
    </bean>

小提示

找错要先表面的走一遍过程,

然后再debug

PageInfo

image-20220503202505728

**//**当前页
private int pageNum;
**//****每页的数量
private int pageSize;
** //当前页的数量
private int size;
//由于startRow和endRow不常用,这里说个具体的用法
//可以在页面中"显示startRow到endRow 共size条数据"

//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
**//****总页数
private int pages;
** **//**本页的结果集

private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页

private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;

Spring

image-20220503203555142

Ajax

ajax 是一种浏览器通过 js 异步发起请求,局部更新页面的技术。 Ajax 请求的局部更新,浏览器地址栏不会发生变化 局部更新不会舍弃原来页面的内容

var pname = $("#pname").val();
var typeid = $("#typeid").val();
var lprice = $("#lprice").val();
var hprice = $("#hprice").val();
$.ajax({
    type:"post",
    url:"${pageContext.request.contextPath}/prod/ajaxSplit.action",
    data:{"pname":pname,"typeid":typeid,"lprice":lprice,"hprice":hprice},
    success:function () {
        //刷新显示数据的容器
        $("#table").load("http://localhost:8080/admin/product.jsp #table");

分页操作

image-20220503225835558

代码没问题,但是idea依然报错的解决方法

image-20220504095017193

没有代码提示

尝试完要bulid项目

image-20220504130910434

image-20220504100459209

属性名问题,对应的属性名要正确 方便mvc直接将属性值注入到ProductType中

image-20220504100929971

Mapper 空指针

image-20220504131640032

【idea】 build 和rebuild区别

build:针对更改文件编译

rebuild:clean+全部编译

intellj idea中target目录和out目录有什么区别

out存放的是该项目下所有Module(模块)的编译结果。
target存放的是单个Module的编译结果。
如果为某个Module指定了编译结果的路径,则不会再输出到out文件夹中了。
你在Project Structure中的Project选项卡中可以设置Project compiler output的目录。
在Modules中选择某一个模块后,在右侧的Paths选项卡中可以设置该模块的Compiler output目录。

控制层增加新方法, 快捷到业务层接口创建新的方法

image-20220504221600393

在业务层实现接口方法

image-20220504221725955

视图解析器的使用
//转到action 使用forword 和redensit
        return "forward:/prod/split.action";


//跳到其他j's'p页面直接  加文件名
    return "update";

7324)]

【idea】 build 和rebuild区别

build:针对更改文件编译

rebuild:clean+全部编译

intellj idea中target目录和out目录有什么区别

out存放的是该项目下所有Module(模块)的编译结果。
target存放的是单个Module的编译结果。
如果为某个Module指定了编译结果的路径,则不会再输出到out文件夹中了。
你在Project Structure中的Project选项卡中可以设置Project compiler output的目录。
在Modules中选择某一个模块后,在右侧的Paths选项卡中可以设置该模块的Compiler output目录。

控制层增加新方法, 快捷到业务层接口创建新的方法

[外链图片转存中…(img-QXulfLLN-1652020287325)]

在业务层实现接口方法

[外链图片转存中…(img-bR1vodXB-1652020287325)]

视图解析器的使用
//转到action 使用forword 和redensit
        return "forward:/prod/split.action";


//跳到其他j's'p页面直接  加文件名
    return "update";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值