zoukankan      html  css  js  c++  java
  • spring mvc +easy ui +Mybatis 录入数据

    1、itemsEasyui.jsp

    应用到的插件及知识点:日期控件My97 ,图片本地预览函数PreviewImage()

    (1)easy ui 的模态窗口使用时,要指定DIV的属性 data-options="modal:true,closed:true,iconCls:'icon-save'"  主要是modal:true,需要展示时使用 jQuery("#itemsDiv").window('open'); 打开指定的div 

    (2) 利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,.比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件. <form id="itemsForm" enctype="multipart/form-data" style="padding:10px 20px 10px 40px;">本例中因为要上传一个图片,序列化语句不能传递。$("#itemsForm").serializeArray()在有上传文件的格式时不能用;采用了ajax方法异步上传

            var formData = new FormData($( "#itemsForm" )[0]);  
     79          $.ajax({  
     80               url: 'addOrUpdate' ,  
     81               type: 'POST',  
     82               data: formData,  
     83               async: false,  
     84               cache: false,  
     85               contentType: false,  
     86               processData: false,  
     87               success: function (returndata) {  
     88                   $('#itemsDiv').window('close');
     89                     $('#itemsTable').datagrid('reload');  
     90                     $.messager.alert('提示',returndata.mes,'info');  
     91               }  
     92          });  
    

     

      1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
      2 <%@include file="/taglibs.jsp" %>
      3 <html>
      4   <head>
      5     <script type="text/javascript">
      6     jQuery(function($){
      7         $('#itemsTable').datagrid({
      8             title:'用户列表', //标题
      9             method:'post',
     10             iconCls:'icon-edit', //图标
     11             singleSelect:false, //多选
     12             //height:560, //高度
     13             fitColumns: true, //自动调整各列,用了这个属性,下面各列的宽度值就只是一个比例。
     14             striped: true, //奇偶行颜色不同
     15             collapsible:true,//可折叠
     16             url:"queryItemsMap", //数据来源
     17             sortName: 'name', //排序的列
     18             sortOrder: 'desc', //倒序
     19             remoteSort: true, //服务器端排序
     20             idField:'id', //主键字段
     21             queryParams:{}, //查询条件
     22             pagination:true, //显示分页
     23             rownumbers:true, //显示行号
     24             columns:[[
     25                 {field:'ck',checkbox:true,2}, //显示复选框
     26                 {field:'name',title:'名称',20,sortable:true,
     27                     formatter:function(value,row,index){return row.name;} //需要formatter一下才能显示正确的数据
     28                 },
     29                 {field:'price',title:'价格',20,sortable:true,
     30                     formatter:function(value,row,index){return row.price;}
     31                 },
     32                 {field:'createtime',title:'生产日期',30,sortable:true,
     33                     formatter:function(value,row,index)
     34                     {
     35                         var createtime = new Date(value);  
     36                         return createtime.toLocaleString();  
     37                         //return row.createtime;
     38                     }
     39                 },
     40                 {field:'detail',title:'说明',30,sortable:true,
     41                     formatter:function(value,row,index){
     42                         return row.detail;  //该列的值是deptId,显示的是deptName
     43                     }
     44                 }
     45             ]],
     46             toolbar:[{
     47                 text:'新增',
     48                 iconCls:'icon-add',
     49                 handler:function(){
     50                     jQuery("#itemsDiv").window('open');
     51                 }
     52             },'-',{
     53                 text:'更新',
     54                 iconCls:'icon-edit',
     55                 handler:function(){
     56                     updaterow();
     57                 }
     58             },'-',{
     59                 text:'删除',
     60                 iconCls:'icon-remove',
     61                 handler:function(){
     62                     deleterow();
     63                 }
     64             },'-'],
     65             onLoadSuccess:function(){
     66                 $('#itemsTable').datagrid('clearSelections'); //一定要加上这一句,要不然datagrid会记住之前的选择状态,删除时会出问题
     67             }
     68     });
     69     });
     70     
     71     //新增商品
     72     function addItems(){
     73         var r = $('#itemsForm').form('validate');
     74         
     75         if(!r) {
     76             return false;
     77         }
     78         var formData = new FormData($( "#itemsForm" )[0]);  
     79          $.ajax({  
     80               url: 'addOrUpdate' ,  
     81               type: 'POST',  
     82               data: formData,  
     83               async: false,  
     84               cache: false,  
     85               contentType: false,  
     86               processData: false,  
     87               success: function (returndata) {  
     88                   $('#itemsDiv').window('close');
     89                     $('#itemsTable').datagrid('reload');  
     90                     $.messager.alert('提示',returndata.mes,'info');  
     91               }  
     92          });  
     93     }
     94  
     95     //弹出窗口
     96     function showWindow(options){
     97         jQuery("#itemsDiv").window(options);
     98     }
     99     //关闭弹出窗口
    100     function closeWindow(){
    101         $("#itemsDiv").window('close');
    102     }   
    103     //预览本地照片
    104     function change_photo(){
    105         PreviewImage($("input[name='items_pic']")[0], 'Img', 'Imgdiv');
    106     }
    107     //预览本机照片 来自网上
    108     function PreviewImage(fileObj,imgPreviewId,divPreviewId){  
    109         var allowExtention=".jpg,.bmp,.gif,.png";//允许上传文件的后缀名document.getElementById("hfAllowPicSuffix").value;  
    110         var extention=fileObj.value.substring(fileObj.value.lastIndexOf(".")+1).toLowerCase();              
    111         var browserVersion= window.navigator.userAgent.toUpperCase();  
    112         if(allowExtention.indexOf(extention)>-1){   
    113             if(fileObj.files){//HTML5实现预览,兼容chrome、火狐7+等  
    114                 if(window.FileReader){  
    115                     var reader = new FileReader();   
    116                     reader.onload = function(e){  
    117                         document.getElementById(imgPreviewId).setAttribute("src",e.target.result);  
    118                     }    
    119                     reader.readAsDataURL(fileObj.files[0]);  
    120                 }else if(browserVersion.indexOf("SAFARI")>-1){  
    121                     alert("不支持Safari6.0以下浏览器的图片预览!");  
    122                 }  
    123             }else if (browserVersion.indexOf("MSIE")>-1){  
    124                 if(browserVersion.indexOf("MSIE 6")>-1){//ie6  
    125                     document.getElementById(imgPreviewId).setAttribute("src",fileObj.value);  
    126                 }else{//ie[7-9]  
    127                     fileObj.select();  
    128                     if(browserVersion.indexOf("MSIE 9")>-1)  
    129                         fileObj.blur();//不加上document.selection.createRange().text在ie9会拒绝访问  
    130                     var newPreview =document.getElementById(divPreviewId+"New");  
    131                     if(newPreview==null){  
    132                         newPreview =document.createElement("div");  
    133                         newPreview.setAttribute("id",divPreviewId+"New");  
    134                         newPreview.style.width = document.getElementById(imgPreviewId).width+"px";  
    135                         newPreview.style.height = document.getElementById(imgPreviewId).height+"px";  
    136                         newPreview.style.border="solid 1px #d2e2e2";  
    137                     }  
    138                     newPreview.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='" + document.selection.createRange().text + "')";                              
    139                     var tempDivPreview=document.getElementById(divPreviewId);  
    140                     tempDivPreview.parentNode.insertBefore(newPreview,tempDivPreview);  
    141                     tempDivPreview.style.display="none";                      
    142                 }  
    143             }else if(browserVersion.indexOf("FIREFOX")>-1){//firefox  
    144                 var firefoxVersion= parseFloat(browserVersion.toLowerCase().match(/firefox/([d.]+)/)[1]);  
    145                 if(firefoxVersion<7){//firefox7以下版本  
    146                     document.getElementById(imgPreviewId).setAttribute("src",fileObj.files[0].getAsDataURL());  
    147                 }else{//firefox7.0+                      
    148                     document.getElementById(imgPreviewId).setAttribute("src",window.URL.createObjectURL(fileObj.files[0]));  
    149                 }  
    150             }else{  
    151                 document.getElementById(imgPreviewId).setAttribute("src",fileObj.value);  
    152             }           
    153         }else{  
    154             alert("仅支持"+allowExtention+"为后缀名的文件!");  
    155             fileObj.value="";//清空选中文件  
    156             if(browserVersion.indexOf("MSIE")>-1){                          
    157                 fileObj.select();  
    158                 document.selection.clear();  
    159             }                  
    160             fileObj.outerHTML=fileObj.outerHTML;  
    161         }  
    162     }
    163     
    164     </script>    
    165   </head>
    166   
    167   <body>
    168     <div style="padding:10" id="tabdiv">
    169         <table id="itemsTable"></table>
    170     </div>
    171     <!-- model 模态弹出窗口 -->
    172     
    173     <div id="itemsDiv" class="easyui-window" data-options="modal:true,closed:true,iconCls:'icon-save'" title="商品管理" style="350px;height:300px;">
    174         <form id="itemsForm"  enctype="multipart/form-data" style="padding:10px 20px 10px 40px;">
    175             <p>名称: <input name="name" type="text" class="easyui-validatebox" required="true"></p>
    176             <p>规格: <input name="detail"  type="text" type="text" class="easyui-validatebox" required="true" ></p>
    177             <p>价格: <input name="price" type="text" type="text" class="easyui-validatebox" required="true"></p>
    178             <p>日期: <input name="createtime" type="text" class="Wdate" onClick="WdatePicker({ dateFmt: 'yyyy-MM-dd HH:mm:ss' })"></p>
    179              <p>照片:<input class="easyui-filebox" data-options='onChange:change_photo' id="file_upload" name="items_pic"/><br/>
    180              <div id="Imgdiv">
    181                 <img id="Img" width="200px" height="200px"/>
    182             </div>             
    183             <div style="padding:5px;text-align:center;">
    184                 <a href="#" class="easyui-linkbutton" icon="icon-ok" onclick="addItems()">确认</a>
    185                 <a href="#" class="easyui-linkbutton" icon="icon-cancel">返回</a>
    186             </div>
    187         </form>
    188     </div>
    189         <!-- model 模态弹出窗口 结束-->
    190     
    191   </body>
    192 </html>

     

     

    2、itemsController.java

      1 package com.lr.controller;
      2 
      3 import java.io.File;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 import java.util.Map;
      7 import java.util.UUID;
      8 
      9 import javax.servlet.http.HttpServletRequest;
     10 
     11 import org.springframework.beans.factory.annotation.Autowired;
     12 import org.springframework.stereotype.Controller;
     13 import org.springframework.ui.Model;
     14 import org.springframework.validation.BindingResult;
     15 import org.springframework.validation.ObjectError;
     16 import org.springframework.validation.annotation.Validated;
     17 import org.springframework.web.bind.annotation.ModelAttribute;
     18 import org.springframework.web.bind.annotation.PathVariable;
     19 import org.springframework.web.bind.annotation.RequestMapping;
     20 import org.springframework.web.bind.annotation.RequestMethod;
     21 import org.springframework.web.bind.annotation.RequestParam;
     22 import org.springframework.web.bind.annotation.ResponseBody;
     23 import org.springframework.web.multipart.MultipartFile;
     24 import org.springframework.web.servlet.ModelAndView;
     25 
     26 import com.lr.controller.validation.ValidGroup1;
     27 import com.lr.po.ItemsCustom;
     28 import com.lr.po.ItemsQueryVo;
     29 import com.lr.service.ItemsService;
     30 
     31 /**
     32  * 
     33  * <p>
     34  * Title: ItemsController </p>
     35  * <p> Description:商品的controller </p>
     36  * @date 2015-4-13下午4:03:35
     37  * @version 1.0
     38  */
     39 @Controller
     40 //为了对url进行分类管理 ,可以在这里定义根路径,最终访问url是根路径+子路径
     41 //比如:商品列表:/items/queryItems.action
     42 @RequestMapping("/items")
     43 public class ItemsController {
     44 
     45     @Autowired
     46     private ItemsService itemsService;
     47 
     48     
     49     //商品分类
     50     //itemtypes 表示最终将方法返回值放在request中的key ;
     51     @ModelAttribute("itemtypes")
     52     public Map<String,String> getItemTypes(){
     53         Map<String,String> itemTypes= new HashMap<String,String>();
     54         itemTypes.put("101","数码");
     55         itemTypes.put("102","食品");
     56         return itemTypes;
     57     }
     58     // 商品查询
     59     @RequestMapping("/queryItems")
     60     public ModelAndView queryItems(HttpServletRequest request,Integer id ,ItemsQueryVo itemsQueryVo) throws Exception {
     61         //测试forward后request是否可以共享
     62         
     63         // 调用service查找 数据库,查询商品列表
     64         List<ItemsCustom> itemsList = itemsService.findItemsList(itemsQueryVo);
     65         
     66         // 返回ModelAndView
     67         ModelAndView modelAndView = new ModelAndView();
     68         // 相当 于request的setAttribut,在jsp页面中通过itemsList取数据
     69         modelAndView.addObject("itemsList", itemsList);
     70 
     71         // 指定视图
     72         // 下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为
     73         // modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
     74         // 上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀
     75         modelAndView.setViewName("items/itemsList");
     76 
     77         return modelAndView;
     78 
     79     }
     80 
     81     //添加商品,ID用当前时间的
     82     @RequestMapping(value="/addItems")
     83     public String addItems( ) throws Exception {
     84         return "items/addItems";
     85     }
     86     //添加商品 通过 EASYUI框架
     87     @RequestMapping(value="/addOrUpdate",method=RequestMethod.POST)
     88     @ResponseBody
     89     public Map<String, String> addOrUpdate(ItemsCustom itemsCustom,MultipartFile items_pic ) throws Exception{
     90         //spring会利用jackson自动将返回值封装成JSON对象,比struts2方便了很多
     91         Map<String, String> map = new HashMap<String, String>();
     92         int randNumber = (int)(1+Math.random()*(10000000-56785+1));    
     93         itemsCustom.setId(randNumber);
     94         //itemsCustom.setPic("abc.jpg");
     95         String orgPicName = items_pic.getOriginalFilename();
     96         //存在图片路径
     97         String picPath= "h:\web_upload\";
     98         if (orgPicName!=null && picPath!=null && orgPicName.length()>0) {
     99             //新文件名
    100             String newFileName = UUID.randomUUID() + orgPicName.substring(orgPicName.lastIndexOf("."));
    101             File newFile = new File(picPath+newFileName);
    102             //将内存中的数据写入磁盘
    103             items_pic.transferTo(newFile);
    104             itemsCustom.setPic(newFileName);
    105         }
    106     
    107         try {
    108             itemsService.addItems(itemsCustom);
    109             map.put("mes", "操作成功");
    110         } catch (Exception e) {
    111             e.printStackTrace();
    112             map.put("mes", "操作失败");
    113             throw e;
    114         }
    115         return map; 
    116     }
    117     
    118     
    119     @RequestMapping(value="/editItems",method={RequestMethod.POST,RequestMethod.GET})
    120     //@RequestParam里边指定request传入参数名称和形参进行绑定。
    121     //通过required属性指定参数是否必须要传入
    122     //通过defaultValue可以设置默认值,如果id参数没有传入,将默认值和形参绑定。
    123     public String editItems(Model model,@RequestParam(value="id",required=true) Integer items_id)throws Exception {
    124         
    125         //调用service根据商品id查询商品信息
    126         ItemsCustom itemsCustom = itemsService.findItemsById(items_id);
    127 /*        if (itemsCustom==null) {
    128             throw new CustomException("修改的商品信息不存在!");
    129         }*/
    130         
    131         //通过形参中的model将model数据传到页面
    132         //相当于modelAndView.addObject方法
    133         model.addAttribute("items", itemsCustom);
    134         
    135         return "items/editItems";
    136     }
    137     
    138     //商品信息修改提交,及校验
    139     //在需要校验的POJO前面加@Validated,后面添加BindingResult接收校验输出的错误信息
    140     //注意:@Validated和BindingResult bindingResult 是配对出现,并且形参顺序是固定的(一前一后)
    141     //value= {ValidGroup1.class})指定使用分组1的校验
    142     //
    143     @RequestMapping("/editItemsSubmit")
    144     public String editItemsSubmit(Model model,
    145             HttpServletRequest request,
    146             String pic,
    147             Integer id,
    148             @Validated(value= {ValidGroup1.class}) ItemsCustom itemsCustom,
    149             BindingResult bindingResult,
    150             MultipartFile items_pic //接收商品图片
    151             )throws Exception {
    152         
    153         //获取校验错误信息
    154         if (bindingResult.hasErrors()) {
    155             // 输出错误信息
    156             List<ObjectError> allErrors = bindingResult.getAllErrors();
    157 
    158             for (ObjectError objectError : allErrors) {
    159                 // 输出错误信息
    160                 System.out.println(objectError.getDefaultMessage());
    161 
    162             }
    163             // 将错误信息传到页面
    164             model.addAttribute("allErrors", allErrors);
    165             
    166             
    167             //可以直接使用model将提交pojo回显到页面
    168             model.addAttribute("items", itemsCustom);
    169             
    170             // 出错重新到商品修改页面
    171             return "items/editItems";
    172         }else {
    173             //上传图片
    174             String originalFilename = items_pic.getOriginalFilename();
    175             //存储图片的物理路径
    176             String pic_path = "h:\web_upload\";
    177             //原文件名称 
    178         
    179             System.out.println("==================================================");
    180             System.out.println(pic);
    181             String oldFileName = pic;
    182             if (items_pic!=null && originalFilename!=null && originalFilename.length()>0 ) {
    183 
    184                 
    185                     //新的图片名称
    186                     String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
    187                     //新图片
    188                     File newFile = new File(pic_path+newFileName);
    189                     
    190                     //将内存中的数据写入磁盘
    191                     items_pic.transferTo(newFile);
    192                     oldFileName = newFileName;
    193                 
    194             }
    195             //将新图片名称写到itemsCustom中
    196             itemsCustom.setPic(oldFileName);
    197             //如果正确,执行更新操作。
    198             itemsService.updateItems(id, itemsCustom);
    199             
    200             return "forward:queryItems.action";
    201     
    202         }
    203     }
    204     //商品批量删除
    205     @RequestMapping("deleteItems")
    206     public String deleteItems(Integer[] items_id) throws Exception{
    207         
    208         for (int i:items_id) {
    209             itemsService.deleteItems(i);
    210             
    211         }
    212         return "success";
    213         
    214     }
    215     
    216     //商品批量修改
    217     @RequestMapping("editItemsQuery")
    218     public ModelAndView editItemsQuery(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception{
    219         
    220         
    221         // 调用service查找 数据库,查询商品列表
    222         List<ItemsCustom> itemsList = itemsService.findItemsList(itemsQueryVo);
    223         
    224         // 返回ModelAndView
    225         ModelAndView modelAndView = new ModelAndView();
    226         // 相当 于request的setAttribut,在jsp页面中通过itemsList取数据
    227         modelAndView.addObject("itemsList", itemsList);
    228 
    229         // 指定视图
    230         // 下边的路径,如果在视图解析器中配置jsp路径的前缀和jsp路径的后缀,修改为
    231         // modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
    232         // 上边的路径配置可以不在程序中指定jsp路径的前缀和jsp路径的后缀
    233         modelAndView.setViewName("items/editItemsQuery");
    234 
    235         return modelAndView;
    236     }
    237 
    238     //批量商品修改提交
    239     //通过ItemsQueryVo接收批量提交的信息,将商品信息存储到itemsQueryVo中itemsList属性中
    240     @RequestMapping("/editItemsAllSubmit")
    241     public String editItemsAllSubmit(ItemsQueryVo itemsQueryVo) throws Exception{
    242         
    243         return "success";
    244     }
    245     
    246     //查询商品信息,输出json
    247     ///itemsView/{id}中的 {id},表示将这个位置的参数传到@PathVariable指定的名称变量中;
    248     @RequestMapping("/itemsView/{id}")
    249     
    250     public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception{
    251         ItemsCustom itemsCustom = itemsService.findItemsById(id);
    252         return itemsCustom;
    253     }
    254     
    255     
    256     // 商品查询输入到easy ui 
    257             @RequestMapping("/queryItemsMap")
    258             @ResponseBody
    259             //@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口
    260             //将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。        
    261             public Map<String, Object> queryItemsMap(HttpServletRequest request,ItemsQueryVo itemsQueryVo) throws Exception {
    262                 //测试forward后request是否可以共享            
    263                 // 调用service查找 数据库,查询商品列表
    264                 List<ItemsCustom> itemsList = itemsService.findItemsList(itemsQueryVo);
    265 
    266                 Map<String,Object> itemsMap = new HashMap<String,Object>();
    267                 itemsMap.put("total",13);
    268                 itemsMap.put("rows",itemsList);
    269 
    270                 return itemsMap;
    271 
    272             }
    273             
    274             
    275             @RequestMapping("list")   
    276             public String list() throws Exception {
    277                 
    278                 return "items/itemsEasyUi";
    279             }        
    280     }

    3、main.jsp

      1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      2 <%@include file="/taglibs.jsp" %>
      3 <html>
      4 <head>
      5 
      6 <title>lr信息综合管理平台 </title>
      7     <style type="text/css">  
      8         #menu {  
      9             width:200px;
     10      
     11             /*border:1px solid red;*/  
     12         }  
     13         #menu ul {  
     14             list-style: none;  
     15             padding: 0px;  
     16             margin: 0px;  
     17         
     18         }  
     19         #menu ul li {  
     20             border-bottom: 1px solid #fff;
     21             text-align: center;  
     22   
     23         }  
     24         #menu ul li a {  
     25             /*先将a标签转换为块级元素,才能设置宽和内间距*/  
     26             display: block;  
     27             background-color: #458fce;  
     28             color: #fff;  
     29             padding: 5px;  
     30 
     31             text-decoration: none;  
     32         }  
     33         #menu ul li a:hover {  
     34             background-color: #008792;  
     35         }  
     36           
     37     </style> 
     38 </head>
     39 <script type="text/javascript">
     40         //判断选中或增加tab组件
     41         function addTab(title, url){
     42             if ($('#tt').tabs('exists', title)){
     43                 $('#tt').tabs('select', title);
     44             } else {
     45                 var content = '<iframe scrolling="auto" frameborder="0"  src="'+url+'" style="100%;height:100%;"></iframe>';
     46                 $('#tt').tabs('add',{
     47                     title:title,
     48                     content:content,
     49                     closable:true
     50                 });
     51             }
     52         }
     53         
     54         //弹出窗口
     55         function showWindow(options){
     56             jQuery("#MyPopWindow").window(options);
     57         }
     58         //关闭弹出窗口
     59         function closeWindow(){
     60             $("#MyPopWindow").window('close');
     61         }
     62 </script>
     63 <body class="easyui-layout">
     64     <div region="north" style="height: 65px; background: #458fce; border="false">  
     65             <div style="float:left" ><img src="${basePath }/img/logo.png"/></div>
     66             <div style="float:right;" ><h1 style="color:white;" >当前用户:${username} <a href="${basePath}/logout">退出</a></h1></div>
     67     </div>
     68     <div region="west" style=" 200px" title="快速导航" split="true">  
     69             <div data-options="border:false" class="easyui-accordion" style="200px;">   
     70                 <div id="menu" title="用户管理" data-options="iconCls:'icon-save',selected:true" >   
     71                     <ul>
     72                         <li><a href="#"  onclick="addTab('用户管理','${basePath }/items/list')">用户添加</a>
     73                         <li><a href="#"  onclick="addTab('lingrui','http://www.lingrui.com')">lingrui</a>
     74                     </ul>
     75                 </div>   
     76                 <div title="权限管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
     77                    <ul>
     78                       <li><a href="#"  onclick="addTab('系统调试','${basePath }/jsp/success.jsp')">lingrui</a>
     79                     </li>
     80                 </div>   
     81                 <div title="客户管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
     82                     content2    
     83                 </div>   
     84                 <div title="物料管理" data-options="iconCls:'icon-reload'" style="padding:10px;">   
     85                     content2    
     86                 </div>   
     87                 
     88                 <div title="菜单管理">   
     89                     <div style="margin-bottom:10px">
     90                         <a href="#" class="easyui-linkbutton" onclick="addTab('google','http://www.google.com')">google</a>
     91                         <a href="#" class="easyui-linkbutton" onclick="addTab('jquery','http://jquery.com/')">jquery</a>
     92                         <a href="#" class="easyui-linkbutton" onclick="addTab('easyui','http://jeasyui.com/')">easyui</a>
     93                     </div>
     94                 </div>   
     95             </div>  
     96     </div>
     97     <div data-options="region:'center'" style="background:#eee;">  
     98     
     99         <div id="tt" class="easyui-tabs" fit="true" ">  
    100             <div title="首页" data-options="iconCls:'icon-home'" >
    101                  <div align="center" style="padding-top: 100px"><font color="red" size="10">欢迎使用<br>lr综合管理平台</font></div> 
    102             </div>  
    103         </div>
    104 
    105     </div>
    106     <div region="south" style="height: 25px;padding: 5px" align="center"> 
    107      Copyright © 2018-2020 lr股份有限公司 版权所有 
    108     </div>
    109 </body>
    110 
    111 
    112 </html>

    4 index.jsp 登录页

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
     4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
     5 
     6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     7 <html>
     8 <head>
     9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <title>系统登录</title>
    11 
    12 
    13 <script type="text/javascript">
    14     function check_pwd(){
    15          var username = document.getElementById("username").value;
    16          var password = document.getElementById("password").value;         
    17          if (username=="" ){
    18              alert('请输入用户名!');
    19              return false;
    20          }else if (password=="" ){
    21              alert('请输入密码!');
    22              return false;
    23          }
    24         return true;
    25     }
    26 </script>
    27 </head>
    28 
    29 <body style="text-align:center;background-color:#458fce;color:white;">
    30   
    31     <form action="${pageContext.request.contextPath }/login.action" onsubmit="return check_pwd()" method="post"> 
    32     <br><br><br><br><br><br><br><br>
    33         <h3>系统登录</h3><br>
    34         <%
    35              HttpSession Session = request.getSession();
    36             String flag = null;
    37              flag = (String)Session.getAttribute("flag");
    38             if (flag!=null && flag=="false"){
    39                 out.println(" 用户名或密码错误,请重新输入!<br>");
    40                 session.removeAttribute("flag");
    41             } 
    42         
    43         %>        
    44         <p id="pwderror" style="display:none;" >用户名或密码错误,请重新输入!</p>
    45         用户账号:<input id="username" style="100px"  name="username"  placeholder="请输入用户名" value="admin"/>    <br><br>
    46     
    47         用户密码:<input id="password" style="100px" type="password" name="password" placeholder="请输入密码" value="admin" />
    48         <br>    <br>
    49         <input type="submit"  value="登 陆"/>
    50     
    51         <br><br><br><br><br><br><br><br>
    52         <h3>版权所有:LR股份有限公司</h3>
    53     </form>
    54 
    55 </body>
    56 </html>

    5 LoginController.java

     1 package com.lr.controller;
     2 
     3 import javax.servlet.http.HttpSession;
     4 
     5 import org.springframework.beans.factory.annotation.Autowired;
     6 import org.springframework.stereotype.Controller;
     7 import org.springframework.web.bind.annotation.RequestMapping;
     8 
     9 import com.lr.common.StringUtil;
    10 import com.lr.po.LrUser;
    11 import com.lr.service.LoginService;
    12 
    13 /**
    14  * Filename:LoginController.java
    15  * Descript:登录退出
    16  * Parm:
    17  * Author:zhangsh
    18  * CreateDate:2018年3月5日 下午4:40:39
    19  * 
    20  */
    21 @Controller
    22 public class LoginController {
    23     
    24     @Autowired
    25     private LoginService loginService;
    26     
    27     //登录
    28     @RequestMapping("/login")
    29     public String login(HttpSession session,String username,String password) throws Exception{
    30         
    31         //调用service 进行用户身份验证
    32         //.....
    33 
    34         LrUser user = null;
    35         user = loginService.findUserByName(username);
    36         if (user==null ) {
    37             //不存在的用户;用户名或密码错误,设置session标记flag为false
    38             session.setAttribute("flag","false");            
    39             return "redirect:index.jsp";
    40         }
    41         String orgPassword ;
    42         orgPassword = user.getPassword();
    43         String userPwd = StringUtil.getSign(username) ;
    44         System.out.println(userPwd);
    45         if (orgPassword.equals(userPwd)) {
    46             //验证通过,转主页面
    47             session.setAttribute("username",username);
    48             return "pub/main";
    49         }else {
    50             //登录失败,返回重新登录,在缓存中加入false为了在登录页提醒;
    51             session.setAttribute("flag","false");
    52             return "redirect:index.jsp";
    53         }
    54     }
    55     
    56     //退出
    57     @RequestMapping("/logout")
    58     public String logout(HttpSession session) throws Exception{
    59         //清除session
    60         session.invalidate();
    61         return "redirect:index.jsp";
    62     }
    63 }

    附:项目结构

  • 相关阅读:
    配置高并发jdbc连接池
    java中的sleep()和wait()的区别
    程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)
    转HashMap Hashtable区别
    chrome 常用快捷操作
    sublime Text 常用操作
    flash 右键菜单隐藏与修改
    As3.0 视频缓冲、下载总结
    flash cs6 更新到Flash player15.0 及Air 更新方法
    As3.0 Interface 与类的使用
  • 原文地址:https://www.cnblogs.com/lrzy/p/8708988.html
Copyright © 2011-2022 走看看