用户登录实验
2018-03-06 23:23
155 查看
本实验完成用户管理功能。用户在登录页面输入账号进行登录,如果验证通过则跳转到用户列表展示页面,验证失败跳转到失败页面。用户管理实验包括对用的增删改查的操作;该实验涉及到主从表的内容,包含主表用户表和从表用户详细信息表。此外,本实验的前端样式使用bootstrap,表格使用datatables.js。
通过用户管理实验,完整的介绍了Spring MVC框架从视图-控制器-模型的整个流程。借此,熟悉从前端数据请求到后台数据的持久化的运转逻辑,有助于加强对MVC思想的掌握。
第一步、编写用户列表前端页面代码
在jsp的demo目录下添加queryuser.jsp文件。queryuser.jsp文件用来作为该项目的前端页面展示,也即view视图层。下面添加静态页面代码。复制如下代码到queryuser.jsp文件中。
接下来我们添加用户的新增页面在demo文件夹下添加adduser.jsp文件。该页面用来增加新的用户。复制如下代码:
至此,前端展示界面完成。但是,还不能进行功能处理,需要接下来的逻辑处理。
第二步 、编写控制层
在src的controller文件夹下创建UserController的Java类。
UserController类代码如下:
在UserController类中添加用户管理的一些方法,包括对用户的增删改查和页面跳转等。首先添加查询方法代码如下:
因为用到了用户信息,所以,我们需要首先添加一个用户信息的javabean类,里面封装了用户属性及操作属性的方法。在data文件夹下创建User类。
在User类中编写操作用户属性的代码,代码如下:
接着,创建用户信息的javabean文件UserArchive类。代码如下:
在controller层我们需要调用service层来处理业务逻辑。所以,我们在service文件夹下创建IUserService接口类。在该类中添加查询用户信息接口findAll,代码如下:
接下来需要实现该接口类,完成业务逻辑处理。在impl文件夹下创建实现类UserServiceImpl类。在该类中首先需要实现IUserService接口。然后,编写findAll方法来进行事务处理。代码如下:
在findAll()方法中我们需要完成获取用户信息的逻辑。在这里我们需要调用持久层,即dao层完成查询数据库的任务。下面我们来编写供findAll方法调用的dao层代码。在dao文件夹下创建UserMapper接口类。
UserMapper类代码如下:
在UserMapper接口类中我们定义了findAll方法,调用这个方法将会从下面要写的UserMapper.xml中查询出用户数据。接下来,我们需要编写SQL语句去数据库查询用户信息。在dao文件夹下创建UserMapper.xml文件。在该文件中复制如下查询代码:
至此,我们就完成了持久层代码编写。这样,我们就可以在接口实现类UserServiceImpl中调用dao层方法完成数据查询。UserServiceImpl类完成调用dao层的代码如下红色字体代码:
由于上面使用User这个类,所以我们需要引入如下类才能完成编译,代码如下:
到这里,我们就完成了service层的方法调用。这下我们就可以回到前面的controller层来调用service层的逻辑代码了。在controller的query方法中添加调用service方法的代码如下红色字体:
在调用service代码时,用到了userService变量,该变量是IUserService类型的,我们需要在方法的一开始进行声明,代码如下红色字体:
这样,controller层查询的流程控制就完成了,引入如下类,完成编译:
接下来我们需要建立数据库。在项目根目录建立sql文件夹,在该文件夹里面创建user.sql文件。
在demo.sql文件中添加如下代码:
为了完成前端用户数据展示,我们还需要添加一些前端交互事件,在jsp目录下创建skin文件夹,以及下面包含的css和js文件夹。
在js文件夹下创建用户列表的js文件—queryuser.js,代码如下:
根据前端引入的文件,我们需要额外在css文件下添加bootstrap.css和datatables.css,在js文件夹下添加datatables.js和jquery.js。
至此,用户展示列表完成,启动tomcat输入:http://localhost:8080/mvc_demo/jsp/demo/queryuser.jsp进入登录页面,输入正确的登录信息,点击登录。
至此,我们完成了用户的登录及登录成功后用户列表展示。以上根据springmvc思想介绍了用户管理展示列表的实现方法。按照这个思路我们可以完成剩余功能的实现。以下直接给出剩余步骤的实现代码:
首先,完善dao层。UserMapper.java代码如下:
引入相应的类如下:
完善UserMapping.xml代码:
ArchiveMapper.java代码如下:
引入相应的类如下:
ArchiveMapper.xml代码如下:
完成了dao层的代码后,接下来我们完善service层代码。首先,完善接口类IUserService.java代码如下:
引入相应的类如下:
接着,完善接口实现类UserServiceImpl.java代码如下:
引入相应的类如下:
然后,我们完成controller层UserController.java的代码如下:
引入相应的类如下:
最后,完成前端js代码。queryuser.js如下:
添加adduser.js文件,并赋值代码如下:
通过用户管理实验,完整的介绍了Spring MVC框架从视图-控制器-模型的整个流程。借此,熟悉从前端数据请求到后台数据的持久化的运转逻辑,有助于加强对MVC思想的掌握。
第一步、编写用户列表前端页面代码
在jsp的demo目录下添加queryuser.jsp文件。queryuser.jsp文件用来作为该项目的前端页面展示,也即view视图层。下面添加静态页面代码。复制如下代码到queryuser.jsp文件中。
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html";charset=UTF-8"> <title>用户详细信息</title> <!-- 引入css文件 --> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/skin/css/bootstrap.css"> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/skin/css/datatables.css"> <!-- 引入js文件 --> <script type="text/javascript" src="<%=request.getContextPath()%>/skin/js/jquery.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/skin/js/datatables.js"></script> <script type="text/javascript" src="<%=request.getContextPath()%>/skin/js/queryuser.js"></script> </head> <body class="container"> <div class="input-group" style="margin-top:10px;"> <div class="input-group col-xs-6 col-md-6"> <input type="text" id="searchVal" class="form-control" style="width:200px;" placeholder="请输入用户ID"> <span class="input-group-btn"> <button class="btn btn-default" type="button" id="search"> 搜索 </button> </span> </div> </div> <div class="btn-group pull-right" style="margin-top:-35px;padding-bottom:5px;"> <button type="button" class="btn btn-primary" id="addusers">新增</button> </div> <div> <table id="userList" class="table table-bordered table-hover"> <thead> <tr> <th width="20">用户ID</th> <th width="20">名称</th> <th width="20">昵称</th> <th width="20">是否管理员</th> <th width="20">操作</th> </tr> </thead> </table> </div> </body> <script type="text/javascript"> var context = "<%=request.getContextPath()%>"; </script> </html> |
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%> <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>新增用户</title> <!-- 引入css文件 --> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/skin/css/bootstrap.css"> <link rel="stylesheet" type="text/css" href="<%=request.getContextPath() %>/skin/css/datatables.css"> <!-- 引入js文件 --> <script type="text/javascript" src="<%=request.getContextPath() %>/skin/js/jquery.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/skin/js/adduser.js"></script> </head> <body> <div class="container" style="margin-top:60px;"> <form id="saveForm" name="saveForm" class="form-horizontal pull-left" onsubmit="return false"style="width:600px;"> <input name="id" value="${usersInfo.id}" type="hidden"> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">用户ID:</label> <div class="col-xs-9 col-md-9"> <input id="user_id" name="userId" type="text" class="form-control" value="${usersInfo.userId}" placeholder="用户ID不能为空"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">姓名:</label> <div class="col-xs-9 col-md-9"> <input id="user_name" name="userName" type="text" class="form-control" value="${usersInfo.userName }" placeholder="名字不能为空"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">昵称:</label> <div class="col-xs-9 col-md-9"> <input id="user_nickname" name="nickname" type="text" class="form-control" value="${usersInfo.nickname }" placeholder="请填写昵称"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">密码:</label> <div class="col-xs-9 col-md-9"> <input id="user_password" name="password" type="text" class="form-control" value="${usersInfo.password }" placeholder="密码不能为空"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">是否管理员:</label> <div class="col-xs-9 col-md-9"> <div class="radio" id="user_isAdmin"> <label> <input type="radio" name="isAdmin" value="Y">是 </label> <label> <input type="radio" name="isAdmin" value="N" checked>否 </label> </div> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">性别:</label> <div class="col-xs-9 col-md-9"> <div class="radio" id="gender"> <label> <input type="radio" name="archive.gender" id="gender1" value="M" checked>男 </label> <label> <input type="radio" name="archive.gender" id="gender2" value="F">女 </label> </div> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">生日:</label> <div class="col-xs-9 col-md-9"> <input id="user_birthday" name="archive.birthday" type="text" class="form-control" value="${userArchiveInfo.birthday }" placeholder="请填写生日"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">学历:</label> <div class="col-xs-9 col-md-9"> <div class="radio" id="educations"> <label> <input type="radio" name="archive.education" id="education1" value="0" checked>本科 </label> <label> <input type="radio" name="archive.education" id="education2" value="1">硕士 </label> <label> <input type="radio" name="archive.education" id="education3" value="2">博士 </label> </div> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label">学校:</label> <div class="col-xs-9 col-md-9"> <input name="archive.school" type="text" class="form-control" value="${userArchiveInfo.school }" placeholder="请填写学校"> </div> </div> <div class="form-group"> <label class="col-xs-3 col-md-3 control-label"></label> <div class="col-xs-9 col-md-9"> <button type="button" class="btn btn-primary" id="saveBtn">保存</button> <button type="button" class="btn" id="returnBtn">返回</button> </div> </div> </form> </div> </body> <script type="text/javascript"> var context = "<%=request.getContextPath()%>"; var addnew = '<%=request.getParameter("addnew") %>'; var flags = '${flags}'; var user_isAdmin = '${usersInfo.isAdmin}'; var user_gender = '${userArchiveInfo.gender}'; var user_education = '${userArchiveInfo.education}'; </script> </html> |
第二步 、编写控制层
在src的controller文件夹下创建UserController的Java类。
UserController类代码如下:
@Controller @RequestMapping("/demo/user") publicclassUserController{ } |
//查询用户信息 @RequestMapping("/query") @ResponseBody public Map query(){ returnnull; } |
在User类中编写操作用户属性的代码,代码如下:
@Table(name = "demo_user") publicclass User implements Serializable { @Id private Integer id; @Column(name = "user_id") private String userId; @Column(name = "user_name") private String userName; private String nickname; private String password; @Column(name = "is_admin") private String isAdmin = "N"; @Transient private UserArchive archive; public Integer getId() { returnid; } publicvoid setId(Integer id) { this.id = id; } public String getUserId() { returnuserId; } publicvoid setUserId(String userId) { this.userId = userId; } public String getUserName() { returnuserName; } publicvoid setUserName(String userName) { this.userName = userName; } public String getNickname() { returnnickname; } publicvoid setNickname(String nickname) { this.nickname = nickname; } public String getPassword() { returnpassword; } publicvoid setPassword(String password) { this.password = password; } public String getIsAdmin() { returnisAdmin; } publicvoid setIsAdmin(String isAdmin) { this.isAdmin = isAdmin; } public UserArchive getArchive() { returnarchive; } publicvoid setArchive(UserArchive archive) { this.archive = archive; } } |
@Table(name = "demo_archives") publicclass UserArchive implements Serializable { @Id private Integer id; private String gender; private String birthday; private String education; private String school; private String email; @Transient private User user; public String getGender() { returngender; } publicvoid setGender(String gender) { this.gender = gender; } public String getBirthday() { returnbirthday; } publicvoid setBirthday(String birthday) { this.birthday = birthday; } public String getEducation() { returneducation; } publicvoid setEducation(String education) { this.education = education; } public Integer getId() { returnid; } publicvoid setId(Integer id) { this.id = id; } public User getUser() { returnuser; } publicvoid setUser(User user) { this.user = user; } public String getSchool() { returnschool; } publicvoid setSchool(String school) { this.school = school; } } |
public interface IUserService { /** * 获取用户信息 */ public List<User> findAll(); } |
@Service("userService") publicclass UserServiceImpl implements IUserService{ /** * 查询用户信息 * @return */ public List<User> findAll(){ returnnull; } } |
UserMapper类代码如下:
import com.inspur.demo.data.User; publicinterface UserMapper { /** * 获取用户所有信息 */ public List<User> findAll(); } |
<?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.inspur.demo.dao.UserMapper"> <resultMap type="com.inspur.demo.data.User" id="userResultMap"> </resultMap> <select id="findAll" resultMap="userResultMap"> SELECT * FROM demo_user </select> </mapper> |
@Service("userService") publicclass UserServiceImpl implements IUserService{ @Autowired private UserMapper userMapper; /** * 查询用户信息 * @return */ public List<User> findAll(){ returnuserMapper.findAll(); } } |
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.inspur.demo.dao.UserMapper; import com.inspur.demo.data.User; import com.inspur.demo.service.IUserService; |
//查询用户信息 @RequestMapping("/query") @ResponseBody public Map query(){ List<User> userList= userService.findAll(); Map<String,Object> map = new HashMap<String,Object>(); int dataTotal = userList.size(); map.put("aaData", userList); map.put("iTotalDisplayRecords", dataTotal); map.put("iTotalRecords", dataTotal); returnmap; } |
publicclass UserController{ @Autowired private IUserService userService; //查询用户信息 @RequestMapping("/query") @ResponseBody public Map query(){ List<User> userList = userService.findAll(); Map<String,Object> map = new HashMap<String,Object>(); intdataTotal = userList.size(); map.put("aaData", userList); map.put("iTotalDisplayRecords", dataTotal); map.put("iTotalRecords", dataTotal); returnmap; } |
import java.util.HashMap; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.inspur.demo.data.User; import com.inspur.demo.service.IUserService; |
在demo.sql文件中添加如下代码:
droptable if exists demo_archives; droptable if exists demo_user ; ####用户##### CREATETABLE demo_user ( id intNOTNULL AUTO_INCREMENT, user_id varchar(30) NOTNULL, user_name varchar(30) NOTNULL, nickname varchar(30), password varchar(128) NOTNULL, is_admin varchar(1) NOTNULLdefault'N' comment 'N: 普通用户 Y: 管理员', primarykey (id) )DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci; ######用户档案## CREATETABLE demo_archives ( id intNOTNULL, gender varchar(1) NOTNULL comment 'M:男 F:女', birthday varchar(15), education varchar(1) comment '学历', school varchar(30) comment '学校', primarykey (id), CONSTRAINT demo_archives_fk1 foreignkey (id) references demo_user(id) )DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci; |
在js文件夹下创建用户列表的js文件—queryuser.js,代码如下:
var oTable; $(document).ready(function(){ //初始化表格 initTable(); }); function initTable(){ oTable = $("#userList").dtable({ //显示“正在加载”的图标 "processing":true, "ajax":context + "/service/demo/user/query", "serverSide":true, "bPaginate": false, "ordering":false, "columns":[ {"data":"userId"}, {"data":"userName"}, {"data":"nickname"}, {"data":"isAdmin"}, {"data":"id"}, ], "columnDefs":[ { "targets":3, "data":"isAdmin", "render":function(data,type,full){ if(data !="" || data != null){ if(data == "Y"){ data = "是"; } if (data == "N"){ data = "否"; } } return data; } }, { "targets":4, "data":"id", "render":function(data,type,full){ return'<div><a id="edit" onclick="forUpdate('+"'"+ full.id+ "'"+')" href="#">编辑</a>'+'<span>  </span>' +'<a id="del" onclick="del('+"'"+ full.id+ "'"+')" href="#">删除</a></div>' } } ] }); return oTable; } |
至此,用户展示列表完成,启动tomcat输入:http://localhost:8080/mvc_demo/jsp/demo/queryuser.jsp进入登录页面,输入正确的登录信息,点击登录。
至此,我们完成了用户的登录及登录成功后用户列表展示。以上根据springmvc思想介绍了用户管理展示列表的实现方法。按照这个思路我们可以完成剩余功能的实现。以下直接给出剩余步骤的实现代码:
首先,完善dao层。UserMapper.java代码如下:
publicinterface UserMapper { /** * 获取用户所有信息 */ public List<User> findAll(); /** * 保存用户信息 */ publicint save(User user); /** * 查询用户信息 */ public User findOne(intid); /** * 根据用户名称查询 */ public User getByUserName(String name); /** * 根据用户ID查询 */ public List<User> findUserByUserId(String userId); /** * 删除用户 */ publicvoid delete( 1fe0d intid); /** * 更新用户数据 */ publicvoid update(User user); /** * 获取新增用户的ID */ publicint getNewId(); } |
import java.util.List; import com.inspur.demo.data.User; |
<?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.inspur.demo.dao.UserMapper"> <resultMap type="com.inspur.demo.data.User" id="userResultMap"> </resultMap> <select id="findAll" resultMap="userResultMap"> SELECT * FROM demo_user </select> <insert id="save" parameterType="com.inspur.demo.data.User"> INSERT INTO demo_user (user_id,user_name,nickname,password,is_admin) VALUES (#{userId},#{userName},#{nickname},#{password},#{isAdmin}) <selectKey keyProperty="id" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> </insert> <select id="findOne" parameterType="int" resultMap="userResultMap"> SELECT * FROM demo_user WHERE id=#{id} </select> <select id="getByUserName" parameterType="string" resultMap="userResultMap"> SELECT * FROM demo_user WHERE user_name=#{userName} </select> <select id="findUserByUserId" parameterType="string" resultMap="userResultMap"> SELECT * FROM demo_user WHERE user_id=#{userId} </select> <delete id="delete" parameterType="int"> DELETE FROM demo_user WHERE id=#{id} </delete> <update id="update" parameterType="com.inspur.demo.data.User"> UPDATE demo_user SET user_id=#{userId},user_name=#{userName},nickname=#{nickname},password=#{password},is_admin=#{isAdmin} WHERE id=#{id} </update> </mapper> |
publicinterface ArchiveMapper { /** * 保存用户档案信息 */ publicvoid save(UserArchive userArchive); /** * 查询用户信息 */ public UserArchive findOne(intid); /** * 删除用户 */ publicvoid delete(intid); /** * 更新用户数据 */ publicvoid update(UserArchive userArchive); } |
import com.inspur.demo.data.UserArchive; |
<?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.inspur.demo.dao.ArchiveMapper"> <resultMap type="com.inspur.demo.data.UserArchive" id="userArchiveResultMap"> </resultMap> <insert id="save" parameterType="com.inspur.demo.data.UserArchive"> INSERT INTO demo_archives (id,gender,birthday,education,school) VALUES (#{id},#{gender},#{birthday},#{education},#{school}) </insert> <select id="findOne" parameterType="int" resultMap="userArchiveResultMap"> SELECT * FROM demo_archives WHERE id=#{id} </select> <delete id="delete" parameterType="int"> DELETE FROM demo_archives WHERE id=#{id} </delete> <update id="update" parameterType="com.inspur.demo.data.UserArchive"> UPDATE demo_archives SET id=#{id},gender=#{gender},birthday=#{birthday},education=#{education},school=#{school} WHERE id=#{id} </update> </mapper> |
publicinterface IUserService { /** * 获取用户信息 */ public List<User> findAll(); /** * 保存用户信息 */ publicvoid save(User user); /** * 根据用户名字查询用户信息 */ public User getByUserName(String name); /** * 查询用户信息 */ public User findOne(intid); /** * 根据用户ID查询 */ public List<User> findUserByUserId(String userId); /** * 删除用户 * */ publicvoid delete(intid); /** * 更新用户信息 */ publicvoid update(User user); /** * 根据id查询用户档案信息 */ public UserArchive findArchive(intid); } |
import java.util.List; import com.inspur.demo.data.User; import com.inspur.demo.data.UserArchive; |
@Service("userService") publicclass UserServiceImpl implements IUserService{ @Autowired private UserMapper userMapper; @Autowired private ArchiveMapper archiveMapper; /** * 查询用户信息 * @return */ public List<User> findAll(){ List<User> bb= userMapper.findAll(); returnbb; } /** * 保存用户信息 */ @Transactional("mybatisTransactionManager") publicvoid save(User user){ //保存用户信息 userMapper.save(user); //保存用户档案信息 user.getArchive().setId(user.getId()); archiveMapper.save(user.getArchive()); } /** * 根据用户名字查询用户信息 */ public User getByUserName(String name){ returnuserMapper. getByUserName (name); } /** * 查询用户信息 * */ public User findOne(intid){ returnuserMapper.findOne(id); } /** * 根据用户ID查询 */ public List<User> findUserByUserId(String userId){ returnuserMapper.findUserByUserId(userId); } /** * 删除用户 */ @Transactional("mybatisTransactionManager") publicvoid delete(intid){ //删除用户档案信息 archiveMapper.delete(id); //删除用户信息 userMapper.delete(id); } /** * 更新用户信息 * */ //@Transactional("mybatisTransactionManager") publicvoid update(User user) { //更新用户信息 userMapper.update(user); //更新用户档案信息 user.getArchive().setId(user.getId());; archiveMapper.update(user.getArchive()); } /** * 根据id查询用户档案信息 */ public UserArchive findArchive(intid) { UserArchive aa = archiveMapper.findOne(id); returnaa; } } |
import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.inspur.demo.dao.ArchiveMapper; import com.inspur.demo.dao.UserMapper; import com.inspur.demo.data.User; import com.inspur.demo.data.UserArchive; import com.inspur.demo.service.IUserService; |
@Controller @RequestMapping("/demo/user") publicclass UserController { @Autowired private IUserService userService; //返回主页 @RequestMapping("/home") public String homePage(){ return"/demo/queryuser"; } //查询用户信息 @RequestMapping("/query") @ResponseBody public Map query(){ List<User> userList = userService.findAll(); Map<String,Object> map = new HashMap<String,Object>(); intdataTotal = userList.size(); map.put("aaData", userList); map.put("iTotalDisplayRecords", dataTotal); map.put("iTotalRecords", dataTotal); returnmap; } //保存用户信息 @RequestMapping("/save") public String save(User user){ userService.save(user); return"redirect:/service/demo/user/home"; } //查询用户 @RequestMapping("search") @ResponseBody public Map search(@RequestParam(value="userId",required=false) String userId){ List<User> user = userService.findUserByUserId(userId); Map<String,Object> map = new HashMap<String,Object>(); intdataTotal = user.size(); map.put("aaData", user); map.put("iTotalRecords", dataTotal); map.put("iTotalDisplayRecords", dataTotal); returnmap; } //根据用户名查询用户信息 @RequestMapping("getUserByName") @ResponseBody public Map getUserByName(@RequestParam(value="name",required=false)String name){ User user = userService.getByUserName(name); Map<String,Object> map = new HashMap<String,Object>(); map.put("userInfo", user); returnmap; } //删除用户 @RequestMapping("del") @ResponseBody publicvoid del(@RequestParam(value="id",required=false) intid){ userService.delete(id); } // 更新用户信息 @RequestMapping("update") public String update(User user) { userService.update(user); return"redirect:/service/demo/user/home"; } //跳转到编辑页面 @RequestMapping("edits") public ModelAndView edits(@RequestParam(value="id",required=false) intid,@RequestParam(value="isOrdinary",required=false) String isOrdinary) { User users = userService.findOne(id); UserArchive userArchive = userService.findArchive(id); Map<String, Object> map = new HashMap<String, Object>(); map.put("usersInfo", users); map.put("userArchiveInfo", userArchive); map.put("flags", "edit"); map.put("isOrdinary", isOrdinary); returnnew ModelAndView("/demo/adduser", map); } } |
import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.inspur.demo.data.User; import com.inspur.demo.data.UserArchive; import com.inspur.demo.service.IUserService; |
var oTable; $(document).ready(function(){ //初始化表格 initTable(); $("#addusers").on("click",function(){ window.location.href=context+"/jsp/demo/adduser.jsp?addnew=Y"; }); $("#search").on("click",function(){ var tmp = $("#searchVal").val(); query(tmp); }); //回车查询事件 $("#searchVal").keydown(function(event) { if (event.keyCode == 13) { var srcName = $("#searchVal").val(); query(srcName); } }); }); function initTable(){ oTable = $("#userList").dtable({ //显示“正在加载”的图标 "processing":true, "ajax":context + "/service/demo/user/query", "serverSide":true, "bPaginate": false, "ordering":false, "columns":[ {"data":"userId"}, {"data":"userName"}, {"data":"nickname"}, {"data":"isAdmin"}, {"data":"id"}, ], "columnDefs":[ { "targets":3, "data":"isAdmin", "render":function(data,type,full){ if(data !="" || data != null){ if(data == "Y"){ data = "是"; } if (data == "N"){ data = "否"; } } return data; } }, { "targets":4, "data":"id", "render":function(data,type,full){ return'<div><a id="edit" onclick="forUpdate('+"'"+ full.id+ "'"+')" href="#">编辑</a>'+'<span>  </span>' +'<a id="del" onclick="del('+"'"+ full.id+ "'"+')" href="#">删除</a></div>' } } ] }); return oTable; } //查询 function query(tmp){ if ((tmp == "" || tmp == null)) { oTable.ajax.url(context + "/service/demo/user/query").load(); } else { var url=context + "/service/demo/user/search?userId=" + tmp; oTable.ajax.url(url).load(); } } //删除用户信息 function del(args){ $.ajax({ url:context+"/service/demo/user/del?id="+args, type:"get", async:false, success:function(){ oTable.ajax.url(context + "/service/demo/user/query").load(); }, error:function(data){ alert(data); } }); } //编写用户信息 function forUpdate(args){ window.location.href=context+"/service/demo/user/edits?id="+args+"&isOrdinary=N"; } |
$(document).ready(function(){ if(flags=="edit"){ $("#user_name").attr("readonly",true); $(":radio[value='"+user_isAdmin+"']").attr("checked",true); $(":radio[value='"+user_gender+"']").attr("checked",true); $(":radio[value='"+user_education+"']").attr("checked",true); } $("#saveBtn").on("click",function(){ if($("#user_id").val()==null || $("#user_id").val()==""){ alert("用户id不能为空"); returnfalse; }elseif($("#user_name").val()==null || $("#user_name").val()==""){ alert("用户名字不能为空"); returnfalse; }elseif($("#user_password").val()==null || $("#user_password").val()==""){ alert("用户密码不能为空"); returnfalse; } if(flags=="edit"){ var url = context + "/service/demo/user/update"; saveForm.action = url; saveForm.method = "POST"; saveForm.submit(); }else{ var url = context + "/service/demo/user/save"; saveForm.action = url; saveForm.method = "POST"; saveForm.submit(); } }); $("#returnBtn").on("click",function(){ window.location.href=context+"/service/demo/user/home"; }); $("#user_name").blur(function(){ $.ajax({ url:context+"/service/demo/user/getUserByName?name="+$("#user_name").val(), type:"POST", success:function(data){ if(data.userInfo!=null){ if(addnew=="Y"){ $("#saveBtn").attr("disabled", true); alert("用户已存在,请修改用户名"); } }else{ $("#saveBtn").attr("disabled", false); } } }); }); }); |
相关文章推荐
- JAVA实验用户登录代码
- 数据结构实验:AVL平衡树做出用户登录系统(dos界面)
- H3C交换机dot1X+AD+IAS+CA配置实验(解决用户尚未登录无法验证问题)
- 虚拟用户登录vsftpd服务器的两个实验
- python基础练习:用户登录实验源码
- 实验1:用户的登录与退出、IO重定向与简单文件操作
- 南邮汇编实验二(用户登录)
- 南邮汇编实验——汇编语言实现用户的登录,不回显密码
- IIS7.5-FTP域用户隔离登录实验
- redhat 4 结合 AD域认证,并以AD用户登录linux
- SpringSecurity学习笔记(三)——自定义登录界面读取数据库用户以及权限
- Centos 下mysql用户丢失,root账号在本地登录
- 使用redis管理用户登录会话
- wordpress添加 非登录用户不可查看内容,登录之后可以查看全部内容
- axios 拦截 , 页面跳转, token 验证(经常用于判断用户是否登录)
- Oracle 数据库查看client的用户登录信息包括ip
- js 判断用户登录问题。
- 在ESXI主机上启用root用户SSH登录
- 根据当前登录域账号 获取AD用户姓名和所在OU目录
- ios实现用户登录的保存密码功能