cyqtest

pox.xml

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.3.RELEASE</version>
		<relativePath/> 
	</parent>
  <groupId>com.compet</groupId>
  <artifactId>compet</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>compet</name>
  <properties>
		<java.version>11</java.version>
	</properties>
  <dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
		<groupId>com.baomidou</groupId>
		<artifactId>mybatis-plus-boot-starter</artifactId>
		<version>3.1.0</version>
		</dependency>
		
		 <!--jsp页面使用jstl标签-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- 文件上传 -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>

        <!--用于编译jsp-->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>
        
        <dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/jmimemagic/jmimemagic -->
        <!-- 图片下载 -->
		<dependency>
		    <groupId>jmimemagic</groupId>
		    <artifactId>jmimemagic</artifactId>
		    <version>0.1.1</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/net.coobird/thumbnailator -->
		<dependency>
		    <groupId>net.coobird</groupId>
		    <artifactId>thumbnailator</artifactId>
		    <version>0.4.8</version>
		</dependency>
		 <dependency>  
		    <groupId>com.alibaba</groupId>  
		    <artifactId>fastjson</artifactId>  
		     <version>1.2.6</version>
		  </dependency> 
		
		<!--分页插件-->
	<dependency>
	    <groupId>com.github.pagehelper</groupId>
	    <artifactId>pagehelper-spring-boot-starter</artifactId>
	    <version>1.2.10</version>
	    <!--使用spring boot2整合 pagehelper-spring-boot-starter必须排除一下依赖 
			因为pagehelper-spring-boot-starter也已经在pom依赖了mybatis与mybatis-spring
			所以会与mybatis-plus-boot-starter中的mybatis与mybatis-spring发生冲突
		-->
	    <exclusions>
	        <exclusion>
	        <groupId>org.mybatis</groupId>
	        <artifactId>mybatis</artifactId>
	        </exclusion>
	        <exclusion>
	        <groupId>org.mybatis</groupId>
	        <artifactId>mybatis-spring</artifactId>
	        </exclusion>
	    </exclusions>
	</dependency>
		
	</dependencies>
  <build>
    <finalName>peoject</finalName>
    <plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
		<resources>
        
         <resource>
             <directory>src/main/resources</directory>
             <includes>
                 <include>**/*.properties</include>
             </includes>
             <filtering>false</filtering>
        </resource> 
        <resource>
             <directory>src/main/webapp</directory>
             <targetPath>META-INFA/resources</targetPath>
             <includes>
                 <include>**/**</include>
             </includes>
        </resource>
    </resources>
  </build>
</project>


CompetApplication

package com.compet;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.compet.mapper")
public class CompetApplication  {

	public static void main(String[] args) {
		SpringApplication.run(CompetApplication.class, args);
	}
	

}


UserController

package com.compet.controller;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import util.RandomCode;
import util.RandomImage;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.compet.entity.Menu;
import com.compet.entity.Role;
import com.compet.entity.SidemenuModel;
import com.compet.entity.User;
import com.compet.mapper.UserMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;


@RestController
public class UserController {
	
	@Resource
	public UserMapper user;
	
	@RequestMapping(value="/login")
	public ModelAndView login(){	
		 ModelAndView modelAndView = new ModelAndView("login"); //设置对应JSP的模板文件
         return modelAndView;
		
	}
	
	@RequestMapping(value = "random")
	public void random(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
		 byte[] captchaChallengeAsJpeg = null;
	        ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
	        try {
	            //生产验证码字符串并保存到session中
	            String createText = RandomCode.getRandomCode();
	            httpServletRequest.getSession().setAttribute("verifyCode", createText);
	            //使用生产的验证码字符串返回一个BufferedImage对象并转为byte写入到byte数组中
	            BufferedImage challenge = RandomImage.createImage(createText);
	            ImageIO.write(challenge, "jpg", jpegOutputStream);
	          //定义response输出类型为image/jpeg类型,使用response输出流输出图片的byte数组
		        captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

		        httpServletResponse.setHeader("Cache-Control", "no-store");
		        httpServletResponse.setHeader("Pragma", "no-cache");
		        httpServletResponse.setDateHeader("Expires", 0);
		        httpServletResponse.setContentType("image/jpeg");
		        ServletOutputStream responseOutputStream =
		                httpServletResponse.getOutputStream();
		        responseOutputStream.write(captchaChallengeAsJpeg);
		        responseOutputStream.flush();
		        responseOutputStream.close();
	        } catch (IllegalArgumentException e) {
	          
	            return;
	        } catch (IOException e) {
				
				e.printStackTrace();
			}

	        

	}
	@RequestMapping(value = "checkLogin")
	@ResponseBody
	public String checkLogin(String validcode,User user1,HttpServletRequest httpServletRequest) {
		String msg="";
		String v = (String) httpServletRequest.getSession().getAttribute("verifyCode");
		if (validcode == null) {
			msg="0";
			return msg;
		}
		if (!validcode.equals(v)) {
			msg = "1";
			return msg;
		}
		User user2=user.queryUserById(user1);
		if (user2 == null) {
			msg = "2";
			return msg;
		}

		httpServletRequest.getSession().setAttribute("userId",user2.getId());
		httpServletRequest.getSession().setAttribute("name",user2.getName());
		httpServletRequest.getSession().setAttribute("password",user2.getPassword());
		return msg;
	}
	
	
	@RequestMapping(value="/goJsp")
	public ModelAndView goJsp(int id){	
		List<Menu> list=user.goJsp(id);
		 ModelAndView modelAndView = new ModelAndView(list.get(0).getUrl()); //设置对应JSP的模板文件
         return modelAndView;
		
	}
	@RequestMapping(value="/userList")
	public ModelAndView userList(){
		 ModelAndView modelAndView = new ModelAndView("user_list"); //设置对应JSP的模板文件
		// List<User> list=user.userList();
		// modelAndView.addObject("list",list);
         return modelAndView;
		
	}
	@RequestMapping(value="/userRole")
	public String userRole(HttpServletRequest httpServletRequest){
		Integer userId=Integer.parseInt(httpServletRequest.getSession().getAttribute("userId").toString());
		 List<Role> list=user.userRole(userId);
		 String listJson = JSON.toJSONString(list);
		 System.out.println(listJson);
         return listJson;
		
	}
	@RequestMapping(value="/menuList")
	public String  menuList(HttpServletRequest httpServletRequest,Integer role_id){
		int userId=Integer.parseInt(httpServletRequest.getSession().getAttribute("userId").toString());
		Map<String, Integer> map=new HashMap<String, Integer>();
		map.put("roleId", role_id);
		map.put("userId", userId);
		 List<SidemenuModel> list=user.menuList1(map);
		 for (int i = 0; i < list.size(); i++) {
			 List<SidemenuModel> child=user.menuListChild(list.get(i).getId());
			 if(child.size()>0){
				 list.get(i).setChildren(child);		
			 }
			 
		}
		 String listJson = JSON.toJSONString(list);
		 System.out.println(listJson);
         return listJson;
		
	}
	@RequestMapping(value="/user")
	public  String user(Integer pageNo, Integer pageSize){
		 //ModelAndView modelAndView = new ModelAndView("user_list"); //设置对应JSP的模板文件
		 List<User> list=user.userList();
		 PageHelper.startPage(pageNo,pageSize);
	        Map param = new HashMap();
	       // param.put("age",age);
	        PageInfo<User> data = new PageInfo<>(list);
	        JSONObject result = new JSONObject();
	        result.put("data",data);
	        result.put("pages",data.getPages());
	        result.put("totalRecords",data.getTotal());
	        String listJson = JSON.toJSONString(result);
         return listJson;
		
	}
	@RequestMapping(value="/addUserPage")
	public  ModelAndView addUserPage(){
		 ModelAndView modelAndView = new ModelAndView("add_user"); //设置对应JSP的模板文件
         return modelAndView;
		
	}
	@RequestMapping(value="/addUser")
	@ResponseBody
	public  int addUser(User user1){
		int k= user.insert(user1);
         return k;
		
	}
	
	@RequestMapping(value="/editUserById")
	public  String editUserById(int id){
		// ModelAndView modelAndView = new ModelAndView("edit_user"); //设置对应JSP的模板文件
		 User dto=user.selectById(id);
		// modelAndView.addObject("user", dto);
         return JSON.toJSONString(dto);
		
	}
	@RequestMapping(value="/editUser")
	public  void editUser(User user1){
		int k= user.updateById(user1);
		
	}
	@RequestMapping(value="/deleteUser")
	@ResponseBody
	public  int deleteUser(int id){
		int k=  user.deleteById(id);
		return k;
		
	}


}

Menu

package com.compet.entity;

import java.io.Serializable;

import lombok.Data;

import org.springframework.boot.jackson.JsonComponent;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@JsonComponent()
@Data
@TableName("menu")
public class Menu implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@TableId(value="id", type = IdType.AUTO)
	private int id;
	private String name	;
	private int pId	;
	private String url	;
	private String status	;
	@TableField(exist=false)
	private int role_id;
	@TableField(exist=false)
	private int role_name;

}

SidemenuModel

package com.compet.entity;

import java.util.List;

import lombok.Data;

import org.springframework.boot.jackson.JsonComponent;

@JsonComponent()
@Data
public class SidemenuModel{
	
        private Integer id ;   //title
        private String text ;    //图标
        private Integer pId ;    //图标
        private List<SidemenuModel>  children;
        
}

UserMapper

package com.compet.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.compet.entity.Menu;
import com.compet.entity.Role;
import com.compet.entity.SidemenuModel;
import com.compet.entity.User;

public interface UserMapper extends BaseMapper<User>{
	
	public List<User> userList();

	public List<User> menuList();

	public List<SidemenuModel> menuList1(@Param(value="map")Map<String, Integer> map);

	public List<Menu> goJsp(@Param(value="id") int id);
	
	public User queryUserById(User user1);

	public List<SidemenuModel> menuListChild(@Param(value="pId")Integer pId);

	public List<Role> userRole(@Param(value="userId")Integer userId);


}

UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.compet.mapper.UserMapper">

  <select id="userList" resultType="com.compet.entity.User">
 	 SELECT
		id,
		name,
		password,
		sex,
		status,
		misscount
	FROM
		user
  </select>
  
   <select id="userRole" parameterType="int"  resultType="com.compet.entity.SidemenuModel">
 	 SELECT
			t1.id,
			t1.`name` AS text
		FROM
			role t1
		LEFT JOIN user_role t2 ON t2.role_id=t1.id
		LEFT JOIN `user` t3 ON t2.user_id=t3.id
		WHERE t3.id=#{userId}
  </select>
  <select id="goJsp" parameterType="int" resultType="com.compet.entity.Menu">
  		SELECT
			t1.*, t2.role_id,
			t3.`name` as role_name
		FROM
			menu t1
		LEFT JOIN role_menu t2 ON t1.id = t2.menu_id
		LEFT JOIN role t3 ON t3.id = t2.role_id
		LEFT JOIN module t4 ON t2.module_id=t4.id
   		<if test="id!=0">
            where t1.id=#{id}
        </if>
  </select>
  <select id="queryUserById" parameterType="com.compet.entity.User" resultType="com.compet.entity.User">
  		SELECT * FROM `user` where 1=1
   		<if test="name!=null and name!=''">
           and  name=#{name} 
        </if>
        <if test="password!=null and password!=''">
           and `password`=#{password}
        </if>
  </select>
  <select id="menuList" resultType="com.compet.entity.Menu">
  		SELECT
			t1.*, t2.role_id,
			t3.`name` as role_name
		FROM
			menu t1
		LEFT JOIN role_menu t2 ON t1.id = t2.menu_id
		LEFT JOIN role t3 ON t3.id = t2.role_id
		LEFT JOIN module t4 ON t2.module_id=t4.id
   		
  </select>
   <select id="menuList1" parameterType="java.util.Map" resultType="com.compet.entity.SidemenuModel">
  		SELECT
			t1.id,
			t1.`name` AS text,
			t1.p_id as pId
		FROM
			menu t1
		LEFT JOIN role_menu t2 ON t1.id = t2.menu_id
		LEFT JOIN role t3 ON t3.id = t2.role_id
		LEFT JOIN module t4 ON t2.module_id = t4.id
		where p_id is null 
		<if test="map.roleId!=null and map.roleId!=1">
		   and t3.id=#{map.roleId}
		</if>
  
  </select>
   <select id="menuListChild" parameterType="java.lang.Integer" resultType="com.compet.entity.SidemenuModel">
  		SELECT
			t1.id,
			t1.`name` AS text,
			t1.p_id as pId
		FROM
			menu t1
		LEFT JOIN role_menu t2 ON t1.id = t2.menu_id
		LEFT JOIN role t3 ON t3.id = t2.role_id
		LEFT JOIN module t4 ON t2.module_id = t4.id
		where 1=1
		<if test="pId!=null">
		   and t1.p_id =#{pId}
		</if>
  
  </select>
  
</mapper>

MyInterceptor

package com.compet.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 * @ClassName: MyInterceptor
 * @Author: 
 * @Description:
 * @Date: 2022/6/11 10:29
 */
@Component
public class MyInterceptor implements HandlerInterceptor  {
    //定义拦截器
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object name = request.getSession().getAttribute("userId");
        Object password = request.getSession().getAttribute("name");
        if (name == null || password == null) {
            request.setAttribute("msg", "没有权限请登录");
            //request.getRequestDispatcher("/login.jsp").forward(request, response);
             response.sendRedirect(request.getContextPath() + "/login");   //这种写法也可以
            return false;
        } else {
            return true;
        }
    }
 
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
 
    }
 
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
 
    }
}

MyConfig

package com.compet.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import com.compet.interceptor.MyInterceptor;
 
/**
 * @ClassName: MyConfig
 * @Author: 
 * @Description:
 * @Date: 2022/6/11 10:59
 */
@Configuration
public class MyConfig implements WebMvcConfigurer  {
 
    @Autowired
    MyInterceptor myInterceptor;
 
    // 注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //注册TestInterceptor拦截器
        InterceptorRegistration registration = registry.addInterceptor(new MyInterceptor());
        registration.addPathPatterns("/**"); //所有路径都被拦截
        registration.excludePathPatterns(    //添加不拦截路径
                "/login",                    //登录路径
                "/checkLogin",
                "/**/*.jsp",                //html静态资源
                "/**/*.js",                  //js静态资源
                "/**/*.css",                  //css静态资源
                "/random"
        );
    }
    
}

FileBaseController

package util;

import net.coobird.thumbnailator.Thumbnails;
import net.sf.jmimemagic.Magic;
import net.sf.jmimemagic.MagicMatch;

import org.springframework.web.multipart.MultipartFile;

import com.compet.entity.CommFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;


/**
 * @author 
 * 上传、下载附件底层功能
 */
public class FileBaseController {
    //盘符
    private String diskName;

    //文件路径
    private String filePath;

    /**
     * @param pathFileName 路径文件名称(完整路径)
     *                     删除指定文件
     */
    public boolean baseRemoveFile(String pathFileName) throws Exception {
        File file = new File(pathFileName);
        if (file.exists()) {
            file.delete();
        }
        return file.exists();
    }


    /**
     * 得到图片字节流 数组大小
     */
    public static byte[] readStream(InputStream inStream) throws IOException {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len = -1;
        while ((len = inStream.read(buffer)) != -1) {
            outStream.write(buffer, 0, len);
        }
        outStream.close();
        inStream.close();
        return outStream.toByteArray();
    }
    /**
     * @param fileName 图片名称
     * @param flag     1=图片以流展示在页面,2=下载附件
     *                 下载附件
     */
    public void baseDownloadFile(HttpServletRequest request, HttpServletResponse response, String fileName, int flag) throws Exception {
    	fileName= new String(fileName.getBytes("iso8859-1"), "utf-8");
        if (flag == 1 ) {

//            String downLoadPath = diskName + File.separator + filePath + File.separator + fileName;
        	 String downLoadPath =fileName;
            InputStream fis = new FileInputStream(new File(downLoadPath));
            byte[] data = readStream(fis);
            //这种方式用了该jmimemagic-0.1.0.jar文件
            MagicMatch match = Magic.getMagicMatch(data);
            String mimeType = match.getMimeType();

            try (
                    BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
            ) {
                // 设置响应的类型格式为图片格式
                response.setContentType(mimeType);
                //禁止图像缓存。
                response.setHeader("Pragma", "no-cache");
                response.setHeader("Cache-Control", "no-cache");
                response.setDateHeader("Expires", 0);
                bos.write(data);
            } catch (Exception e) {
            }
        }else if (flag == 2 || flag == 3) {

            response.setContentType("application/octet-stream");
            response.setContentType("application/OCTET-STREAM;charset=UTF-8");
            response.setHeader("Content-Disposition",
                    "attachment;filename=" + new String(fileName.getBytes("utf-8"), StandardCharsets.ISO_8859_1));
            File file = new File(fileName);
            try (
                    FileInputStream fis = new FileInputStream(file);
                    BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
            ) {

                byte[] buffer = new byte[1024];
                int len;
                while ((len = fis.read(buffer)) != -1) {
                    out.write(buffer, 0, len);
                    out.flush();
                }
            } catch (Exception e) {
            }

        }
    }

    /**
     * @param fileName 文件图片名称
     *                 删除图片
     */
    public boolean delServerFile(String fileName) {
        String pathStr = this.diskName + File.separator + this.filePath + File.separator + fileName;
        File file = new File(pathStr);
        return file.delete();
    }

    public List<CommFile> baseUploadFile(MultipartFile[] files, HttpServletRequest request, int imgAtt) throws IOException {

    	List<CommFile> commFiles = new ArrayList<>();

        for (int i = 0; i < files.length; i++) {
            if (!files[i].isEmpty()) {
            	CommFile filePhoto = new CommFile();
    			//文件类型
    	    	filePhoto.setFileType(imgAtt);
    	    	//文件uuid
    	    	String uuid = UUID.randomUUID().toString();
    	    	filePhoto.setFileUuid(uuid);
    	    	//文件原始名称
    	    	 String formatInfo = files[i].getOriginalFilename();
    	    	filePhoto.setFileName(formatInfo);
    	    	//文件大小
    	    	filePhoto.setFileMime(files[i].getSize()/1024+"KB");
    	    	 //文件夹拼接路径
    	        String newStr = diskName + File.separator + filePath;
    	        //方案1获取到上传图片inputStream之后在输出到指定文件夹下面并支持压缩
    	        //文件名uuid+文件后缀名
    	        String url =uuid+ files[i].getOriginalFilename().substring(files[i].getOriginalFilename().lastIndexOf('.'));
    	    	filePhoto.setFileUrl( newStr + File.separator + url);
    	    	commFiles.add(filePhoto);
                File newFile = new File(newStr);
                //创建文件夹
                if (!newFile.exists()) {
                    newFile.mkdirs();
                }
                //上传图片并压缩
                if (imgAtt == 1) {
                    //图片全路径
                    String toImgPath = newStr + File.separator + url;
                    //上传到指定服务端文件夹位置
                    File toFile = new File(toImgPath);
                    //进行压缩图片(1=获取上传图片位置,2=图片大小,3=图片所去得目的地)
                    Thumbnails.of(files[i].getInputStream()).size(1024, 768).toFile(toFile);
                }else{
                	//上传到指定服务端文件夹位置
	                File toFile = new File(newStr + File.separator + url);
                	try(InputStream is = files[i].getInputStream();
                         FileOutputStream out = new FileOutputStream(toFile);
                        ){
                    //创建一个缓冲区
                    byte[] buffer = new byte[1024];
                    //判断输入流中的数据是否已经读完的标识
                    int len = 0;
                    //循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
                    while ((len = is.read(buffer)) > 0) {
                        out.write(buffer, 0, len);
                    }
                } catch (Exception e) {
                }
				
                }

            }
        }


        return commFiles;
    }
    
    public String getDiskName() {
        return diskName;
    }

    public void setDiskName(String diskName) {
        this.diskName = diskName;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }

}

PublicAttr

package util;

public class PublicAttr {


	// 文件上传begin
	 public final static String diskName = "d:";

	// 图片
	public final static String reportPhoto = "/report/reportPhoto";
	// 视频
	public final static String reportVideo = "/report/reportVideo";
	// 音频
	public final static String reportVoice = "/report/reportVoice";
	
}

RandomCode

package util;

import java.util.Arrays;

/**
 * @author zwcscq
 */
public class RandomCode {

	public enum RandomCodeType {
		NUMBER, NUMBER_ADN_LOWER_ABC, NUMBER_ADN_LOWER_AND_UPPER_ABC
	};
	
	public static String getRandomCode() {
		return getRandomCode(4, RandomCodeType.NUMBER, false);
	}

	public static String getRandomCode(int length, RandomCodeType level,
			boolean isRepeat) {
		char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
				'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
				'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
				'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
				'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
				'X', 'Y', 'Z' };
		if (level == RandomCodeType.NUMBER) {
			chars = Arrays.copyOfRange(chars, 0, 9);
		} else if (level == RandomCodeType.NUMBER_ADN_LOWER_ABC) {
			chars = Arrays.copyOfRange(chars, 0, 34);
		}
		int n = chars.length;

		if (length > n && isRepeat == false) {
			isRepeat = true;
		}

		char[] result = new char[length];

		if (isRepeat) {
			for (int i = 0; i < result.length; i++) {
				int r = (int) (Math.random() * n);
				result[i] = chars[r];
			}
		} else {
			for (int i = 0; i < result.length; i++) {
				int r = (int) (Math.random() * n);
				result[i] = chars[r];
				chars[r] = chars[n - 1];
				n--;
			}
		}
		return String.valueOf(result);
	}
}

RandomImage

package util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Random;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

/**
 * @author zwcscq
 */
@SuppressWarnings("restriction")
public class RandomImage {

	public static BufferedImage createImage(String randomCode) {

		int len = randomCode.length();
		int width = len * 18;
		int height = 20;

		BufferedImage image = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics g = image.createGraphics();

		g.setColor(getRandomColor(200, 250));
		g.fillRect(0, 0, width, height);

		g.setColor(Color.PINK);
		g.drawRect(0, 0, width - 1, height - 1);

		g.setFont(new Font("Arial", Font.PLAIN, height - 2));
		g.setColor(getRandomColor(160, 200));
		Random random = new Random();
		for (int i = 0; i < 155; i++) {
			int x = random.nextInt(width);
			int y = random.nextInt(height);
			int xl = random.nextInt(12);
			int yl = random.nextInt(12);
			g.drawLine(x, y, x + xl, y + yl);
		}

		int codeY = height - 4;

		g.setFont(new Font("Arial", Font.PLAIN, height - 2));
		for (int i = 0; i < len; i++) {
			g.setColor(getRandomColor(20, 130));
			g.drawString(String.valueOf(randomCode.charAt(i)), i * 16 + 4,
					codeY);
		}
		g.dispose();

		return image;
	}

	private static Color getRandomColor(int fc, int bc) {
		Random random = new Random();
		if (fc > 255)
			fc = 255;
		if (bc > 255)
			bc = 255;
		int r = fc + random.nextInt(bc - fc);
		int g = fc + random.nextInt(bc - fc);
		int b = fc + random.nextInt(bc - fc);
		return new Color(r, g, b);
	}

	public static ByteArrayInputStream getImageAsInputStream(String randomCode) {

		BufferedImage image = createImage(randomCode);
		return convertImageToStream(image);
	}

	private static ByteArrayInputStream convertImageToStream(BufferedImage image) {

		ByteArrayInputStream inputStream = null;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		JPEGImageEncoder jpeg = JPEGCodec.createJPEGEncoder(bos);
		try {
			jpeg.encode(image);
			byte[] bytes = bos.toByteArray();
			inputStream = new ByteArrayInputStream(bytes);
		} catch (IOException e) {
		}
		return inputStream;
	}
}

application.properties

jdbc.type=mysql
spring.datasource.url=jdbc:mysql://localhost:3306/compet?useUnicode=true&\characterEncoding=utf8&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=cyq123

spring.mvc.view.prefix = /WEB-INF/views/
spring.mvc.view.suffix = .jsp
spring.resources.static-locations=classpath:/static
#spring.thymeleaf.cache = false
#spring.thymeleaf.view.prefix = /WEB-INF/views/
#spring.thymeleaf.view.suffix = .jsp
#spring.resources.static-locations=classpath:/static
#配置文件传输
spring.servlet.multipart.enabled =true  
spring.servlet.multipart.file-size-threshold =0
#单个数据的大小
spring.servlet.multipart.max-file-size = 100MB
#总数据的大小
spring.servlet.multipart.max-request-size=1000MB
spring.servlet.multipart.enabled =true  
mybatis-plus:
  # \u5982\u679C\u662F\u653E\u5728src/main/java\u76EE\u5F55\u4E0B classpath:/com/*/*/mapper/*Mapper.xml
  # \u5982\u679C\u662F\u653E\u5728resource\u76EE\u5F55 classpath:/mapper/**.xml
#  mapper-locations: classpath:/com.report.mapper/*.xml

#分页插件
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
  
  
# 应用名称
spring.application.name=compet
# 应用服务 WEB 访问端口
server.port=8080
#禁用缓存
spring.thymeleaf.cache=false
 
spring.mvc.hiddenmethod.filter.enabled=true

mybatis:
  mapper-locations: com/compet/mapper/**/*.xml
  type-aliases-package: com.compet.mapper.pojo
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


zlogin.css

@charset "utf-8";
*{box-sizing:border-box}:focus{outline:0}
body{display:-ms-flexbox;height:100%;width:100%;margin:0 auto;background:-webkit-linear-gradient(to right, #bbd0eb, #649ae2);
                                       background:linear-gradient(to right, #bbd0eb, #649ae2);
display:flex;-ms-flex-direction:column;flex-direction:column;line-height:1}h1{font:600 32px Open Sans,sans-serif}
h1,h2{color:#444}h2{font:600 28px Open Sans,sans-serif}
p{font:400 14px/1.3 Open Sans,sans-serif;color:#444}
.mt20{position: absolute;bottom: 0;text-align: center;width:100%;}
.heading2{font:600 28px Open Sans,sans-serif;color:#444;margin:30px 0}
a{color:#1b9ee0;text-decoration:none;font-size: 10px;}
.red {color: #ff0000;text-align: -webkit-center;} 
.login {
	overflow: hidden;
	margin:0px auto;	
}
.container{width:100%;padding:0;margin:0 auto;background: url(images/backimg.jpg) no-repeat;    background-size: 100% 100%;}
.main-content{-ms-flex:1 0 auto;flex:1 0 auto}
.text-center{text-align:center}
.items-notice{background:#fff8dc;padding:10px 15px;font-size:12px;color:#706956;margin:0 auto 30px;border:1px solid #f9edbf;border-radius:3px;width:260px;text-align:center;line-height:16px}
.svg-icon{width:25px;height:25px}
.svg-icon path,.svg-icon polygon,.svg-icon rect{fill:gray}.svg-icon path:hover,.svg-icon polygon:hover,.svg-icon rect:hover{fill:#4691f6}
.svg-icon circle{stroke:#4691f6;stroke-width:1}
.simpleform{margin:160px auto;}
.simpleform-wrap{overflow:hidden;margin-bottom:5px;position:relative}
.simpleform-label{width:20%;cursor:pointer}
.simpleform-input,.simpleform-label{font:13px/34px Open Sans,sans-serif;color:#10235d;float:left}
.simpleform-input{border:1px solid #cecece;padding:0 10px;margin:0;width:80%;height: 36px;background:#fff}
.simpleform-input:focus{border-color:#999}
.simpleform-textarea{font:13px Open Sans,sans-serif;border:1px solid #cecece;padding:10px;margin:0;color:#787878;width:70%;float:left;height:130px;background:#fff}
.simpleform-submit{border:0 none;font:600 13px/34px Open Sans,sans-serif;padding:0 20px;color:#fff;background:#1b9ee0;margin-left:7px;border-radius:3px;letter-spacing:.4px;width:80%;margin:20px auto 0;float:right;cursor:pointer}
.simpleform-submit:active,.simpleform-submit:focus,.simpleform-submit:hover{opacity:.8}
.simpleform-title{text-align:center;margin-bottom:40px;color:#555;position:relative;margin-right: -50px;}
.simpleform-title img{width:60%;}
.simpleform-wrap .yzmcode{top: -27px;z-index: 99;position: relative;}
.simpleform-title:after{content:'';display:block;width:10%;height:2px;background-color:#1b9ee0;margin:8px auto 0}
.simpleform-dropdown{font:13px/34px Open Sans,sans-serif;border:1px solid #cecece;padding:0 5px;color:#787878;width:70%;float:left;cursor:pointer;height:34px}.simpleform-checkbox{float:left;margin-top:11px;cursor:pointer}
.simpleform-label-checkbox{padding-left:8px;max-width:100%;width:100%}
.simpleform-checkbox--login{margin-left:20%;display:-ms-flexbox;display:flex}
.select2-container--default .select2-selection--multiple{border:1px solid #cecece;border-radius:0}
.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #cecece}
.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#fff;border:1px solid #d0d0d0;border-radius:4px;cursor:default;float:left;margin-right:6px;margin-top:3px;font:13px/21px Roboto,sans-serif;padding:0 7px;color:#787c84}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#909090;cursor:pointer;display:inline-block;font-weight:700;margin-right:4px}.select2-results__option[aria-selected]{cursor:pointer;font:13px Roboto,sans-serif}.select2-search__field{font:12px Roboto,sans-serif!important;color:#787878;margin-top:8px!important}.select2-container .select2-selection--multiple{min-height:34px}.select2-results__option{font:12px/21px Roboto,sans-serif}.errors{margin:0 0 15px 20px;padding:0}.errors-item{font:400 12px/18px Roboto,sans-serif;color:#cc3d3d}.success{margin:0;padding:0;margin-bottom:20px;margin-left:20px}.success-item{font:400 12px/18px Roboto,sans-serif;color:#46ad2a}.cd-pagination{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin:40px 0 0;padding:0;list-style-type:none}.cd-pagination li{margin:5px 3px 0}.cd-pagination li:first-of-type{margin-left:0}.cd-pagination li:last-of-type{margin-right:0}@media (max-width:600px){.cd-pagination li{margin-left:2px;margin-right:2px}}.cd-pagination a,.cd-pagination span{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:7px 12px}
.cd-pagination a{border:1px solid #e6e6e6;border-radius:3px;text-decoration:none;font:13px Open Sans,sans-serif;color:#4a4848}
.cd-pagination a:hover{border-color:#bbb}
.cd-pagination a.disabled{color:rgba(46,64,87,.4);pointer-events:none}
.cd-pagination a.disabled:after,.cd-pagination a.disabled:before{opacity:.4}
.cd-pagination .button:first-of-type a:before{content:'\00ab  '}
.cd-pagination .button:last-of-type a:after{content:' \00bb'}
.cd-pagination .current{background-color:#1b9ee0;border-color:#1b9ee0;color:#fff;pointer-events:none}
.nav-tags{background-color:#3a3e44;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;margin-bottom:40px;border-bottom:1px solid #e6e6e6;position:relative;z-index:2}.nav-tags-item{font:400 14px/52px Open Sans,sans-serif;margin:0 16px;color:#fff;letter-spacing:.4px;color:#ccc;padding:0 4px}.nav-tags-item:hover{color:#fff}.nav-tags-item--active{color:#fff;box-shadow:inset 0 -2px 0 0 #f8f8f8}.nav-tags-item--dropwdown{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;cursor:pointer}.nav-tags-item--dropwdown:hover>*{color:#fff;fill:#fff}.nav-tags-item--dropwdown svg{transform:rotate(-90deg);width:17px;height:17px}.nav-tags-item--dropwdown:hover .tags{display:-ms-flexbox;display:flex}.nav-tags-item-text{font:400 14px/52px Open Sans,sans-serif;margin:0 11px;color:#fff;letter-spacing:.4px;color:#ccc;margin-right:3px;text-transform:capitalize;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.nav-tags-item--dropwdownActive .nav-tags-item-text{color:#fff}
.nav-tags-item--dropwdownActive path{fill:#fff}
.tags{position:absolute;display:none;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:wrap;flex-wrap:wrap;height:355px;width:100%;max-width:800px;top:52px;left:0;right:0;margin:auto;background-color:#3a3e44;overflow:hidden;border-radius:0 0 2px 2px;padding:15px 0 0 30px}
/*PC大屏幕*/
@media screen and (min-width: 1200px){
.simpleform{width:456px;}
.yzmcode{right: -270px;}
}

/*PC中等屏幕*/
@media (min-width: 992px) and (max-width: 1199px){
	.simpleform{width:456px;}
	.yzmcode{right: -270px;}
}

/*PAD中的样式*/
@media screen and (min-width: 768px) and (max-width: 991px){
.simpleform{width:456px;}
.yzmcode{right: -274px;}
}

/*PHONE中的样式*/
@media screen and (max-width: 767px){
 .yzmcode{right: -195px;}
}

login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%-- <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> --%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>系统</title>
<link rel="stylesheet" type="text/css" href="<c:url value="static/css/zlogin.css"/>" >
<link rel="stylesheet" type="text/css" href="<c:url value="static/js/themes/icon.css"/>">
<script type="text/javascript" src="<c:url value="static/js/jquery.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery-1.11.1.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery.easyui.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery.form.js"/>"></script>
<script type="text/javascript">
$(function() {
	if($("#msg").val!='' && $("#msg").val!=null){
		//alert($("#msg").val);
	}
	$("#verify").click(function() {
		$(this).attr("src", "<%=request.getContextPath()%>/random?time=" + new Date().getTime());
	});
	$("#verify").click();
	
	$("#f1").form({
		success:function(data){
			if(data=="0"){
  			   alert("验证码为空");
  		   }else if(data=="1"){
  			   alert("验证码错误")
  		   }else if(data=="2"){
  			   alert("用户名或密码错误")
  		   }else{
  			 location.href="<%=request.getContextPath()%>/userList"
  		   }
		}
	})
	
})

function goLogin(){
	$("#f1").form("submit");
}
</script>
</head>
<body class="login">
	    <div class="container main-content">
	    <input type="hidden" id="msg"  >
            <form method="POST" name="f1" id="f1" action="<%=request.getContextPath()%>/checkLogin" enctype="multipart/form-data" class="simpleform">
           <div style="padding:0px 50px;">

        <h1 class="simpleform-title">秀山职业教育中心</h1>

        <div class="simpleform-wrap"><div id="msg" class="red"></div></div>
        <div class="simpleform-wrap">
            <label for="loginname" class="simpleform-label">账号</label>
            <input type="text" id="loginname" name="name" class="simpleform-input">
        </div>

        <div class="simpleform-wrap">
            <label for="password" class="simpleform-label">密码</label>
            <input type="password" name="password" id="password" class="simpleform-input">
        </div>
        
        <div class="simpleform-wrap">
            <label for="password" class="simpleform-label">验证码</label>
            <input id="validcode" name="validcode" type="text" maxlength="4" class="simpleform-input">
            <img class="yzmcode" id="verify" title="刷新" alt="" />
        </div>

        <div class="simpleform-wrap">
            <input value="登录" id="button01" name="button"  type="button" onclick="goLogin()" class="simpleform-submit">
        </div>
		</div>
    </form>
    </div>

</body>
</html>

user_list

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%-- <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> --%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<c:url value="static/js/themes/default/easyui.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="static/js/themes/icon.css"/>">
<script type="text/javascript" src="<c:url value="static/js/jquery.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery-1.11.1.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery.easyui.min.js"/>"></script>
</head>
 <script type="text/javascript">
  $(document).ready(function(){
	  var role_id=$("#RoleCC").val();
	  getUserTree(role_id);
  })
  
  function getUserTree(role_id){
	  $('#userTree').tree({
		    url: '<%=request.getContextPath()%>/getUserTree?role_id='+role_id,
		    onClick: function(node){
		    	//判重,如果为false就添加新的tab页
				 if(!$("#tt").tabs("exists",node.text)){
					// add a new tab panel    
					$('#tt').tabs('add',{    
					    title:node.text,    
					    content:createTable(node.text,node.id),    
					    closable:true    
					});  
				}else{
					//反之为true,选择一个选项卡面板
					$("#tt").tabs("select",node.text)
				} 
		    }
		});
  }
  
  
  function createTable(text,id) {
		
	    var s = '<iframe scrolling="auto" frameborder="0"  src="<%=request.getContextPath()%>/goJsp?id=' + id + '" style="width:100%;height:100%;"></iframe>';
	    return s;
	}
  function getRole(){
	  $("#roleCC").combobox({
		    onSelect:function(parm){
		    	getTree(parm.id);
		    	$(this).combobox('select',parm.id);
		    }
		});
		<%--  --%>
	}
 </script>
<body class="easyui-layout">
    <div data-options="region:'north',title:'North Title',split:true" style="height:100px;">
    	<h1 style="float: right;">欢迎你${userName }!</h1>
    	<select id="RoleCC" class="easyui-combobox" name="role" style="width:200px;" >
    	<c:forEach items="${role}" var="li">
		 <option value="${li.id}">${li.name}</option>
		</c:forEach>
		</select>
    </div>
    <div data-options="region:'west',title:'菜单导航',split:true" style="width:100px;">
        <ul class="easyui-tree"  id="userTree"></ul>
    </div>
    <div data-options="region:'center',title:'页面'" style="padding:5px;background:#eee;">
    	<div id="tt" class="easyui-tabs" style="width:100%;height:100%;">   </div>
    </div>
</body>
</html>

user

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%-- <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> --%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="<c:url value="static/js/themes/default/easyui.css"/>">
<link rel="stylesheet" type="text/css" href="<c:url value="static/js/themes/icon.css"/>">
<script type="text/javascript" src="<c:url value="static/js/jquery.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery-1.11.1.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="static/js/jquery.easyui.min.js"/>"></script>
</head>
 <script type="text/javascript">
		
	</script>
<body >
    <a href="javaScript:void(0)"  onclick="query()"  class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a>
    <a href="javaScript:void(0)" onclick="addU()" class="easyui-linkbutton" data-options="iconCls:'icon-add'">新增</a>
     <a href="javaScript:void(0)"  onclick="editU()" class="easyui-linkbutton" data-options="iconCls:'icon-edit'">修改</a>
          <a onclick="deleteU()" class="easyui-linkbutton" data-options="iconCls:'icon-delete'">删除</a>
	<table  id="dg" class="easyui-datagrid" title="" style="width:700px;height:250px"
		 data-options="idField:'id',remoteSort:true,rownumbers:true,singleSelect:true,collapsible:true,pagination:true,toolbar:'#toolbar'">
			<thead>
				<tr>
					<th data-options="field:'id',hidden:'true',width:80">id</th>
					<th data-options="field:'name',width:80" >姓名</th>
					<th data-options="field:'password',width:80">密码</th>
					<th data-options="field:'sex',width:80">性别</th>
					<th data-options="field:'status',formatter:formatterStatus,width:80">状态</th>
					<th data-options="field:'misscount',width:80">登录错误次数</th>
				</tr>
			</thead>
		</table>
		
		<div id="dialog_add_user" class="easyui-dialog" title="新增人员信息" style="width:600px;height:400px;"
           data-options="iconCls:'icon-save',resizable:true,modal:true,closed:true,buttons:'#dialog_add_user_bb'">
           <form id="dialog_add_user_form" method="post" action="<%=request.getContextPath() %>/addUser">
	   			<table>
	   				<tr>
	   					<td>姓名</td>
	   					<td><input type="text" id="name" name="name" class="userimg"  /></td>
	   				</tr>
	   				<tr>
	   					<td>密码</td>
	   					<td><input type="text"  id="password" name="password" /></td>
	   				</tr>
	   				<tr>
	   					<td>性别</td>
	   					<td><select id="sex" name="sex" class="easyui-combobox" style="width:150px;">
							  <option value="男">男</option>
							  <option value="女">女</option>
							</select></td>
	   				</tr>
	   				<tr>
	   					<td>状态</td>
	   					<td><select id="status" name="status" class="easyui-combobox" style="width:150px;">
							  <option value="0">启用</option>
							  <option value="1">停用</option>
							</select></td>
	   				</tr>
	   				<tr>
	   					<td>角色</td>
	   					<td><select id="showRole" name="roleId" style="width:150px;">
							  
							</select></td>
	   				</tr>
	   			</table>
	   		</form>
     </div>
     <div id="dialog_add_user_bb">
		<a href="javaScript:void(0)" class="easyui-linkbutton" onclick="dialog_add_user_save()">保存</a>
	</div>
	
	
	
	<div id="dialog_edit_user" class="easyui-dialog" title="修改人员信息" style="width:600px;height:400px;"
           data-options="iconCls:'icon-save',resizable:true,modal:true,closed:true,buttons:'#dialog_edit_user_bb'">
           <form id="dialog_edit_user_form" method="post" action="<%=request.getContextPath() %>/editUser" >
           <input type="hidden" id="id" name="id" />
	   			<table>
	   				<tr>
	   					<td>姓名</td>
	   					<td><input type="text" id="name" name="name" class="userimg"  /></td>
	   				</tr>
	   				<tr>
	   					<td>密码</td>
	   					<td><input type="text"  id="password" name="password" /></td>
	   				</tr>
	   				<tr>
	   					<td>性别</td>
	   					<td><select id="sex" name="sex" class="easyui-combobox" style="width:150px;">
							  <option value="男"  >男</option>
							  <option value="女" >女</option>
							</select></td>
	   				</tr>
	   				<tr>
	   					<td>状态</td>
	   					<td><select id="status" name="status" class="easyui-combobox" style="width:150px;">
							  <option value="0" >启用</option>
							  <option value="1" >停用</option>
							</select></td>
	   				</tr>
	   			</table>
	   		</form>
     </div>
     <div id="dialog_edit_user_bb">
		<a href="javaScript:void(0)" class="easyui-linkbutton" onclick="dialog_edit_user_save()">保存</a>
	</div>
	
</body>
<script>
//根据查询条件查询数据
function query() {
	var url = "<%=request.getContextPath()%>/queryUser";
	var pageopt = $('#dg').datagrid('getPager').data("pagination").options;	
	var select = $("#select").val();
	var data = {
			pageNo:pageopt.pageNumber,  //当前第几页
			pageSize:pageopt.pageSize   //每页展示多少行
		};
		$.post(url, data, function(data) {
			var dataJson = JSON.parse(data);
			console.log(dataJson.data.list)
			if(dataJson.data.list.length==0){
				art.dialog.tips("没有数据");
				//清空数据
		        $('#dg').datagrid("loadData", {total : 0,rows : []});
			}else{
				var datasource = {
					total : dataJson.totalRecords,
					rows : dataJson.data.list
				};
				$('#dg').datagrid("loadData", datasource);
				$('#dg').datagrid('unselectAll');
			}
		})
}

$(document).ready(function(){
	  //分页插件
	  $('#dg').datagrid('getPager').pagination({  
			width: ($(window).width()*0.8),

			pageSize: 15,//每页显示的记录条数,默认为10  

			pageList: [15,30,50,200],//可以设置每页记录条数的列表  

		    beforePageText: '第',//页数文本框前显示的汉字  

		    afterPageText: '页  共 {pages} 页',  

		    displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录',
		 
		    onSelectPage:function(pageNumber,pageSize){  
		    	          query();
		    }
		});
	  $('#dg').datagrid('resize', {
		  width: ($(window).width()*0.995-5),
		  height: ($(window).height()*0.87)
	  });
	  query();
});
//公共时间格式转换
function formatterStatus(value){
	var data = "";
	if (value != null && value != "") {
		if(value=="0"){
			data="启用";
		}else if(value=="1"){
			data="停用";
		}
	}
	return data;
}
//公共时间格式转换
function publicTimeFormatter(vlaue){
	var data = "";
	if (vlaue != null && vlaue != '') {
		var dt = new Date(vlaue);
		var y = dt.getFullYear();
		var m = dt.getMonth() + 1;
		var d = dt.getDate() < 10 ? "0" + dt.getDate() : dt.getDate();
		if (m < 10) {
			m = "0" + m;
		}
		data = y + "-" + m + "-" + d;
	}
	return data;
}


//新增
function addU() {
	$("#dialog_add_user").dialog({
		closed:false
	})
	
	$.ajax({
		type:'post',
		url:'<%=request.getContextPath()%>/showRole',
		success:function(res){
			console.log(res);
			$("#showRole").combobox({
			    data:res,
			    valueField:'id',
			    textField:'name',
			    onLoadSuccess:function(){
			    	var val=$(this).combobox('getData');
			    	if(val!=null){
			    		$(this).combobox('select',val[0].id);
			    	}
			    }
			});
 		}
	})
  
}
function dialog_add_user_save(){
	$("#dialog_add_user_form").form("submit",{
		success:function(data){
			query();
		}
	});
	$("#dialog_add_user").dialog({
		closed:true
	});
	
	
}

//修改
function editU() {
    var selects = $('#dg').datagrid('getSelected');
    if (selects == '' || selects == null) {
        alert("请选择一条数据");
    } else {
        var row = $("#dg").datagrid("getSelected");
        var id = row.id;
        var toToUrl = '<%=request.getContextPath()%>/editUserById?id=' + id;
        $("#dialog_edit_user").dialog({
    		closed:false
    	})
    	$("#dialog_edit_user_form").form("load",toToUrl);
    }
}
function dialog_edit_user_save(){
	$("#dialog_edit_user_form").form("submit",{
		success:function(data){
			query();
		}
	});
	$("#dialog_edit_user").dialog({
		closed:true
	});
}
//删除
function deleteU() {
	 var row = $("#dg").datagrid("getSelected");
    if (row == '' || row == null) {
        alert("请选择一条数据");
    }else {
    	var id = row.id;
    	var url = "<%=request.getContextPath()%>/deleteUser";
        var data = {'id': id};
       
         $.post(url, data, function (result) {
            if (result == 1) {
                alert("删除成功!");
                //刷新页面数据
                query();
                //清空已选中的数据
                $('#dg').datagrid('clearSelections');
            } else {
                //如果删除失败 则提示失败原因
                alert("删除失败!");
                //清空已选中的数据
                $('#dg').datagrid('clearSelections');
                return;
            }
        }); 
    }
}

</script>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值