ssm商城教学7.分类查询

新建项目

ssm商城教学7.分类查询

选中maven webapp格式

1. 左边选中Maven
2. 勾选Create from archetype
3. 选中 org.apache.maven.archetypes:maven-archetype-webapp
4. Next

ssm商城教学7.分类查询

项目参数

GroupId: com.how2java.tmall
ArtifactId: tmall_ssm

ssm商城教学7.分类查询

Maven仓库

天猫ssm项目会用到一系列的jar包,在右上角的.m2.rar 只有35m,里面包含了这个项目用到的jar包。 解压出来后,放在maven的仓库目录里。

通常来讲,maven 仓库的默认目录是:${user.home}/.m2/repository。 
对应我的机器就是 

C:\Users\X7TI\.m2\repository

ssm商城教学7.分类查询

确认项目名称

无需改动,点击Finish即可

ssm商城教学7.分类查询

Maven import

每次新建Maven项目,或者pom.xml有改动,都会有这个提示,这次点击Enable Auto-Import,自动导入,省掉麻烦。

ssm商城教学7.分类查询

pom.xml

复制如下内容到已经存在的pom里,如图所示,这个过程会导致idea去下载pom里声明的相关jar包,会花一定的时间,视网络和计算机性能而定。

为了确保导入成功,右键点击pom.xml->Maven->Reimport

<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.how2java.tmall</groupId>

  <artifactId>tmall_ssm</artifactId>

  <version>0.0.1-SNAPSHOT</version>

  <packaging>war</packaging>

 

  <properties>

    <spring.version>4.1.3.RELEASE</spring.version>

    <pagehelper.version>5.1.2-beta</pagehelper.version>

    <mysql.version>5.1.6</mysql.version>

    <mybatis.spring.version>1.2.3</mybatis.spring.version>

    <mybatis.version>3.1.1</mybatis.version>

    <junit.version>4.12</junit.version>

    <jstl.version>1.2</jstl.version>

    <jsqlparser.version>1.0</jsqlparser.version>

    <jackson.version>1.2.7</jackson.version>

    <servlet-api.version>3.1.0</servlet-api.version>

    <druid.version>1.0.18</druid.version>

    <log4j.version>1.2.16</log4j.version>

    <commons-logging.version>1.2</commons-logging.version>

    <commons-fileupload.version>1.2.1</commons-fileupload.version>

    <commons-io.version>1.3.2</commons-io.version>

    <commons-lang.version>2.6</commons-lang.version>

    <aopalliance.version>1.0</aopalliance.version>

    <mybatis-generator.version>1.3.5</mybatis-generator.version>

  </properties>

 

  <dependencies>

 

    <dependency>

      <groupId>junit</groupId>

      <artifactId>junit</artifactId>

      <version>${junit.version}</version>

    </dependency>

 

    <dependency>

      <groupId>org.mybatis</groupId>

      <artifactId>mybatis</artifactId>

      <version>${mybatis.version}</version>

    </dependency>

 

    <dependency>

      <groupId>org.mybatis</groupId>

      <artifactId>mybatis-spring</artifactId>

      <version>${mybatis.spring.version}</version>

    </dependency>

 

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

 

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-context</artifactId>

      <version>${spring.version}</version>

    </dependency>

 

    <dependency>

      <groupId>org.springframework</groupId>

      <artifactId>spring-test</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>

 

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

    <!-- JSP相关 -->

    <dependency>

      <groupId>jstl</groupId>

      <artifactId>jstl</artifactId>

      <version>${jstl.version}</version>

    </dependency>

 

    <dependency>

      <groupId>javax.servlet</groupId>

      <artifactId>javax.servlet-api</artifactId>

      <version>${servlet-api.version}</version>

      <scope>provided</scope>

    </dependency>

 

    <!-- pageHelper -->

    <dependency>

      <groupId>com.github.pagehelper</groupId>

      <artifactId>pagehelper</artifactId>

      <version>${pagehelper.version}</version>

    </dependency>

 

    <!--jsqlparser-->

    <dependency>

      <groupId>com.github.jsqlparser</groupId>

      <artifactId>jsqlparser</artifactId>

      <version>${jsqlparser.version}</version>

    </dependency>

    <dependency>

      <groupId>log4j</groupId>

      <artifactId>log4j</artifactId>

      <version>${log4j.version}</version>

    </dependency>

 

    <dependency>

      <groupId>commons-logging</groupId>

      <artifactId>commons-logging</artifactId>

      <version>${commons-logging.version}</version>

    </dependency>

 

    <dependency>

      <groupId>commons-fileupload</groupId>

      <artifactId>commons-fileupload</artifactId>

      <version>${commons-fileupload.version}</version>

    </dependency>

 

    <dependency>

      <groupId>commons-io</groupId>

      <artifactId>commons-io</artifactId>

      <version>${commons-io.version}</version>

    </dependency>

 

    <dependency>

      <groupId>commons-lang</groupId>

      <artifactId>commons-lang</artifactId>

      <version>${commons-lang.version}</version>

    </dependency>

 

    <dependency>

      <groupId>aopalliance</groupId>

      <artifactId>aopalliance</artifactId>

      <version>${aopalliance.version}</version>

    </dependency>

 

    <dependency>

      <groupId>org.mybatis.generator</groupId>

      <artifactId>mybatis-generator-core</artifactId>

      <version>${mybatis-generator.version}</version>

    </dependency>

 

  </dependencies>

 

  <build>

    <finalName>${project.artifactId}</finalName>

    <plugins>

      <!-- 资源文件拷贝插件 -->

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-resources-plugin</artifactId>

        <version>2.7</version>

        <configuration>

          <encoding>UTF-8</encoding>

        </configuration>

      </plugin>

      <!-- java编译插件 -->

      <plugin>

        <groupId>org.apache.maven.plugins</groupId>

        <artifactId>maven-compiler-plugin</artifactId>

        <version>3.2</version>

        <configuration>

          <source>1.8</source>

          <target>1.8</target>

          <encoding>UTF-8</encoding>

        </configuration>

      </plugin>

    </plugins>

    <pluginManagement>

      <plugins>

        <!-- 配置Tomcat插件 -->

        <plugin>

          <groupId>org.apache.tomcat.maven</groupId>

          <artifactId>tomcat7-maven-plugin</artifactId>

          <version>2.2</version>

        </plugin>

      </plugins>

    </pluginManagement>

 

    <resources>

      <resource>

        <directory>src/main/resources</directory>

        <includes>

          <include>**/*.properties</include>

          <include>**/*.xml</include>

          <include>**/*.tld</include>

        </includes>

        <filtering>false</filtering>

      </resource>

      <resource>

        <directory>src/main/java</directory>

        <includes>

          <include>**/*.properties</include>

          <include>**/*.xml</include>

        </includes>

        <filtering>false</filtering>

      </resource>

    </resources>

 

  </build>

 

</project>

新建java源代码目录

maven web项目默认是没有java源代码目录的,所以需要手动创建,并设置其为源代码目录
右键main目录-> New->Directory->输入java->右键java->Mark Directory as-> Sources Root
这样就创建了存放java源文件的目录了

ssm商城教学7.分类查询

创建包

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.pojo 创建包
包创建好之后如图所示

ssm商城教学7.分类查询

Category

ssm商城教学7.分类查询

Category

package com.how2java.tmall.pojo;

 

public class Category {

    private Integer id;

 

    private String name;

 

    public Integer getId() {

        return id;

    }

 

    public void setId(Integer id) {

        this.id = id;

    }

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name == null null : name.trim();

    }

}

CategoryMapper

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.mapper 创建包

接着创建接口CategoryMapper,因为本知识点只做查询,所以只声明了一个list方法。

package com.how2java.tmall.mapper;

 

import com.how2java.tmall.pojo.Category;

 

import java.util.List;

 

public interface CategoryMapper {

    List<Category> list();

}

CategoryService

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.service 创建包

接着创建接口CategoryService,因为本知识点只做查询,所以只声明了一个list方法。

package com.how2java.tmall.service;

import com.how2java.tmall.pojo.Category;

import java.util.List;

public interface CategoryService{

    List<Category> list();

}

CategoryServiceImpl

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.service.impl 创建包

新建CategoryService接口的实现类CategoryServiceImpl

注解@Service声明当前类是一个Service类
通过自动装配@Autowired引入CategoryMapper ,在list方法中调用CategoryMapper 的list方法.
 

package com.how2java.tmall.service.impl;

import com.how2java.tmall.mapper.CategoryMapper;

import com.how2java.tmall.pojo.Category;

import com.how2java.tmall.service.CategoryService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service

public class CategoryServiceImpl  implements CategoryService {

    @Autowired

    CategoryMapper categoryMapper;

    public List<Category> list(){

        return categoryMapper.list();

    }

 

}

CategoryController

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.controller 创建包
新建CategoryController,

注解@Controller声明当前类是一个控制器
注解@RequestMapping("")表示访问的时候无需额外的地址
注解@Autowired把CategoryServiceImpl自动装配进了CategoryService 接口
注解@RequestMapping("admin_category_list") 映射admin_category_list路径的访问
在list方法中,通过categoryService.list()获取所有的Category对象,然后放在"cs"中,并服务端跳转到 “admin/listCategory” 视图。
“admin/listCategory” 会根据后续的springMVC.xml 配置文件,跳转到 WEB-INF/jsp/admin/listCategory.jsp 文件

package com.how2java.tmall.controller;

 

import com.how2java.tmall.pojo.Category;

import com.how2java.tmall.service.CategoryService;

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 java.util.List;

 

@Controller

@RequestMapping("")

public class CategoryController {

    @Autowired

    CategoryService categoryService;

  

    @RequestMapping("admin_category_list")

    public String list(Model model){

        List<Category> cs= categoryService.list();

        model.addAttribute("cs", cs);

        return "admin/listCategory";

    }

}

CategoryMapper.xml

1. 在resources目录下,新建mapper目录
2. 右键mapper目录->New->File 新建文件CategoryMapper.xml
CategoryMapper.xml的namespace必须是com.how2java.tmall.mapper.CategoryMapper,以和CategoryMapper保持一致。
CategoryMapper.xml声明了唯一的一条sql语句:

select * from category order by id desc

<?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.how2java.tmall.mapper.CategoryMapper">

  <select id="list" resultType="Category">

    select * from   category order by id desc

  </select>

</mapper>

log4j.properties

在resources目录下新建log4j.properties。如图所示这个配置文件的作用是开启日志,当访问页面的时候,查看mybatis运行的情况,执行了什么SQL语句,以及sql语句的返回情况等信息。

ssm商城教学7.分类查询

# Global logging configuration

log4j.rootLogger=ERROR, stdout

# MyBatis logging configuration...

log4j.logger.com.how2java.tmall=TRACE

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

jdbc.properties

在resources目录下新建jdbc.properties,此配置文件给出了访问数据库需要的必须信息:
1. 驱动
2. url
3. 账号
4. 密码

#数据库配置文件

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8

jdbc.username=root

jdbc.password=admin

applicationContext.xml

在resources目录下新建applicationContext.xml
此配置文件做了如下工作
1. 启动对注解的识别

<context:annotation-config />

<context:component-scan base-package="com.how2java.tmall.service" />


2. 指定对jdbc.properties的引用

<context:property-placeholder location="classpath:jdbc.properties"/>


3. 配置数据源 

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">


4. 配置Mybatis的SessionFactory,其中声明了别名,并且使用前面配置的数据源,扫描CategoryMapper.xml配置文件

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">


5. 扫描Mapper类:CategoryMapper

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 

    <context:annotation-config />

    <context:component-scan base-package="com.how2java.tmall.service" />

 

    <!-- 导入数据库配置文件 -->

    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 配置数据库连接池 -->

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">

        <!-- 基本属性 url、user、password -->

        <property name="url" value="${jdbc.url}" />

        <property name="username" value="${jdbc.username}" />

        <property name="password" value="${jdbc.password}" />

 

        <!-- 配置初始化大小、最小、最大 -->

        <property name="initialSize" value="1" />

        <property name="minIdle" value="1" />

        <property name="maxActive" value="20" />

 

        <!-- 配置获取连接等待超时的时间 -->

        <property name="maxWait" value="60000" />

 

        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

        <property name="timeBetweenEvictionRunsMillis" value="60000" />

 

        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

        <property name="minEvictableIdleTimeMillis" value="300000" />

 

        <property name="validationQuery" value="SELECT 1" />

        <property name="testWhileIdle" value="true" />

        <property name="testOnBorrow" value="false" />

        <property name="testOnReturn" value="false" />

 

        <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->

        <property name="poolPreparedStatements" value="true" />

        <property name="maxPoolPreparedStatementPerConnectionSize"

                  value="20" />

    </bean>

 

    <!--Mybatis的SessionFactory配置-->

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="typeAliasesPackage" value="com.how2java.tmall.pojo" />

        <property name="dataSource" ref="dataSource"/>

        <property name="mapperLocations" value="classpath:mapper/*.xml"/>

        <!--分页插件,目前先注释,后面重构的时候才会使用

        <property name="plugins">

            <array>

                <bean class="com.github.pagehelper.PageInterceptor">

                    <property name="properties">

                        <value>

                        </value>

                    </property>

                </bean>

            </array>

        </property>

        -->

    </bean>

 

    <!--Mybatis的Mapper文件识别-->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <property name="basePackage" value="com.how2java.tmall.mapper"/>

    </bean>

 

</beans>

springMVC.xml

在resources目录下新建springMVC.xml
1. 开启注解的识别

<context:annotation-config/>

<context:component-scan base-package="com.how2java.tmall.controller">

<context:include-filter type="annotation"

expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

<mvc:annotation-driven />


2.开通静态资源的访问,否则访问图片,css,js等文件可能出错

<mvc:default-servlet-handler />


3. 视图定位 
视图定位到/WEB-INF/JSP/*.jsp这里
4. 对上传文件的解析

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

 

    <!--启动注解识别-->

    <context:annotation-config/>

 

    <context:component-scan base-package="com.how2java.tmall.controller">

        <context:include-filter type="annotation"

                                expression="org.springframework.stereotype.Controller"/>

    </context:component-scan>

 

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

 

    <!-- 对上传文件的解析-->

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

</beans>

修改web.xml

修改web.xml,主要提供如下功能
1. 指定spring的配置文件为classpath下的applicationContext.xml
2. 设置中文过滤器
3. 指定spring mvc配置文件为classpath下的springMVC.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

         xmlns="http://java.sun.com/xml/ns/javaee"

         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

         version="2.5">

 

  <!-- spring的配置文件-->

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

 

  <!--中文过滤器-->

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

 

  <!-- spring mvc核心:分发servlet -->

  <servlet>

    <servlet-name>mvc-dispatcher</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

    <!-- spring mvc的配置文件 -->

    <init-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:springMVC.xml</param-value>

    </init-param>

    <load-on-startup>1</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>mvc-dispatcher</servlet-name>

    <url-pattern>/</url-pattern>

  </servlet-mapping>

 

</web-app>

静态资源

接下来是各种静态资源,诸如jquery, bootstrap, css, 图片,公用jsp等,内容稍杂,就不挨个列出来了。
这些静态资源打包在webapp.rar里,放在右上角供下载,下载后解压即可,解压之后应该看到多出来如图所示的几个目录。

1. admin目录里有个index.jsp 用户客户端跳转到CategoryController中指定的admin_category_list路径
2. css,img,js目录是样式,图片脚本等文件
3. include/admin目录下是4个jsp包含关系中讲解到的被包含文件

注:要通过文件系统复制,而不是直接粘贴在idea里,否则会出现卡顿错误 (idea的bug)。 如果出现了卡顿错误,需要先关闭idea, 然后通过任务管理器复制粘贴文件,最后再打开idea就好了。

ssm商城教学7.分类查询

listCategory.jsp

通过静态步骤,就会在WEB-INF下创建jsp目录。 然后在jsp目录中创建admin目录,接着创建listCategory.jsp文件
listCategory.jsp主要作用是通过43行的forEach标签遍历"cs"里的内容,然后挨个显示出来

ssm商城教学7.分类查询

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

    pageEncoding="UTF-8" import="java.util.*"%>

  

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@include file="../include/admin/adminHeader.jsp"%>

<%@include file="../include/admin/adminNavigator.jsp"%>

 

<script>

$(function(){

     

    $("#addForm").submit(function(){

        if(!checkEmpty("name","分类名称"))

            return false;

        if(!checkEmpty("categoryPic","分类图片"))

            return false;

        return true;

    });

});

 

</script>

 

<title>分类管理</title>

 

<div class="workingArea">

    <h1 class="label label-info" >分类管理</h1>

    <br>

    <br>

     

    <div class="listDataTableDiv">

        <table class="table table-striped table-bordered table-hover  table-condensed">

            <thead>

                <tr class="success">

                    <th>ID</th>

                    <th>图片</th>

                    <th>分类名称</th>

                    <th>属性管理</th>

                    <th>产品管理</th>

                    <th>编辑</th>

                    <th>删除</th>

                </tr>

            </thead>

            <tbody>

                <c:forEach items="${cs}" var="c">

                 

                <tr>

                    <td>${c.id}</td>

                    <td><img height="40px" src="img/category/${c.id}.jpg"></td>

                    <td>${c.name}</td>

                         

                    <td><a href="admin_property_list?cid=${c.id}"><span class="glyphicon glyphicon-th-list"></span></a></td>                   

                    <td><a href="admin_product_list?cid=${c.id}"><span class="glyphicon glyphicon-shopping-cart"></span></a></td>                  

                    <td><a href="admin_category_edit?id=${c.id}"><span class="glyphicon glyphicon-edit"></span></a></td>

                    <td><a deleteLink="true" href="admin_category_delete?id=${c.id}"><span class="   glyphicon glyphicon-trash"></span></a></td>

     

                </tr>

                </c:forEach>

            </tbody>

        </table>

    </div>

     

    <div class="pageDiv">

        <%//@include file="../include/admin/adminPage.jsp" %>

    </div>

     

    <div class="panel panel-warning addDiv">

      <div class="panel-heading">新增分类</div>

      <div class="panel-body">

            <form method="post" id="addForm" action="admin_category_add" enctype="multipart/form-data">

                <table class="addTable">

                    <tr>

                        <td>分类名称</td>

                        <td><input  id="name" name="name" type="text" class="form-control"></td>

                    </tr>

                    <tr>

                        <td>分类圖片</td>

                        <td>

                            <input id="categoryPic" accept="image/*" type="file" name="image" />

                        </td>

                    </tr>

                    <tr class="submitTR">

                        <td colspan="2" align="center">

                            <button type="submit" class="btn btn-success">提 交</button>

                        </td>

                    </tr>

                </table>

            </form>

      </div>

    </div>

     

</div>

 

<%@include file="../include/admin/adminFooter.jsp"%>

测试数据

首先点中源目录:java 然后菜单->File->New->Package 输入 com.how2java.tmall.test 创建包
接着创建测试TestTmall, 其作用是借助JDBC, 运行代码,创建10条分类测试数据。

ssm商城教学7.分类查询

package com.how2java.tmall.test;

  

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

  

public class TestTmall {

  

    public static void main(String args[]){

        //准备分类测试数据:

  

        try {

            Class.forName("com.mysql.jdbc.Driver");

        catch (ClassNotFoundException e) {

            e.printStackTrace();

        }

  

        try (

                Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/tmall_ssm?useUnicode=true&characterEncoding=utf8",

                        "root""admin");

                Statement s = c.createStatement();

        )

        {

            for (int i = 1; i <=10 ; i++) {

                String sqlFormat = "insert into category values (null, '测试分类%d')";

                String sql = String.format(sqlFormat, i);

                s.execute(sql);

            }

             

            System.out.println("已经成功创建10条分类测试数据");

  

        catch (SQLException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

  

    }

  

}

配置Tomcat

Tomcat配置和启动涉及多个步骤,请参考专门为IDEA做的: 配置Tomcat

需要注意的是,在配置tomcat的时候,Deployment选项卡中的Application context要设置为/tmall_ssm。 否则后面的测试地址会不一样哦

注: deployment 这里一定要选 tmall_ssm:war exploed, 而不要选 tmall_ssm.war 哦,不然后面上传图片重启之后就丢失了。

 

ssm商城教学7.分类查询

启动Tomcat

访问如下测试地址:

http://localhost:8080/tmall_ssm/admin_category_list


注:如果没有做到配置Tomcat步骤中的设置applicationContext为tmall_ssm的话,那么需要使用另外一个访问地址:

http://localhost:8080/admin_category_list

ssm商城教学7.分类查询

思路图

1. 首先浏览器*问路径 /admin_category_list
2. tomcat根据web.xml上的配置信息,拦截到了/admin_category_list,并将其交由DispatcherServlet处理。
3. DispatcherServlet 根据springMVC的配置,将这次请求交由CategoryController类进行处理,所以需要进行这个类的实例化
4. 在实例化CategoryController的时候,注入CategoryServiceImpl
5. 在实例化CategoryServiceImpl的时候,又注入CategoryMapper
6. 根据ApplicationContext.xml中的配置信息,将CategoryMapper和CategoryMapper.xml关联起来了。
7. 这样就拿到了实例化好了的CategoryController,并调用list方法
8. 在list方法中,访问CategoryService,并获取数据,并把数据放在"cs"上,接着服务端跳转到listCategory.jsp去
9. 最后在listCategory.jsp 中显示数据

ssm商城教学7.分类查询