Java SSM 项目实战 day02 功能介绍,SSM整合,数据库和IDEA的maven工程搭建,产品信息查询和添加
Java SSM 项目实战 day03 功能介绍,订单的操作,订单的增删改查
Java SSM 项目实战 day04 功能介绍,订单的操作,订单的增删改查,实现登录功能
Java SSM 项目实战 day05 用户操作
Java SSM 项目实战 day06 角色操作,资源权限操作
Java SSM 项目实战 day07 SpringSecurity源码分析
Java SSM 项目实战 day07用户角色关联操作,添加角色,以及添加权限
Java SSM 项目实战 day08 方法级别的权限操作 服务器端的权限控制(JSR-250注解)(支持表达式的注解)(@Secured)以及页面端的权限控制
Java SSM 项目实战 day09 SSMAOP日志

一、数据库与表结构

1、环境准备

1.1数据库与表结构

1.1.1创建用户与授权数据库我们使用Oracle

Oracle为每个项目创建单独user,oracle数据表存放在表空间下,每个用户有独立表空间创建用户及密码:

语法[创建用户]: create user用户名identified by 口令[即密码];
例子:create user test identified by test;

授权

语法:grant connect,resource to用户名;
例子: grant connect,resource to test;

PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。
(1)连接oracle数据库
以system用户的方式登录数据库

(2)创建用户

设置用户名和密码ssm和itzheng

设置权限

也可以点击右下角,观看SQL语句


重新打开PL/SQL以ssm用户的方式登录

1.1.2创建表

产品表信息描述

创建表sql

CREATE TABLE product(id varchar2(32) default SYS_GUID() PRIMARY KEY,productNum VARCHAR2(50) NOT NULL,productName VARCHAR2(50),cityName VARCHAR2(50),DepartureTime timestamp,productPrice Number,productDesc VARCHAR2(580),productStatus INT,CONSTRAINT product UNIQUE (id,productNum)
)insert into product (id,productNum,productName,cityName,DepartureTime,productprice,productDesc,productstatus)
values
('676C5BD1035E429A8C2E114939C5685A','itzheng-002','北京三日游','北京',
to_timestamp
('10-10-2018 10:10:00.000000','dd-mm-yyyy hh24:mi:ss.ff'),1200,'不错的旅行',1);insert into product (id,productNum,productName,cityName,DepartureTime,productprice,productDesc,productstatus)
values
('9F71F01CB448476DAFB309AA6DF9497F', 'itzheng-801','北京三日游','北京',to_timestamp
( '10-10-2018 14:30:00.000000' , 'dd-mm-yyyy hh24:mi:ss.ff'),1800,'不错的旅行',0);insert into PRoDuCT (id,productnum,productname,cityname,depanrturetime,productprice,productdesc, productstatus)
values
( '9F71F01CB448476DAFB309AA6DF9497F', 'itzheng-801','北京三日游','北京',to_timestamp( '10-10-2018 10:10:00.0oooo0' , 'dd-mm-yyyy hh24:mi:ss.fF'),1200,‘不错的旅行',1);

二、环境搭建

1、创建maven工程

(1)创建父工程





创建成功

(2)创建子工程



(3)创建其他子模块








(4)创建最后的web模块





所有的都创建成功

(5)修改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.itzheng.zheng_ssm</groupId><artifactId>zheng_ssm</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><!-- 统一管理jar包版本 --><properties><spring.version>5.0.15.RELEASE</spring.version><slf4j.version>1.7.12</slf4j.version><log4j.version>1.2.17</log4j.version><shiro.version>1.2.3</shiro.version><mybatis.version>3.5.2</mybatis.version><mysql.version>8.0.17</mysql.version><oracle.version>10.2.0.1.0</oracle.version><spring.security.version>5.0.10.RELEASE</spring.security.version></properties><!-- 锁定jar包版本 --><dependencyManagement><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</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-webmvc</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-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency></dependencies></dependencyManagement><!-- 项目依赖jar包 --><dependencies><!-- spring --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</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-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</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-core</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-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><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>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><!-- log end --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.2</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version><type>jar</type><scope>compile</scope></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-core</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-taglibs</artifactId><version>${spring.security.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.9</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!--oracle数据库驱动--><dependency><groupId>com.oracle</groupId><artifactId>ojdbc14</artifactId><version>${oracle.version}</version></dependency><dependency><groupId>javax.annotation</groupId><artifactId>jsr250-api</artifactId><version>1.0</version></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding><showWarnings>true</showWarnings></configuration></plugin></plugins></pluginManagement></build><modules><module>zheng_ssm_dao</module><module>zheng_ssm_service</module><module>zheng_ssm_domain</module><module>zheng_ssm_utils</module><module>zheng_ssm_web</module><module>zheng_ssm_web</module></modules></project>

2、编写实体类Product

创建包



创建类

package com.itzheng.ssm.domain;import java.util.Date;/*
产品信息*/
public class Product {private String id; //主键private String productNum;//编号唯一private String productName; //名称private String cityName; //出发城市private Date departureTime; //出发时间private String departureTimeStr;private double productPrice; //产品价格private String productDesc; //产品描述private Integer productStatus;//状态  0 关闭  1 开启private String productStatusStr;public Product() {}public Product(String id, String productNum, String productName, String cityName, Date departureTime, String departureTimeStr, double productPrice, String productDesc, Integer productStatus, String productStatusStr) {this.id = id;this.productNum = productNum;this.productName = productName;this.cityName = cityName;this.departureTime = departureTime;this.departureTimeStr = departureTimeStr;this.productPrice = productPrice;this.productDesc = productDesc;this.productStatus = productStatus;this.productStatusStr = productStatusStr;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getProductNum() {return productNum;}public void setProductNum(String productNum) {this.productNum = productNum;}public String getProductName() {return productName;}public void setProductName(String productName) {this.productName = productName;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName = cityName;}public Date getDepartureTime() {return departureTime;}public void setDepartureTime(Date departureTime) {this.departureTime = departureTime;}public String getDepartureTimeStr() {return departureTimeStr;}public void setDepartureTimeStr(String departureTimeStr) {this.departureTimeStr = departureTimeStr;}public double getProductPrice() {return productPrice;}public void setProductPrice(double productPrice) {this.productPrice = productPrice;}public String getProductDesc() {return productDesc;}public void setProductDesc(String productDesc) {this.productDesc = productDesc;}public Integer getProductStatus() {return productStatus;}public void setProductStatus(Integer productStatus) {this.productStatus = productStatus;}public String getProductStatusStr() {return productStatusStr;}public void setProductStatusStr(String productStatusStr) {this.productStatusStr = productStatusStr;}@Overridepublic String toString() {return "Product{" +"id='" + id + '\'' +", productNum='" + productNum + '\'' +", productName='" + productName + '\'' +", cityName='" + cityName + '\'' +", departureTime=" + departureTime +", departureTimeStr='" + departureTimeStr + '\'' +", productPrice=" + productPrice +", productDesc='" + productDesc + '\'' +", productStatus=" + productStatus +", productStatusStr='" + productStatusStr + '\'' +'}';}
}

3、编写业务接口

(1)创建dao接口

创建包


创建接口IProductDao


(2)创建Service接口以及实现

a、创建IProductService接口



package com.itzheng.ssm.service;import com.itzheng.ssm.domain.Product;import java.util.List;public interface IProductService {public List<Product> findAll() throws Exception;}
b、创建IProductService接口实现类ProductServiceImpl



package com.itzheng.ssm.service.impl;
import com.itzheng.ssm.dao.IProductDao;
import com.itzheng.ssm.domain.Product;
import com.itzheng.ssm.service.IProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional
public class ProductServiceImpl implements IProductService {@Autowiredprivate IProductDao productDao;@Overridepublic List<Product> findAll() throws Exception {return productDao.findAll();}
}

三、SSM整合与产品查询

1、在zheng_ssm_web下的src当中的main当中创建java文件夹

指定java文件夹为Sources Root

2、创建resources文件夹

指定该文件夹为Resources Root

1、Spring环境配置

1.1 编写Spring配置文件applicationContext.xml



1.2 编写Spring配置文件spring-mvc.xml


1.3 修改web.xml

<?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--开启注解扫描,管理service和dao --><context:component-scan base-package="com.itzheng.ssm.service"></context:component-scan><context:component-scan base-package="com.itzheng.ssm.dao"></context:component-scan><context:property-placeholder location="classpath:db.properties"/><!--配置连接池--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="$ {jdbc.driver}" /><property name="jdbcUrl" value="$ {jdbc.url} " /><property name="user" value="$ {jdbc.username } " /><property name="password" value="$ {jdbc.password}" /></bean><!-- 把交给1oc管理sqlsessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/></bean>
</beans >
1.4 创建db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root
1.5 配置事务:applicationContext.xml

<!--配置spring的声明式事务管理-->
<!--配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
1.6 配置spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 注解探测器 --><context:component-scan base-package="com.itzheng.ssm.controller"></context:component-scan><!-- 配置视图解析器  --><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--JSP文件所在的目录--><property name="prefix" value="/pages/" /><!--文件的后缀名--><property name="suffix" value=".jsp" /></bean><!-- 一设置静态资源不过滤 --><mvc:resources location="/css/" mapping="/css/**"/><mvc:resources location="/img/" mapping="/img/**"/><mvc:resources location="/js/" mapping="/js/**"/><mvc:resources location="/plugins/" mapping="/plugins/**"/><!-- 开启对springMvc注解的支持 --><mvc:annotation-driven /><!-- 支持AoP的注解支持,AOP底层使用代理技术JDK动态代理,要求必须有接口cglib代理,生成子类对象,proxy-target-class="true”默认使用cglib的方式--><aop:aspectj-autoproxy proxy-target-class="true" /></beans>
1.7 配置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"><!--配置Spring的监听器,默认只加载WEB-INF目录下的applicationContext.xml配置文件--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--设置配置文件的路径,让它加载resources路径下的配置文件--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><!--配置前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--初始化加载参数 启动的时候随着前端控制器的创建 加载springmvc.xml配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><!--服务器启动的时候就创建对象--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><!-- 解决中文乱码过滤器 --><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><!--初始化界面--><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list>
</web-app>
1.7 修改db.properties,为Oracle的驱动

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@192.168.75.100:1521:orcl
jdbc.username=ssm
jdbc.password=itzheng
1.8 创建以上配置文件对应的包扫描

创建包


创建一个类

package com.itzheng.ssm.controller;import com.itzheng.ssm.service.IProductService;
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;@Controller
@RequestMapping("/product")
public class ProductController {@Autowiredprivate IProductService productService;public ModelAndView findAll() {ModelAndView mv = new ModelAndView();return mv;}}

applicationContext.xml当中的包扫描变正常

1.9 继续完善ProductController 类

package com.itzheng.ssm.controller;import com.itzheng.ssm.domain.Product;
import com.itzheng.ssm.service.IProductService;
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("/product")
public class ProductController {@Autowiredprivate IProductService productService;@RequestMapping("/findAll.do")public ModelAndView findAll() throws Exception {ModelAndView mv = new ModelAndView();List<Product> ps = productService.findAll();mv.addObject("",ps);mv.setViewName("");return mv;}
}
2.0 继续完善IProductDao

package com.itzheng.ssm.dao;
import com.itzheng.ssm.domain.Product;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface IProductDao {//查询所有的产品信息@Select("select * from product")public List<Product> findAll() throws Exception;
}

2、页面显示

功能实现逻辑图

(1)产品操作-查询全部商品

a、完善index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<html>
<body>
<a href="${pageContext.request.contextPath}/product/findAll.do" >查询所有的产品信息 </a>
</body>
</html>
b、复制资源文件

将上节当中的的adminlte当中的内容拷贝到工程当中
创建pages目录

c、扫描dao接口

在applicationContext.xml当中

d、创建product-list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html><head><!-- 页面meta --><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>数据 - AdminLTE2定制版</title><meta name="description" content="AdminLTE2定制版"><meta name="keywords" content="AdminLTE2定制版"><!-- Tell the browser to be responsive to screen width --><metacontent="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name="viewport"><!-- Bootstrap 3.3.6 --><!-- Font Awesome --><!-- Ionicons --><!-- iCheck --><!-- Morris chart --><!-- jvectormap --><!-- Date Picker --><!-- Daterange picker --><!-- Bootstrap time Picker --><!--<link rel="stylesheet" href="${pageContext.request.contextPath}/${pageContext.request.contextPath}/${pageContext.request.contextPath}/plugins/timepicker/bootstrap-timepicker.min.css">--><!-- bootstrap wysihtml5 - text editor --><!--数据表格--><!-- 表格树 --><!-- select2 --><!-- Bootstrap Color Picker --><!-- bootstrap wysihtml5 - text editor --><!--bootstrap-markdown--><!-- Theme style --><!-- AdminLTE Skins. Choose a skin from the css/skinsfolder instead of downloading all of them to reduce the load. --><!-- Ion Slider --><!-- ion slider Nice --><!-- bootstrap slider --><!-- bootstrap-datetimepicker --><!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script><![endif]--><!-- jQuery 2.2.3 --><!-- jQuery UI 1.11.4 --><!-- Resolve conflict in jQuery UI tooltip with Bootstrap tooltip --><!-- Bootstrap 3.3.6 --><!-- Morris.js charts --><!-- Sparkline --><!-- jvectormap --><!-- jQuery Knob Chart --><!-- daterangepicker --><!-- datepicker --><!-- Bootstrap WYSIHTML5 --><!-- Slimscroll --><!-- FastClick --><!-- iCheck --><!-- AdminLTE App --><!-- 表格树 --><!-- select2 --><!-- bootstrap color picker --><!-- bootstrap time picker --><!--<script src="${pageContext.request.contextPath}/${pageContext.request.contextPath}/${pageContext.request.contextPath}/plugins/timepicker/bootstrap-timepicker.min.js"></script>--><!-- Bootstrap WYSIHTML5 --><!--bootstrap-markdown--><!-- CK Editor --><!-- InputMask --><!-- DataTables --><!-- ChartJS 1.0.1 --><!-- FLOT CHARTS --><!-- FLOT RESIZE PLUGIN - allows the chart to redraw when the window is resized --><!-- FLOT PIE PLUGIN - also used to draw donut charts --><!-- FLOT CATEGORIES PLUGIN - Used to draw bar charts --><!-- jQuery Knob --><!-- Sparkline --><!-- Morris.js charts --><!-- Ion Slider --><!-- Bootstrap slider --><!-- bootstrap-datetimepicker --><!-- 页面meta /--><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/iCheck/square/blue.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/morris/morris.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/select2/select2.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/css/style.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css"><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css">
</head><body class="hold-transition skin-purple sidebar-mini"><div class="wrapper"><!-- 页面头部 --><jsp:include page="header.jsp"></jsp:include><!-- 页面头部 /--><!-- 导航侧栏 --><jsp:include page="aside.jsp"></jsp:include><!-- 导航侧栏 /--><!-- 内容区域 --><!-- @@master = admin-layout.html--><!-- @@block = content --><div class="content-wrapper"><!-- 内容头部 --><section class="content-header"><h1>数据管理 <small>数据列表</small></h1><ol class="breadcrumb"><li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li><li><a href="#">数据管理</a></li><li class="active">数据列表</li></ol></section><!-- 内容头部 /--><!-- 正文区域 --><section class="content"><!-- .box-body --><div class="box box-primary"><div class="box-header with-border"><h3 class="box-title">列表</h3></div><div class="box-body"><!-- 数据表格 --><div class="table-box"><!--工具栏--><div class="pull-left"><div class="form-group form-inline"><div class="btn-group"><button type="button" class="btn btn-default" title="新建"onclick="location.href='${pageContext.request.contextPath}/pages/product-add.jsp'"><i class="fa fa-file-o"></i> 新建</button><button type="button" class="btn btn-default" title="删除"><i class="fa fa-trash-o"></i> 删除</button><button type="button" class="btn btn-default" title="开启"><i class="fa fa-check"></i> 开启</button><button type="button" class="btn btn-default" title="屏蔽"><i class="fa fa-ban"></i> 屏蔽</button><button type="button" class="btn btn-default" title="刷新"><i class="fa fa-refresh"></i> 刷新</button></div></div></div><div class="box-tools pull-right"><div class="has-feedback"><input type="text" class="form-control input-sm"placeholder="搜索"> <spanclass="glyphicon glyphicon-search form-control-feedback"></span></div></div><!--工具栏/--><!--数据列表--><table id="dataList"class="table table-bordered table-striped table-hover dataTable"><thead><tr><th class="" style="padding-right: 0px;"><inputid="selall" type="checkbox" class="icheckbox_square-blue"></th><th class="sorting_asc">ID</th><th class="sorting_desc">编号</th><th class="sorting_asc sorting_asc_disabled">产品名称</th><th class="sorting_desc sorting_desc_disabled">出发城市</th><th class="sorting">出发时间</th><th class="text-center sorting">产品价格</th><th class="sorting">产品描述</th><th class="text-center sorting">状态</th><th class="text-center">操作</th></tr></thead><tbody><c:forEach items="${productList}" var="product"><tr><td><input name="ids" type="checkbox"></td><td>${product.id }</td><td>${product.productNum }</td><td>${product.productName }</td><td>${product.cityName }</td><td>${product.departureTimeStr }</td><td class="text-center">${product.productPrice }</td><td>${product.productDesc }</td><td class="text-center">${product.productStatusStr }</td><td class="text-center"><button type="button" class="btn bg-olive btn-xs">订单</button><button type="button" class="btn bg-olive btn-xs">详情</button><button type="button" class="btn bg-olive btn-xs">编辑</button></td></tr></c:forEach></tbody><!--<tfoot><tr><th>Rendering engine</th><th>Browser</th><th>Platform(s)</th><th>Engine version</th><th>CSS grade</th></tr></tfoot>--></table><!--数据列表/--><!--工具栏--><div class="pull-left"><div class="form-group form-inline"><div class="btn-group"><button type="button" class="btn btn-default" title="新建"><i class="fa fa-file-o"></i> 新建</button><button type="button" class="btn btn-default" title="删除"><i class="fa fa-trash-o"></i> 删除</button><button type="button" class="btn btn-default" title="开启"><i class="fa fa-check"></i> 开启</button><button type="button" class="btn btn-default" title="屏蔽"><i class="fa fa-ban"></i> 屏蔽</button><button type="button" class="btn btn-default" title="刷新"><i class="fa fa-refresh"></i> 刷新</button></div></div></div><div class="box-tools pull-right"><div class="has-feedback"><input type="text" class="form-control input-sm"placeholder="搜索"> <spanclass="glyphicon glyphicon-search form-control-feedback"></span></div></div><!--工具栏/--></div><!-- 数据表格 /--></div><!-- /.box-body --><!-- .box-footer--><div class="box-footer"><div class="pull-left"><div class="form-group form-inline">总共2 页,共14 条数据。 每页 <select class="form-control"><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option></select> 条</div></div><div class="box-tools pull-right"><ul class="pagination"><li><a href="#" aria-label="Previous">首页</a></li><li><a href="#">上一页</a></li><li><a href="#">1</a></li><li><a href="#">2</a></li><li><a href="#">3</a></li><li><a href="#">4</a></li><li><a href="#">5</a></li><li><a href="#">下一页</a></li><li><a href="#" aria-label="Next">尾页</a></li></ul></div></div><!-- /.box-footer--></div></section><!-- 正文区域 /--></div><!-- @@close --><!-- 内容区域 /--><!-- 底部导航 --><footer class="main-footer"><div class="pull-right hidden-xs"><b>Version</b> 1.0.8</div><strong>Copyright &copy; 2014-2017 <ahref="http://www.itcast.cn">研究院研发部</a>.</strong> All rights reserved.</footer><!-- 底部导航 /--></div><scriptsrc="${pageContext.request.contextPath}/plugins/jQuery/jquery-2.2.3.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/jQueryUI/jquery-ui.min.js"></script>
<script>$.widget.bridge('uibutton', $.ui.button);
</script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap/js/bootstrap.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/raphael/raphael-min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/morris/morris.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/sparkline/jquery.sparkline.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/knob/jquery.knob.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/moment.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.zh-CN.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/bootstrap-datepicker.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/slimScroll/jquery.slimscroll.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/fastclick/fastclick.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/iCheck/icheck.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/adminLTE/js/app.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/select2/select2.full.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/markdown.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/to-markdown.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/ckeditor/ckeditor.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.extensions.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/datatables/jquery.dataTables.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/chartjs/Chart.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.resize.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.pie.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.categories.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.min.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-slider/bootstrap-slider.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.js"></script>
<scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script>$(document).ready(function () {// 选择框$(".select2").select2();// WYSIHTML5编辑器$(".textarea").wysihtml5({locale: 'zh-CN'});});// 设置激活菜单function setSidebarActive(tagUri) {var liObj = $("#" + tagUri);if (liObj.length > 0) {liObj.parent().parent().addClass("active");liObj.addClass("active");}}$(document).ready(function () {// 激活导航位置setSidebarActive("admin-datalist");// 列表按钮$("#dataList td input[type='checkbox']").iCheck({checkboxClass: 'icheckbox_square-blue',increaseArea: '20%'});// 全选操作$("#selall").click(function () {var clicks = $(this).is(':checked');if (!clicks) {$("#dataList td input[type='checkbox']").iCheck("uncheck");} else {$("#dataList td input[type='checkbox']").iCheck("check");}$(this).data("clicks", !clicks);});});
</script>
</body>
</html>
d、完善ProductController类

package com.itzheng.ssm.controller;
import com.itzheng.ssm.domain.Product;
import com.itzheng.ssm.service.IProductService;
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("/product")
public class ProductController {@Autowiredprivate IProductService productService;@RequestMapping("/findAll.do")public ModelAndView findAll() throws Exception {ModelAndView mv = new ModelAndView();List<Product> ps = productService.findAll();mv.addObject("productList",ps);mv.setViewName("product-list");return mv;}
}
e、product-list.jsp当中缺少两个页面,创建这两个页面


创建header.jsp和aside.jsp

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!-- 页面头部 -->
<header class="main-header"><!-- Logo --><a href="all-admin-index.html" class="logo"> <!-- mini logo for sidebar mini 50x50 pixels --><span class="logo-mini"><b>数据</b></span> <!-- logo for regular state and mobile devices --><span class="logo-lg"><b>数据</b>后台管理</span></a><!-- Header Navbar: style can be found in header.less --><nav class="navbar navbar-static-top"><!-- Sidebar toggle button--><a href="#" class="sidebar-toggle" data-toggle="offcanvas"role="button"> <span class="sr-only">Toggle navigation</span></a><div class="navbar-custom-menu"><ul class="nav navbar-nav"><li class="dropdown user user-menu"><a href="#"class="dropdown-toggle" data-toggle="dropdown"> <imgsrc="${pageContext.request.contextPath}/img/user2-160x160.jpg"class="user-image" alt="User Image"> <span class="hidden-xs">xxx</span></a><ul class="dropdown-menu"><!-- User image --><li class="user-header"><imgsrc="${pageContext.request.contextPath}/img/user2-160x160.jpg"class="img-circle" alt="User Image"></li><!-- Menu Footer--><li class="user-footer"><div class="pull-left"><a href="#" class="btn btn-default btn-flat">修改密码</a></div><div class="pull-right"><a href="${pageContext.request.contextPath}/logout.do"class="btn btn-default btn-flat">注销</a></div></li></ul></li></ul></div></nav>
</header>
<!-- 页面头部 /-->

aside.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><aside class="main-sidebar"><!-- sidebar: style can be found in sidebar.less --><section class="sidebar"><!-- Sidebar user panel --><div class="user-panel"><div class="pull-left image"><img src="${pageContext.request.contextPath}/img/user2-160x160.jpg"class="img-circle" alt="User Image"></div><div class="pull-left info"><p>xxx</p><a href="#"><i class="fa fa-circle text-success"></i> 在线</a></div></div><!-- sidebar menu: : style can be found in sidebar.less --><ul class="sidebar-menu"><li class="header">菜单</li><li id="admin-index"><ahref="${pageContext.request.contextPath}/pages/main.jsp"><iclass="fa fa-dashboard"></i> <span>首页</span></a></li><li class="treeview"><a href="#"> <i class="fa fa-cogs"></i><span>系统管理</span> <span class="pull-right-container"> <iclass="fa fa-angle-left pull-right"></i></span></a><ul class="treeview-menu"><li id="system-setting"><ahref="${pageContext.request.contextPath}/user/findAll.do"> <iclass="fa fa-circle-o"></i> 用户管理</a></li><li id="system-setting"><ahref="${pageContext.request.contextPath}/role/findAll.do"> <iclass="fa fa-circle-o"></i> 角色管理</a></li><li id="system-setting"><ahref="${pageContext.request.contextPath}/permission/findAll.do"><i class="fa fa-circle-o"></i> 资源权限管理</a></li><li id="system-setting"><ahref="${pageContext.request.contextPath}/sysLog/findAll.do"> <iclass="fa fa-circle-o"></i> 访问日志</a></li></ul></li><li class="treeview"><a href="#"> <i class="fa fa-cube"></i><span>基础数据</span> <span class="pull-right-container"> <iclass="fa fa-angle-left pull-right"></i></span></a><ul class="treeview-menu"><li id="system-setting"><ahref="${pageContext.request.contextPath}/product/findAll.do"><i class="fa fa-circle-o"></i> 产品管理</a></li><li id="system-setting"><ahref="${pageContext.request.contextPath}/orders/findAll.do?page=1&pageSize=3"> <iclass="fa fa-circle-o"></i> 订单管理</a></li></ul></li></ul></section><!-- /.sidebar -->
</aside>
f、运行该项目

web当中添加Tomcat插件


 <plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><configuration><port>8888</port></configuration><version>2.2</version></plugin></plugins>



点击OK

clean工程



安装成功


运行项目
报错
需要更新一下数据库驱动

 <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version>
</dependency>

运行项目

访问链接http://localhost:8888/zheng_ssm_web/

运行成功

时间和状态没有显示

g、修改Product类

 public String getProductStatusStr() {if(productStatus != null){//状态  0 关闭  1 开启if(productStatus == 0){productStatusStr = "关闭";}if(productStatus == 1){productStatusStr = "打开";}}return productStatusStr;}
h、再次运行项目

先clear


在install


运行项目

访问地址http://localhost:8888/zheng_ssm_web/product/findAll.do
显示成功

(2)处理时间显示的问题

在utils下新建一个包

a、创建DateUtils类

package com.itzheng.ssm.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {//日期转换成字符串public static String date2String(Date date, String patt) {SimpleDateFormat sdf = new SimpleDateFormat(patt);String format = sdf.format(date);return format;}//字符串转换成日期public static Date string2Date(String str, String patt) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat(patt);Date date = sdf.parse(str);return date;}
}
b、修改Product类

  public String getDepartureTimeStr() {if(departureTime != null){departureTimeStr = DateUtils.date2String(departureTime,"yyyy-MM-dd HH:mm:ss");}return departureTimeStr;}
c、再次运行项目

先clear


在install


运行项目

访问地址http://localhost:8888/zheng_ssm_web/product/findAll.do
显示成功

3、product-list页面制作

创建product-list1.jsp

修改ProductController

在product-list1.jsp当中引入adminlte当中的admin-datalist.html,将其代码复制

替换css和js的文件路径

选中之后Ctrl+F

替换成功

删除头部和侧边导航

通过jsp引入页面头部和侧边导航

<!-- 页面头部 --><jsp:include page="header.jsp"></jsp:include><!-- 页面头部 /--><!-- 导航侧栏 --><jsp:include page="aside.jsp"></jsp:include>

修改数据列表表头的内容

 <tr><th class="" style="padding-right:0px;"><input id="selall" type="checkbox" class="icheckbox_square-blue"></th><th class="sorting_asc">ID</th><th class="sorting_desc">编号</th><th class="sorting_asc sorting_asc_disabled">产品名称</th><th class="sorting_desc sorting_desc_disabled">出发城市</th><th class="sorting">出发时间</th><th class="text-center sorting">产品价格</th><th class="text-center sorting">产品描述</th><th class="text-center sorting">状态</th><th class="text-center">操作</th>
</tr>

继续修改删除其他tr只留下一个tr

引入

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

继续修改tr当中的内容

   <c:forEach items="${productList}" var="product" ><tr><td><input name="ids" type="checkbox"></td><td>${product.id}</td><td>${product.productNum}</td><td>${product.productName}</td><td> ${product.cityName}</td><td>${product.departureTimeStr}</td><td class="text-center">${product.productPrice}</td><td class="text-center">${product.productDesc}</td><td class="text-center">${product.productStatusStr}</td><td class="text-center"><button type="button" class="btn bg-olive btn-xs">订单</button><button type="button" class="btn bg-olive btn-xs">详情</button><button type="button" class="btn bg-olive btn-xs">编辑</button></td></tr>
</c:forEach>

修改一下页面

先clear


在install


运行项目

访问地址http://localhost:8888/zheng_ssm_web/product/findAll.do
显示成功

4、main.jsp页面制作

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 页面meta -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"><title>ITCAST - AdminLTE2定制版</title>
<meta name="description" content="AdminLTE2定制版">
<meta name="keywords" content="AdminLTE2定制版"><metacontent="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name="viewport"><!-- Bootstrap time Picker -->
<!--<link rel="stylesheet" href="${pageContext.request.contextPath}/${pageContext.request.contextPath}/${pageContext.request.contextPath}/plugins/timepicker/bootstrap-timepicker.min.css">--><!--[if lt IE 9]><script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script><![endif]--><!--<script src="${pageContext.request.contextPath}/${pageContext.request.contextPath}/${pageContext.request.contextPath}/plugins/timepicker/bootstrap-timepicker.min.js"></script>--><link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/iCheck/square/blue.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/morris/morris.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/select2/select2.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/css/style.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css">
</head><body class="hold-transition skin-blue sidebar-mini"><div class="wrapper"><!-- 页面头部 --><jsp:include page="header.jsp"></jsp:include><!-- 页面头部 /--><!-- 导航侧栏 --><jsp:include page="aside.jsp"></jsp:include><!-- 导航侧栏 /--><!-- 内容区域 --><div class="content-wrapper"><img src="${pageContext.request.contextPath}/img/center.jpg"width="100%" height="100%" /></div><!-- 内容区域 /--><!-- 底部导航 --><footer class="main-footer"><div class="pull-right hidden-xs"><b>Version</b> 1.0.8</div><strong>Copyright &copy; 2014-2017 <ahref="http://www.itcast.cn">研究院研发部</a>.</strong> All rights reserved. </footer><!-- 底部导航 /--></div><scriptsrc="${pageContext.request.contextPath}/plugins/jQuery/jquery-2.2.3.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jQueryUI/jquery-ui.min.js"></script><script>$.widget.bridge('uibutton', $.ui.button);</script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap/js/bootstrap.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/raphael/raphael-min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/morris/morris.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/sparkline/jquery.sparkline.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/knob/jquery.knob.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/moment.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/bootstrap-datepicker.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/slimScroll/jquery.slimscroll.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/fastclick/fastclick.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/iCheck/icheck.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/adminLTE/js/app.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/select2/select2.full.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/to-markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/ckeditor/ckeditor.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.date.extensions.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.extensions.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datatables/jquery.dataTables.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/chartjs/Chart.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.resize.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.pie.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.categories.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-slider/bootstrap-slider.js"></script><script>$(document).ready(function() {// 选择框$(".select2").select2();// WYSIHTML5编辑器$(".textarea").wysihtml5({locale : 'zh-CN'});});// 设置激活菜单function setSidebarActive(tagUri) {var liObj = $("#" + tagUri);if (liObj.length > 0) {liObj.parent().parent().addClass("active");liObj.addClass("active");}}$(document).ready(function() {// 激活导航位置setSidebarActive("admin-index");});</script>
</body></html>

访问http://localhost:8888/zheng_ssm_web/pages/main.jsp


处理一下index.jsp

访问http://localhost:8888/zheng_ssm_web/

四、产品的操作

1、添加产品

流程图

(1)实现添加产品的功能

a、修改product-List.jsp

<button type="button" class="btn btn-default" title="新建"onclick="location.href='${pageContext.request.contextPath}/pages/product-add.jsp'"><i class="fa fa-file-o"></i> 新建</button>
b、创建product-add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<!-- 页面meta -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>数据 - AdminLTE2定制版</title>
<meta name="description" content="AdminLTE2定制版">
<meta name="keywords" content="AdminLTE2定制版">
<!-- Tell the browser to be responsive to screen width -->
<metacontent="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"name="viewport">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/iCheck/square/blue.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/morris/morris.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datepicker/datepicker3.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.theme.default.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/select2/select2.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-markdown/css/bootstrap-markdown.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/adminLTE/css/skins/_all-skins.min.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/css/style.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.skinNice.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-slider/slider.css">
<link rel="stylesheet"href="${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.css">
</head><body class="hold-transition skin-purple sidebar-mini"><div class="wrapper"><!-- 页面头部 --><jsp:include page="header.jsp"></jsp:include><!-- 页面头部 /--><!-- 导航侧栏 --><jsp:include page="aside.jsp"></jsp:include><!-- 导航侧栏 /--><!-- 内容区域 --><div class="content-wrapper"><!-- 内容头部 --><section class="content-header"><h1>产品管理 <small>产品表单</small></h1><ol class="breadcrumb"><li><a href="${pageContext.request.contextPath}/index.jsp"><iclass="fa fa-dashboard"></i> 首页</a></li><li><ahref="${pageContext.request.contextPath}/product/findAll.do">产品管理</a></li><li class="active">产品表单</li></ol></section><!-- 内容头部 /--><form action="${pageContext.request.contextPath}/product/save.do"method="post"><!-- 正文区域 --><section class="content"> <!--产品信息--><div class="panel panel-default"><div class="panel-heading">产品信息</div><div class="row data-type"><div class="col-md-2 title">产品编号</div><div class="col-md-4 data"><input type="text" class="form-control" name="productNum"placeholder="产品编号" value=""></div><div class="col-md-2 title">产品名称</div><div class="col-md-4 data"><input type="text" class="form-control" name="productName"placeholder="产品名称" value=""></div><div class="col-md-2 title">出发时间</div><div class="col-md-4 data"><div class="input-group date"><div class="input-group-addon"><i class="fa fa-calendar"></i></div><input type="text" class="form-control pull-right"id="datepicker-a3" name="departureTime"></div></div><div class="col-md-2 title">出发城市</div><div class="col-md-4 data"><input type="text" class="form-control" name="cityName"placeholder="出发城市" value=""></div><div class="col-md-2 title">产品价格</div><div class="col-md-4 data"><input type="text" class="form-control" placeholder="产品价格"name="productPrice" value=""></div><div class="col-md-2 title">产品状态</div><div class="col-md-4 data"><select class="form-control select2" style="width: 100%"name="productStatus"><option value="0" selected="selected">关闭</option><option value="1">开启</option></select></div><div class="col-md-2 title rowHeight2x">其他信息</div><div class="col-md-10 data rowHeight2x"><textarea class="form-control" rows="3" placeholder="其他信息"name="productDesc"></textarea></div></div></div><!--订单信息/--> <!--工具栏--><div class="box-tools text-center"><button type="submit" class="btn bg-maroon">保存</button><button type="button" class="btn bg-default"onclick="history.back(-1);">返回</button></div><!--工具栏/--> </section><!-- 正文区域 /--></form></div><!-- 内容区域 /--><!-- 底部导航 --><footer class="main-footer"><div class="pull-right hidden-xs"><b>Version</b> 1.0.8</div><strong>Copyright &copy; 2014-2017 <ahref="http://www.itcast.cn">研究院研发部</a>.</strong> All rights reserved. </footer><!-- 底部导航 /--></div><scriptsrc="${pageContext.request.contextPath}/plugins/jQuery/jquery-2.2.3.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jQueryUI/jquery-ui.min.js"></script><script>$.widget.bridge('uibutton', $.ui.button);</script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap/js/bootstrap.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/raphael/raphael-min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/morris/morris.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/sparkline/jquery.sparkline.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/knob/jquery.knob.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/moment.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/bootstrap-datepicker.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/slimScroll/jquery.slimscroll.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/fastclick/fastclick.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/iCheck/icheck.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/adminLTE/js/app.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/select2/select2.full.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/to-markdown.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/ckeditor/ckeditor.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.date.extensions.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.extensions.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datatables/jquery.dataTables.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/chartjs/Chart.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.resize.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.pie.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/flot/jquery.flot.categories.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.min.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-slider/bootstrap-slider.js"></script><scriptsrc="${pageContext.request.contextPath}/plugins/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"></script><script>$(document).ready(function() {// 选择框$(".select2").select2();// WYSIHTML5编辑器$(".textarea").wysihtml5({locale : 'zh-CN'});});// 设置激活菜单function setSidebarActive(tagUri) {var liObj = $("#" + tagUri);if (liObj.length > 0) {liObj.parent().parent().addClass("active");liObj.addClass("active");}}$(document).ready(function() {$('#datepicker-a3').datetimepicker({format : "yyyy-mm-dd hh:ii",autoclose : true,todayBtn : true,language : "zh-CN"});});$(document).ready(function() {// 激活导航位置setSidebarActive("order-manage");$("#datepicker-a3").datetimepicker({format : "yyyy-mm-dd hh:ii",});});</script>
</body>
</html>
c、创建save方法

在ProductController类当中创建save方法

在IProductService接口当中创建save方法

在实现类当中创建save方法调用dao层的save方法

在dao层当中创建

Java代码

@Insert("insert into product(productNum,productName,cityName,departureTime,productPrice,productDesc,productStatus) values(#{productNum},#{productName},#{cityName},#{departureTime},#{productPrice},#{productDesc},#{productStatus})")
void save(Product product) throws Exception;

SQL语句

insert into product
(productNum,productName,cityName,departureTime,
productPrice,productDesc,productStatus)
values
(#{productNum},#{productName},#{cityName},#{departureTime},
#{productPrice},#{productDesc},#{productStatus})
d、添加完成后重新查询数据

修改ProductController当中的save方法

运行项目
clear掉zheng_ssm和web
insert zheng_ssm和web

运行项目,访问http://localhost:8888/zheng_ssm_web



报错

日期没有处理需要处理日期

修改Product

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

再次提交表单信息

Java SSM 项目实战 day02 功能介绍,SSM整合,数据库和IDEA的maven工程搭建,产品信息查询和添加
Java SSM 项目实战 day03 功能介绍,订单的操作,订单的增删改查
Java SSM 项目实战 day04 功能介绍,订单的操作,订单的增删改查,实现登录功能
Java SSM 项目实战 day05 用户操作
Java SSM 项目实战 day06 角色操作,资源权限操作
Java SSM 项目实战 day07 SpringSecurity源码分析
Java SSM 项目实战 day07用户角色关联操作,添加角色,以及添加权限
Java SSM 项目实战 day08 方法级别的权限操作 服务器端的权限控制(JSR-250注解)(支持表达式的注解)(@Secured)以及页面端的权限控制
Java SSM 项目实战 day09 SSMAOP日志

Java SSM 项目实战 day02 功能介绍,SSM整合,数据库和IDEA的maven工程搭建,产品信息查询和添加相关推荐

  1. SSM项目实战:酒店管理系统

    使用的技术栈:Spring+SpringMVC+mybatis+Mysql+layui+Maven Maven 项目结构.项目配置项为: 服务器:apache-tomcat-9.0.0.M26 (必须 ...

  2. 【Android项目实战 | 从零开始写app(十三)】实现用户中心模块清除token退出登录信息修改等功能

    五一后,被ji金伤了,哇呜呜,还是得苦逼老老实实打工写代码,看下面吧 本篇实现效果: 实现登录用户名展示到用户中心页面上,并且页面有个人信息,订单列表,修改密码,意见反馈发送到服务端,前面登录后,通过 ...

  3. ASP.NET Core分布式项目实战(业务介绍,架构设计,oAuth2,IdentityServer4)--学习笔记...

    任务4:第一章计划与目录 敏捷产品开发流程 原型预览与业务介绍 整体架构设计 API 接口设计 / swagger Identity Server 4 搭建登录 账号 API 实现 配置中心 任务5: ...

  4. Java Web项目实战案例一

    Java Web项目实战案例一 一.主要开发工具如下: 1.物理机:windows 10 2.apache-maven-3.5.3 3.jdk1.8.0_161 4.Intellij 二.构建过程 项 ...

  5. JAVA毕设项目幼儿早教系统软件设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

    JAVA毕设项目幼儿早教系统软件设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysq ...

  6. JAVA毕设项目vue健康餐饮管理系统设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC)

    JAVA毕设项目vue健康餐饮管理系统设计与实现(Vue+Mybatis+Maven+Mysql+sprnig+SpringMVC) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + M ...

  7. 前后端分离项目实战(vue2.0 + SSM)

    介绍 前端:vue.js.elementUI.axios.vue-router 后端:SSM(Spring+SpringMVC+MyBatis) 数据库:MySql 运行界面 后端 登录界面 首页以及 ...

  8. SSM项目实战【从 0 到 1】:个人博客

    文章目录 前言 一.项目简介 二.项目技术栈 三.准备工作 1.Spring Boot 项目创建 2.mybatis 配置 3.数据库创建 四.基本框架搭建 1.实体层(model) 2.控制器层(c ...

  9. SpringBoot整合SSM项目实战

    文章目录 一.模块创建 二. 实体类开发 2.1 配置数据库连接 2.2 使用Lombok定义实体类 三.Dao层开发 3.1 导入MybatisPlus与Druid的对应的Starter 3.2 配 ...

  10. ssm项目打包到云服务器,ssm项目打包到云服务器

    ssm项目打包到云服务器 内容精选 换一换 云服务器组是对云服务器的一种逻辑划分,云服务器组中的弹性云服务器遵从同一策略.当前仅支持反亲和性,即同一云服务器组中的弹性云服务器分散地创建在不同的主机上, ...

最新文章

  1. Python之glob模块进行文件匹配及遍历
  2. ansible及ansible-palybook使用(持续更新)
  3. 怎样将.dotnetcharting控件生成的图标打印
  4. ASP.NET中常用的js代码
  5. matlab/simulink PMSM电机DTC控制
  6. Linux驱动修炼之道-内存映射
  7. jquery中is()函数
  8. 苹果推送通知服务(APNs)编程(转)详细步骤
  9. 查询数据库里所有表名和字段名的语句
  10. 软件测试nextdata函数决策表,软件测试NextDate函数决策表测试法实验报告
  11. 《BI那点儿事》数据流转换——聚合
  12. 【转】Topshelf 搭建 Windows 服务
  13. oracle里面asm的作用,深入了解Oracle ASM(一):基础概念
  14. 传真服务器维护,DreamFax传真服务器
  15. Android开发环境的搭建教程
  16. 数字孪生|成熟度评价
  17. 基于ssm与maven,使用easyui--tree生成类似部门管理树形结构图
  18. 称重管理系统服务器不通,称重管理系统使用方法(二)
  19. java jvm sdk_JDK、SDK、JRE、JVM概念详解
  20. Deep Retinex Decomposition for Low-Light Enhancement 论文阅读笔记

热门文章

  1. Maple_Vanderpol方程_摄动法公式符号推导
  2. android RS485串口接线正反的问题
  3. 移动联通基站定位查询
  4. matlab firl,matlab 利用matlab工具箱函数fir1 联合开发网 - pudn.com
  5. WinDriver简介(或介绍)
  6. 微弱信号检测_世界上最轻薄的信号放大器:可精准监测生物信号!
  7. matlab plot3 宽度,matlab设置plot图像尺寸大小、坐标轴等
  8. matlab神经网络工具箱教程,matlab神经网络能做什么
  9. MDM平台UI升级功能说明
  10. 聚类分析原理(动图演示)