Layui框架实现用户系统-----增删改查

前言

在我前几篇的文章中,已经如何实现属性菜单及选项卡的使用,接下来就带大家去实现在layui框架界面实现增删改查(针对用户进行)

一,相关的配置准备

了解layui官网的框架,方便在后面使用并提高效率, 在Laui旧官网的复制相对应的展示的后台界面 

1.1 在页面前端显示的总的数据 ,需要更加规范,所以我们在数据库中就已经编写相对应的字段名转文字显示,也就是将表中的name字段内容显示为中文


SELECT
	u.*,
	(CASE
	WHEN u.rid = '1' THEN
	'管理员' 
	WHEN u.rid = '2' THEN
	'发起者' 
	WHEN u.rid = '3' THEN
	'审批员' 
	WHEN u.rid = '4' THEN
	'参与者' 
	WHEN u.rid = '5' THEN
	'会议管理员' ELSE '其他' 
END 
	) rname 
FROM
`t_oa_user` u

 如上图所示在数据展示的时候,就知道它所的职位与权限是什么。

1.1,编写Userdao,来进行具体数据需要什么操作,到时在servlet调用相对应的方法即可,

会发现在查询语句中正是我们在数据库编译的sql语句

/**
  		 * 带模糊查询方法
  		 *
  		 **/
  		public List<Map<String, Object>> userRole(User user, PageBean pageBean) throws Exception {
  			String sql = "SELECT\r\n" + 
  					"	u.*,\r\n" + 
  					"	(\r\n" + 
  					"CASE\r\n" + 
  					"	WHEN u.rid = '1' THEN\r\n" + 
  					"	'管理员' \r\n" + 
  					"	WHEN u.rid = '2' THEN\r\n" + 
  					"	'发起者' \r\n" + 
  					"	WHEN u.rid = '3' THEN\r\n" + 
  					"	'审批员' \r\n" + 
  					"	WHEN u.rid = '4' THEN\r\n" + 
  					"	'参与者' \r\n" + 
  					"	WHEN u.rid = '5' THEN\r\n" + 
  					"	'会议管理员' ELSE '其他' \r\n" + 
  					"END \r\n" + 
  					"	) rname \r\n" + 
  					"FROM\r\n" + 
  					"	`t_oa_user` u where 1=1";
  			String name = user.getName();
  			if (StringUtils.isNotBlank(name))
  				sql += " and name like '%" + name + "%'";
  			return super.executeQuery(sql, pageBean);
  		}
  		
  		
  		public int add(User user) throws Exception {
  			String sql = "insert into t_oa_user(name,loginName,pwd) values(?,?,?)";
  			return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd"});
  		}
  		
  		public int del(User user) throws Exception {
  			String sql = "delete from t_oa_user where id = ?";
  			return super.executeUpdate(sql, user, new String[] {"id"});
  		}
  		
  		public int edit(User user) throws Exception {
  			String sql = "update t_oa_user set name = ?,loginName = ?,pwd = ? where id = ?";
  			return super.executeUpdate(sql, user, new String[] {"name","loginName","pwd","id"});
  		}

2.1 后端servlet编写,这时候要用到一个R工具类,要用Layui框架就必须遵循它的回显数据原则,R这个工具类包含了显现数据格式化,这样在后端就不要参数要赋值的情况

R工具类:

package com.zking.util;
 
import java.util.HashMap;
 
/**
 * 
 * @author 兵
 *
 */
public class R extends HashMap{
	public R data(String key, Object value) {
		this.put(key, value);
		return this;
	}
	
	public static R ok(int code, String msg) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R error(int code, String msg) {
		R r = new R();
		r.data("success", false).data("code", code).data("msg", msg);
		return r;
	}
	
	public static R ok(int code, String msg,Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("data", data);
		return r;
	}
	
	public static R ok(int code, String msg, long count, Object data) {
		R r = new R();
		r.data("success", true).data("code", code).data("msg", msg).data("count", count).data("data", data);
		return r;
	}
}

servlet代码:

package com.zking.web;

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

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

import com.zking.dao.UserDao;
import com.zking.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.PageBean;
import com.zking.util.R;
import com.zking.util.ResponseUtil;

public class UserAction extends ActionSupport implements ModelDriver<User> {
   private User user = new User();//实体
	private UserDao userdao = new UserDao();//方法
	
		public void login(HttpServletRequest req, HttpServletResponse resp) {
           try {
        	  //调用方法
			User u = userdao.login(user);
			 //继承中ModelDriver已经封装依懒mvc中req接受前端传来的值,当前结果保存到该方法中
			ResponseUtil.writeJson(resp, u);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		}
		
		
		
		public void UserRole(HttpServletRequest req, HttpServletResponse resp) {
	           try {
	        	  PageBean pageBean =new PageBean();
	        	  pageBean.setRequest(req);
				//调用方法
	        	   List<Map<String, Object>> userRole = userdao.userRole(user, pageBean);
				   
				ResponseUtil.writeJson(resp, R.ok(0, "查询成功", pageBean.getTotal(), userRole  ));
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			}
		
		
		
		
		
		public void add(HttpServletRequest req, HttpServletResponse resp) {
	           try {
				//调用方法
             int add=userdao.add(user);
             
				ResponseUtil.writeJson(resp, 
						            R.ok(0, "新增成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			}
		
		
		public void del(HttpServletRequest req, HttpServletResponse resp) {
	           try {
				//调用方法
          int del=userdao.del(user);
				ResponseUtil.writeJson(resp, 
						            R.ok(0, "删除成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			}
	
		
		
		public void edit(HttpServletRequest req, HttpServletResponse resp) {
	           try {
				//调用方法
          int edit=userdao.edit(user);
				ResponseUtil.writeJson(resp, 
						            R.ok(0, "修改成功"));
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			}
	//注册
		public void register(HttpServletRequest req, HttpServletResponse resp) {
			try {
				int register = userdao.register(user);
				//判断前端的值大于0 证明有值
				if (register > 0) {
					//回显ok 代表成功
					ResponseUtil.writeJson(resp, "OK");
				} else {
					//回显失败 代表失败
					ResponseUtil.writeJson(resp, "NO");
				}
	 
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}

	
	
	@Override
	public User getModel() {
		return user;
	}

}

显然代码发现,在实现后端servlet的时候,我们使用R工具类,来帮助我们来回显前端需要的数据

前端jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<%@include file="/common/header.jsp"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>后台的主界面</title>
<!-- 引入 layui.js -->
<script src="static/js/index.js"></script>
<style type="text/css">
.layui-tab-item{
	height: 100%;
}
</style>
</head>
<body>
	<div class="layui-layout layui-layout-admin">
		<div class="layui-header">
			<div class="layui-logo layui-hide-xs layui-bg-black">layout
				demo</div>
			<!-- 个人头像及账号操作 -->
			<ul class="layui-nav layui-layout-right">
				<li class="layui-nav-item layui-hide layui-show-md-inline-block">
		
					<a href="javascript:;"><img src="static/images/20200108151634_M44Az.jpeg"
						class="layui-nav-img"> 操作
				</a>
					<dl class="layui-nav-child">
						<dd>
							<a href="javascript:;">${user.name }</a>
						</dd>
				
						<dd>
									<a href="login.jsp">退出</a>
						</dd> 
				
					</dl>
				</li>
			</ul>
		</div>




		<div class="layui-side layui-bg-black">
			<div class="layui-side-scroll">
				<ul id="menu" class="layui-nav layui-nav-tree" lay-filter="menu">

				</ul>
			</div>
		</div>

		<div class="layui-body" style="height: 100%;">
			<div class="layui-tab" lay-filter="demo" style="height: 100%;"
				lay-allowclose="true">
				<ul class="layui-tab-title">
					<li class="layui-this" lay-id="11">网站设置</li>
				</ul>
				<div class="layui-tab-content" style="height: 100%;">
					<div class="layui-tab-item layui-show">内容1</div>
				</div>
			</div>
		</div>

		<div class="layui-footer">
			<!-- 底部固定区域 -->
		</div>
	</div>
</body>
</html>

2.2 我们已经将jsp界面代码与实现的代码实现分离封装js这样我们在jsp引入即可(是Layui的官网copy相对应的代码)需要根据自身代码修改一点内容

封装的js代码:

//将所需要的模块定义在此  用的时候赋值即可
var element,layer,util,$;
layui.use(['element', 'layer', 'util'], function(){
   element = layui.element
  ,layer = layui.layer
  ,util = layui.util
  ,$ = layui.$;

 $.ajax({
	 url:"permission.action?methodName=menus",
	dataType:'json',	
	success:function(data){
		console.log(data);
		var htmlStr='';
		$.each(data,function(i,n){
			//拼接一级菜单 开始标签
			htmlStr +='<li class="layui-nav-item layui-nav-itemed">';
			htmlStr +=' <a class="" href="javascript:;">'+n.text+'</a>';
			if(n.hasChildren){//判断是否有子标签
				var children=n.children//得到子标签的列表
				 htmlStr +='<dl class="layui-nav-child">';//拼接子标签 开始标签
		     
				$.each(children,function(index,nodel){//遍历子标签 
					 htmlStr += '<dd><a href="javascript:;" onclick="opentab(\''+nodel.text+'\',\''+nodel.attributes.self.url+'\',\''+nodel.id+'\')">'+nodel.text+'</a></dd>'
					 	console.log(nodel.attributes.self.url)
				})
				     htmlStr +='</dl>';//拼接子标签 结束标签
			}
			
			htmlStr +='</li>';	//拼接一级菜单 结束标签
		})
		$("#menu").html(htmlStr);
		element.render('menu');//渲染
		

	}
 })
  
});

//给子菜单添加函数接口  点击菜单生成相对应的选项卡
function opentab(title,content,id){//参数是二级菜单
   var $nodel=$('li[lay-id="'+id+'"]')
	
	if($nodel.length==0){//当选项卡的长度为0时,不再打开重复的选项卡
		element.tabAdd('demo', {
	        title: title//在选项卡展示的标题
	        ,content: "<iframe frameborder='0' src='"+content+"' style='height: 100%;width: 100%' scrolling='auto'></iframe> " //二级菜单text内容
	        ,id: id //二级菜单id
	      })
  }
  element.tabChange("demo",id);//点击左侧二级菜单右侧选项卡同步选上
	
}

2.3 在我们实现增加与修改,需要弹出一个页面来实现将数据显示前端(共用一个页面),所以我们来编写这个页面

增加修改jsp页面代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@include file="/common/header.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="static/js/system/userEdit.js"></script>
<title>用户新增</title>
</head>
<style>
.layui-form-select dl{
	max-height:150px;
}
</style>
<body>
<div style="padding:10px;">
    <form class="layui-form layui-form-pane" lay-filter="user">
        <input type="hidden" name="id"/>
        <div class="layui-form-item">
            <label class="layui-form-label">用户名称</label>
            <div class="layui-input-block">
                <input type="text" id="name" name="name" autocomplete="off" placeholder="请输入用户名" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">用户角色</label>
            <div class="layui-input-block">
                <select name="rid">
                    <option value="">---请选择---</option>
                    <option value="1">管理员</option>
                    <option value="2">发起者</option>
                    <option value="3">审批者</option>
                    <option value="4">参与者</option>
                    <option value="5">会议管理员</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录账号</label>
            <div class="layui-input-block">
                <input type="text" name="loginName" lay-verify="required" placeholder="请输入账号" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label">登录密码</label>
            <div class="layui-input-block">
                <input type="password" name="pwd" placeholder="请输入密码" autocomplete="off" class="layui-input">
            </div>
        </div>
    </form>
</div>
</body>
</html>

在进行修改的时候我们需要赋值给修改页面赋值内容,所以再编写一个Edit修改js来进行页面赋值内容,在jsp引入Edit引入。

Edit js:

let layer,form,$;
layui.use(['layer','form','jquery'],function(){
	layer=layui.layer,form=layui.form,$=layui.jquery;
	initData();
});

function initData(){
	console.log(parent.row);
	if(null!=parent.row){
	     //因为layui.each内部的逻辑问题导致的所以要先深拷贝一份然后再去val
	     //parent.row:表格行对象
	     form.val('user',$.extend({}, parent.row||{}));
	     $('#name').attr('readonly','readonly');
	}
}

function getData(){
    return form.val('user');
}

最后增删改查运行结果:

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Spring Boot是一个非常流行的Java框架,可以轻松地创建Web应用程序。Layui是一个流行的前端UI框架,可以帮助我们快速地创建漂亮的Web页面。在这里,我将向你展示如何使用Spring Boot和Layui实现基本的增删改查功能。 首先,我们需要创建一个Spring Boot项目。你可以使用Spring Initializr来创建一个新项目,也可以使用Eclipse或IntelliJ IDEA等IDE来创建一个新项目。 接下来,我们需要添加一些依赖项。在这个例子中,我们将使用Spring Data JPA来访问数据库。在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> ``` 我们还需要添加Spring Boot和Layui的依赖项。在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>layui</artifactId> <version>2.5.4</version> </dependency> <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.1.0</version> </dependency> ``` 接下来,我们需要配置数据库连接。在application.properties文件中添加以下代码: ``` spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect spring.h2.console.enabled=true ``` 在这里,我们使用H2内存数据库来简化示例。在实际应用程序中,你可能需要使用其他数据库,例如MySQL或PostgreSQL。 现在,我们将创建一个实体类来表示我们的数据表。在这个例子中,我们将创建一个简单的数据表,其中包含id,name和age字段。创建一个名为Person的类,并在其中添加以下代码: ```java @Entity @Table(name = "person") public class Person { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; private int age; // getters and setters } ``` 接下来,我们将创建一个Spring Data JPA存储库来访问数据库。创建一个名为PersonRepository的接口,并在其中添加以下代码: ```java @Repository public interface PersonRepository extends JpaRepository<Person, Long> { } ``` 现在我们已经设置好了数据访问层,我们将创建一个控制器来处理HTTP请求。创建一个名为PersonController的类,并在其中添加以下代码: ```java @Controller public class PersonController { @Autowired private PersonRepository personRepository; @GetMapping("/") public String index(Model model) { List<Person> persons = personRepository.findAll(); model.addAttribute("persons", persons); return "index"; } @GetMapping("/add") public String addForm(Model model) { return "add"; } @PostMapping("/add") public String addSubmit(@ModelAttribute Person person) { personRepository.save(person); return "redirect:/"; } @GetMapping("/edit/{id}") public String editForm(@PathVariable Long id, Model model) { Person person = personRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid person id:" + id)); model.addAttribute("person", person); return "edit"; } @PostMapping("/edit/{id}") public String editSubmit(@PathVariable Long id, @ModelAttribute Person person, BindingResult bindingResult) { if (bindingResult.hasErrors()) { person.setId(id); return "edit"; } personRepository.save(person); return "redirect:/"; } @GetMapping("/delete/{id}") public String delete(@PathVariable Long id) { personRepository.deleteById(id); return "redirect:/"; } } ``` 在这里,我们定义了五个方法来处理HTTP请求: - `index()` - 处理根路径请求,列出所有人员记录。 - `addForm()` - 处理添加人员记录请求,返回一个包含表单的页面。 - `addSubmit()` - 处理添加人员记录请求,将表单提交的数据保存到数据库中。 - `editForm()` - 处理编辑人员记录请求,返回一个包含表单的页面。 - `editSubmit()` - 处理编辑人员记录请求,将表单提交的数据更新到数据库中。 - `delete()` - 处理删除人员记录请求,从数据库中删除指定的记录。 现在我们需要创建HTML模板来呈现数据。创建一个名为index.html的文件,并在其中添加以下代码: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Person List</title> <link rel="stylesheet" type="text/css" href="/webjars/layui/2.5.4/css/layui.css"> <script type="text/javascript" src="/webjars/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="/webjars/layui/2.5.4/layui.js"></script> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <h2>Person List</h2> </div> </div> <div class="layui-row"> <div class="layui-col-md12"> <table class="layui-table"> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>Actions</th> </tr> </thead> <tbody> <tr th:each="person : ${persons}"> <td th:text="${person.id}"></td> <td th:text="${person.name}"></td> <td th:text="${person.age}"></td> <td> <button class="layui-btn layui-btn-xs" onclick="location.href='/edit/'+${person.id}">Edit</button> <button class="layui-btn layui-btn-danger layui-btn-xs" onclick="location.href='/delete/'+${person.id}">Delete</button> </td> </tr> </tbody> </table> </div> </div> <div class="layui-row"> <div class="layui-col-md12"> <button class="layui-btn" onclick="location.href='/add'">Add Person</button> </div> </div> </div> </body> </html> ``` 这个模板使用Thymeleaf作为模板引擎,并使用Layui来创建漂亮的表格和按钮。它列出了所有人员记录,并提供了添加,编辑和删除记录的链接。 接下来,我们需要创建一个名为add.html的文件,其中包含添加人员记录的表单。添加以下代码: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Add Person</title> <link rel="stylesheet" type="text/css" href="/webjars/layui/2.5.4/css/layui.css"> <script type="text/javascript" src="/webjars/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="/webjars/layui/2.5.4/layui.js"></script> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <h2>Add Person</h2> </div> </div> <div class="layui-row"> <div class="layui-col-md12"> <form class="layui-form" method="post" action="/add"> <div class="layui-form-item"> <label class="layui-form-label">Name:</label> <div class="layui-input-block"> <input type="text" name="name" required lay-verify="required" placeholder="Enter name" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">Age:</label> <div class="layui-input-block"> <input type="text" name="age" required lay-verify="required" placeholder="Enter age" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">Submit</button> <button type="reset" class="layui-btn layui-btn-primary">Reset</button> </div> </div> </form> </div> </div> </div> </body> </html> ``` 这个模板使用Layui创建一个包含name和age字段的表单。当用户提交表单时,它将数据发送到服务器上的/add路由。 接下来,我们需要创建一个名为edit.html的文件,其中包含编辑人员记录的表单。添加以下代码: ```html <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Edit Person</title> <link rel="stylesheet" type="text/css" href="/webjars/layui/2.5.4/css/layui.css"> <script type="text/javascript" src="/webjars/jquery/3.1.0/jquery.min.js"></script> <script type="text/javascript" src="/webjars/layui/2.5.4/layui.js"></script> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <h2>Edit Person</h2> </div> </div> <div class="layui-row"> <div class="layui-col-md12"> <form class="layui-form" method="post" th:action="@{'/edit/'+${person.id}}" th:object="${person}"> <div class="layui-form-item"> <label class="layui-form-label">Name:</label> <div class="layui-input-block"> <input type="text" name="name" required lay-verify="required" th:value="${person.name}" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">Age:</label> <div class="layui-input-block"> <input type="text" name="age" required lay-verify="required" th:value="${person.age}" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="formDemo">Submit</button> <button type="reset" class="layui-btn layui-btn-primary">Reset</button> </div> </div> </form> </div> </div> </div> </body> </html> ``` 这个模板使用Layui创建一个包含name和age字段的表单,并将表单数据预填充为当前记录的值。当用户提交表单时,它将数据发送到服务器上的/edit/{id}路由。 最后,我们需要为我们的应用程序创建一个入口点。创建一个名为Application的类,并在其中添加以下代码: ```java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 现在我们已经设置好了我们的应用程序,运行它并访问http://localhost:8080/,你应该能够看到一个包含所有人员记录的表格,以及添加,编辑和删除记录的链接。 这就是使用Spring Boot和Layui实现网页上增删改查的基本步骤。当然,你可以扩展它以满足你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Doll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值