3-企业权限管理-产品添加

简介: 3-企业权限管理-产品添加

产品添加


20200418095626193.png


从product-list.jsp跳转到product-add.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>


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 -->
<meta
  content="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"><i
            class="fa fa-dashboard"></i> 首页</a></li>
        <li><a
          href="${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 <a
      href="http://www.itcast.cn">研究院研发部</a>.
    </strong> All rights reserved. </footer>
    <!-- 底部导航 /-->
  </div>
  <script
    src="${pageContext.request.contextPath}/plugins/jQuery/jquery-2.2.3.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/jQueryUI/jquery-ui.min.js"></script>
  <script>
    $.widget.bridge('uibutton', $.ui.button);
  </script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap/js/bootstrap.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/raphael/raphael-min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/morris/morris.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/sparkline/jquery.sparkline.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-1.2.2.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/jvectormap/jquery-jvectormap-world-mill-en.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/knob/jquery.knob.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/daterangepicker/moment.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/daterangepicker/daterangepicker.zh-CN.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/datepicker/bootstrap-datepicker.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/datepicker/locales/bootstrap-datepicker.zh-CN.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap3-wysihtml5.all.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/slimScroll/jquery.slimscroll.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/fastclick/fastclick.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/iCheck/icheck.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/adminLTE/js/app.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/treeTable/jquery.treetable.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/select2/select2.full.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/colorpicker/bootstrap-colorpicker.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-wysihtml5/bootstrap-wysihtml5.zh-CN.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/bootstrap-markdown.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-markdown/locale/bootstrap-markdown.zh.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/markdown.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-markdown/js/to-markdown.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/ckeditor/ckeditor.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/input-mask/jquery.inputmask.extensions.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/datatables/jquery.dataTables.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/datatables/dataTables.bootstrap.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/chartjs/Chart.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/flot/jquery.flot.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/flot/jquery.flot.resize.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/flot/jquery.flot.pie.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/flot/jquery.flot.categories.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/ionslider/ion.rangeSlider.min.js"></script>
  <script
    src="${pageContext.request.contextPath}/plugins/bootstrap-slider/bootstrap-slider.js"></script>
  <script
    src="${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>


controller产品添加


package com.itheima.ssm.controller;
import com.itheima.ssm.domain.Product;
import com.itheima.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 javax.annotation.security.RolesAllowed;
import java.util.List;
@Controller
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private IProductService productService;
    //产品添加
    @RequestMapping("/save.do")
    public String save(Product product) throws Exception {
        productService.save(product);
        //查询findAll
        return "redirect:findAll.do";
    }
    //查询全部产品
    @RequestMapping("/findAll.do")
    @RolesAllowed("ADMIN")
    public ModelAndView findAll() throws Exception {
        ModelAndView mv = new ModelAndView();
        List<Product> ps = productService.findAll();
        mv.addObject("productList", ps);
        mv.setViewName("product-list");
        return mv;
    }
}


service层ProduceServiceImp


package com.itheima.ssm.service.impl;
import com.itheima.ssm.dao.IProductDao;
import com.itheima.ssm.domain.Product;
import com.itheima.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 ProduceServiceImp implements IProductService {
    @Autowired
    private IProductDao productDao;
    @Override
    public List<Product> findAll() throws Exception {
        return productDao.findAll();
    }
    @Override
    public void save(Product product) throws Exception {
        productDao.save(product);
    }
}


dao


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


添加日志


# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
# log4j.appender.LOGFILE=org.apache.log4j.FileAppender
# log4j.appender.LOGFILE.File=d:\axis.log
# log4j.appender.LOGFILE.Append=true
# log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
# log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n


类型转换


# spring mvc绑定参数之类型转换有三种方式:
## 1.实体类中加日期格式化注解
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
private Date creationTime;
## 2.属性编辑器
spring3.1之前
在Controller类中通过@InitBinder完成
/**
     * 在controller层中加入一段数据绑定代码
     * @param webDataBinder
     */
    @InitBinder
    public void initBinder(WebDataBinder webDataBinder) throws Exception{
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
        simpleDateFormat.setLenient(false);
        webDataBinder.registerCustomEditor(Date.class , new CustomDateEditor(simpleDateFormat , true));
    }
   备注:自定义类型转换器必须实现PropertyEditor接口或者继承PropertyEditorSupport类
写一个类 extends propertyEditorSupport(implements PropertyEditor){
     public void setAsText(String text){
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy -MM-dd hh:mm");
        Date date = simpleDateFormat.parse(text);
        this.setValue(date);
     }
     public String getAsTest(){
      Date date = (Date)this.getValue(); 
      return this.dateFormat.format(date);
     }
}
## 3. 类型转换器Converter
全局类型转换
参考前期课程代码


在实体类上添加注解


    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
    private Date departureTime; // 出发时间
相关文章
|
14天前
|
安全 Java 应用服务中间件
实现权限管理的技术
实现权限管理的技术
20 0
|
4月前
|
监控 安全 数据安全/隐私保护
ERP系统中的组织架构与权限管理解析
【7月更文挑战第25天】 ERP系统中的组织架构与权限管理解析
490 2
|
6月前
|
运维 监控
平台设计-用户权限体系
首先需要知道一些约束:
|
6月前
|
运维 监控 安全
网络安全产品之认识4A统一安全管理平台
随着业务网的发展,网络规模迅速扩大,安全问题不断出现。传统的账号口令管理、访问控制及审计措施已无法满足企业业务发展的需求。过去每个业务网系统常常各自维护一套用户信息数据,这种方式使得管理变得复杂且难以统一。同时,孤立地以日志形式审计操作者在系统内的操作行为,也使得审计过程变得繁琐和低效。因此,4A统一安全管理平台解决方案应运而生。
1034 0
|
6月前
|
存储 安全 数据安全/隐私保护
全方位的安全账号管理
如今,特权账户范围广、数量大且极不稳定是当前各行业面临黑客等攻击行为的最大安全隐患。而且,由于特权账户的权限极大,一旦其被攻击者破解,就能完全掌控组织的IT基础设施,从而引发防护控制失效、机密数据泄露、商业诈骗和扰乱企业正常运作的严重后果。
79 0
全方位的安全账号管理
|
存储 云安全 运维
构建多账号云环境的解决方案|云安全中心多账号统一安全运营
为解决安全管理人员对企业下属的多个云产品的安全运营效率问题,云安全中心威胁分析结合资源管理服务,为客户提供多账号管理统一安全运营方案。通过指定委派管理员,即可在控制台统一多账号安全运营工作,免除在多个账号间频繁登录登出的烦恼。 
590 0
|
运维 监控 API
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(上)
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(上)
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(中)
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(中)
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(下)
《云上企业财务经营解决方案》——二、企业多账号的批量高效管理解决方案(下)
|
安全 Java 数据库
1-企业权限管理系统
1-企业权限管理系统
1-企业权限管理系统