web工具类
快速生成code码返回前端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.utils; public enum Code { SUCCESS("1000","操作成功"), ERROR("1001","操作失败"), NODATA("1002","暂无数据"), LOGIN_ERROR("1003","用户名或密码错误"), NOT_EMPTY("1004","不能为空"); private String code; private String msg; private Code(String code,String msg){ this.code = code; this.msg = msg; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
package com.utils; import java.util.HashMap; import java.util.List; import java.util.Map; public class MapControll { //目标对象 private Map<String,Object> paramMap = new HashMap<>(); //私有构造 private MapControll(){ } public static MapControll getInstance(){ return new MapControll(); } public MapControll add(String key, Object value){ paramMap.put(key,value); return this; } public MapControll success(){ paramMap.put("code",Code.SUCCESS.getCode()); paramMap.put("msg",Code.SUCCESS.getMsg()); return this; } public MapControll error(){ paramMap.put("code",Code.ERROR.getCode());//1001 paramMap.put("msg",Code.ERROR.getMsg());//操作失败 return this; } public MapControll error(String msg){ paramMap.put("code",Code.ERROR.getCode()); paramMap.put("msg",msg); return this; } public MapControll notEmpty(){ paramMap.put("code",Code.NOT_EMPTY.getCode()); paramMap.put("msg",Code.NOT_EMPTY.getMsg()); return this; } public MapControll nodata(){ paramMap.put("code",Code.NODATA.getCode()); paramMap.put("msg",Code.NODATA.getMsg()); return this; } public MapControll page(List<?> list,Integer count){ paramMap.put("data",list); paramMap.put("count",count); return this; } public MapControll put(String key, Object value){ this.add(key,value); return this; } public MapControll addId(Object value){ paramMap.put("id",value); return this; } public MapControll add(Map<String,Object> map){ for (Map.Entry<String, Object> entry : map.entrySet()) { paramMap.put(entry.getKey(),entry.getValue()); } return this; } public MapControll put(Map<String,Object> map){ return this.add(map); } public Map<String,Object> getMap(){ return paramMap; } } |
快速生成给map中放入key-value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package com.utils; import java.util.HashMap; import java.util.Map; public class MapParameter { //目标对象 private Map<String,Object> paramMap = new HashMap<>(); //私有构造 private MapParameter(){ } public static MapParameter getInstance(){ return new MapParameter(); } public MapParameter add(String key,Object value){ paramMap.put(key,value); return this; } public MapParameter addId(Object value){ paramMap.put("id",value); return this; } public MapParameter add(Map<String,Object> map){ for (Map.Entry<String, Object> entry : map.entrySet()) { paramMap.put(entry.getKey(),entry.getValue()); } return this; } public Map<String,Object> getMap(){ return paramMap; } } |
MD5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package com.utils; import org.springframework.util.DigestUtils; public class MD5Utils { //盐 private static final String salt = "MedSystemManager###$$@@"; public static String getMD5(String string){ String val = string+salt; return DigestUtils.md5DigestAsHex(val.getBytes()); } public static void main(String[] args) { System.out.println(getMD5("123456")); } } |
利用监听器,获取全局路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package com.utils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class PathInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //获取全局路径,存放到request中 String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; request.setAttribute("basePath",basePath); 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 { } } |
前端
引入layui
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--注意引入jstl-impljar包--%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>管理员界面</title> <meta name="keywords" content="layuimini,layui,layui模板,layui后台,后台模板,admin,admin模板,layui mini"> <meta name="description" content="layuimini基于layui的轻量级前端后台管理框架,最简洁、易用的后台框架模板,面向所有层次的前后端程序,只需提供一个接口就直接初始化整个框架,无需复杂操作。"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="Access-Control-Allow-Origin" content="*"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <link rel="icon" href="images/favicon.ico"> <link rel="stylesheet" href="${basePath}static/lib/layui-src/css/layui.css" media="all"> <link rel="stylesheet" href="${basePath}static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all"> <link rel="stylesheet" href="${basePath}static/css/layuimini.css?v=2.0.1" media="all"> <link rel="stylesheet" href="${basePath}static/css/themes/default.css" media="all"> <link rel="stylesheet" href="${basePath}static/css/public.css" media="all"> <!--[if lt IE 9]> <script src="${basePath}static/js/html5.min.js"></script> <script src="${basePath}static/js/respond.min.js"></script> <![endif]--> <style id="layuimini-bg-color"> </style> </head> <body class="layui-layout-body layuimini-all"> <div class="layui-anim layui-anim-down"> <h2>登录成功,欢迎您~</h2> </div> <a href="medicList/" class="layui-btn">进入药品页面</a> <a href="user" class="layui-btn">进入用户页面</a> <a href="${basePath}" class="layui-btn">返回登录</a> </div> <script src="${basePath}static/lib/layui-src/layui.js?<%=System.currentTimeMillis()%>" charset="utf-8"></script> <script src="${basePath}static/js/lay-config.js?v=2.0.0" charset="utf-8"></script> </body> </html> |
layui绑定按钮,发送ajax的demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%--注意引入jstl-impljar包--%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>用户管理界面</title> <meta name="keywords" content="layuimini,layui,layui模板,layui后台,后台模板,admin,admin模板,layui mini"> <meta name="description" content="layuimini基于layui的轻量级前端后台管理框架,最简洁、易用的后台框架模板,面向所有层次的前后端程序,只需提供一个接口就直接初始化整个框架,无需复杂操作。"> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="Access-Control-Allow-Origin" content="*"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <link rel="icon" href="images/favicon.ico"> <link rel="stylesheet" href="${basePath}static/lib/layui-src/css/layui.css" media="all"> <link rel="stylesheet" href="${basePath}static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all"> <link rel="stylesheet" href="${basePath}static/css/layuimini.css?v=2.0.1" media="all"> <link rel="stylesheet" href="${basePath}static/css/themes/default.css" media="all"> <link rel="stylesheet" href="${basePath}static/css/public.css" media="all"> <!--[if lt IE 9]> <script src="${basePath}static/js/html5.min.js"></script> <script src="${basePath}static/js/respond.min.js"></script> <![endif]--> <style id="layuimini-bg-color"> .layui-layout-body{ overflow: scroll; } </style> </head> <body id="body" class="layui-layout-body layuimini-all" overflow="scroll"> <div class="layui-anim layui-anim-down"> <h2>用户管理页面</h2> </div> <div class="layui-container layui-fluid"> <table class="layui-hide" id="user"></table> <div class="layui-row"> <div class="layui-col-xs6"> <div class="grid-demo grid-demo-bg1"> <form class="layui-form" action="${basePath}user/insertUser" method="post" name="user"> <input type="text" name="id" id="insertId" value="" placeholder="ID" class="layui-input" required="required"> <input type="text" name="name" placeholder="用户名" class="layui-input" required="required"> <input type="text" name="psd" placeholder="密码" class="layui-input" required="required"> <input type="text" name=remark placeholder="备注" class="layui-input"> <input type="text" name="iphone" placeholder="电话" class="layui-input"> <input type="text" name="address" placeholder="地址" class="layui-input"> <button type="button" class="layui-btn" lay-submit="" lay-filter="login">新增一个用户信息</button> </form> </div> </div> <div class="layui-col-xs6"> <div class="grid-demo"> <form class="layui-form" action="${basePath}user/insertUser" method="post" name="user"> <input type="text" name="id" id="updateId" value="" placeholder="ID" class="layui-input" required="required"> <input type="text" name="name" placeholder="用户名" class="layui-input" required="required"> <input type="text" name="psd" placeholder="密码" class="layui-input" required="required"> <input type="text" name=remark placeholder="备注" class="layui-input"> <input type="text" name="iphone" placeholder="电话" class="layui-input"> <input type="text" name="address" placeholder="地址" class="layui-input"> <button type="button" class="layui-btn" lay-submit="" lay-filter="update">修改某个用户信息</button> </form> </div> </div> </div> <hr class="layui-border-black"> <form class="layui-form" action="${basePath}user/deleteUser" method="post" name="user"> <input type="text" name="id" id="deleteId" value="" placeholder="ID" class="layui-input" required="required"> <button type="button" class="layui-btn layui-btn-danger" lay-submit="" lay-filter="delete">删除一条用户信息</button> </form> <hr class="layui-border-black"> <a href="${basePath}medic">返回首页</a> </div> <script src="${basePath}static/lib/jquery-3.4.1/jquery-3.4.1.min.js"></script> <script src="${basePath}static/lib/layui-src/layui.js?<%=System.currentTimeMillis()%>" charset="utf-8"></script> <script src="${basePath}static/js/lay-config.js?v=2.0.0" charset="utf-8"></script> <script> layui.use(['table','jquery','form'],function(){ var table = layui.table, $=layui.jquery, form=layui.form; var size; var getList = function (){ $.ajax({ url:"${basePath}user/getUser", data: "", type:"GET", dataType:"json", success:function (data){ console.log(data); size=Object.keys(data).length; //渲染数据到table table.render({ elem: '#user' ,cols: [[ //标题栏 {field: 'id', title: 'ID', width: 80, sort: true} ,{field: 'name', title: '用户名', width: 120} ,{field: 'psd', title: '密码', width: 120} ,{field: 'remark', title: '备注', width: 120} ,{field: 'iphone', title: '电话', width: 120} ,{field: 'address', title: '地址', minwidth: 150} ]], data:data, even: true, limit:1000, skin:"line" }) //渲染数据到提交表单 $('#insertId').val(size+1); } }); }; getList(''); //绑定事件,新增和删除,修改按钮 form.on("submit(login)",function (data){ $.ajax({ url:"${basePath}user/insertUser", type:"POST", dataType: "json", data:data.field, success:function (data){ layer.msg(data.msg); //刷新数据 location.reload(); } }); }) form.on("submit(update)",function (data){ $.ajax({ url:"${basePath}user/updateUser", type:"POST", dataType:"json", data:data.field, success:function (data){ if(data.code==1000){ layer.msg(data.msg); location.reload(); } if(data.code ==1001){ layer.msg(data.msg); } } //错误回调方法则是异常处理的部分,这不做处理 }) }) form.on("submit(delete)",function (data){ $.ajax({ url:"${basePath}user/deleteUser", type:"POST", dataType:"json", data:data.field, success:function (data){ if(data.code==1000){ layer.msg(data.msg); location.reload(); } if(data.code==1001){ layer.msg(data.msg); } } }) }) }) </script> </body> </html> |
大概就这么多,本地导入static文件后,直接复制上面的index首页就可以开始进行layui开发了,很方便。
后端
四个配置文件
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!--整合spring的几个步骤 1、配置前端控制器DispatcherServlet 加载Spring-mvc.xml配置文件,还有启动很多东西,加载spring容器 2、配置Spring上下文监听器:加载applicationContext.xml文件 3、配置编码过滤器:解决编码问题 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--上下文参数--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--配置spring上下文监听--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> |
spring配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 相当于引入数据库配置文件--> <context:property-placeholder location="classpath:db.properties" /> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- mybatis相关配置--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <property name="mapperLocations"> <list> <value>classpath:com/dao/*.xml</value> </list> </property> <!--配置分页插件--> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageInterceptor"> <property name="properties"> <value> helperDialect=mysql </value> </property> </bean> </array> </property> </bean> <!-- 配置mybatis扫描--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.dao"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> </beans> |
springmvc配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--包扫描,如果扫描到@controller、@Service、@Repository、@Component则会自动注册为bean--> <context:component-scan base-package="com.controller,com.utils,com.service" /> <!-- @NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)--> <mvc:annotation-driven/> <!-- 配置url拼接--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/page/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 静态资源权限开放--> <mvc:default-servlet-handler /> <!-- 拦截器配置--> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**/*"/> <bean class="com.utils.PathInterceptor" /> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**/*"/> <mvc:exclude-mapping path="/login"/> <mvc:exclude-mapping path="/logout"/> <mvc:exclude-mapping path="/captcha/*"/> <mvc:exclude-mapping path="/static/**"/> <bean class="com.utils.PermissionInterceptor"/> </mvc:interceptor> </mvc:interceptors> </beans> |
mybatis的配置文件
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 添加日志,STDOUT_LOGGING是标准日志。mybatis自带的--> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> </configuration> |
引入本地的lib中的jar包就可以进行开发了,不过这些我应该用不到了ssm配置太烦了,有springboot孰不喜欢呢?