一.验证用户名
先搭建web环境
jquery-1.11.3.js
web.xml
<?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">
<!--过滤器-->
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置SpringMVC的前端控制器-->
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- IoC注解解析器-->
<context:component-scan base-package="cn.dusk"/>
<!-- DI注解驱动器 -->
<context:annotation-config/>
<!-- 注解驱动器 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
Controller类checkqueryname
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- IoC注解解析器-->
<context:component-scan base-package="cn.dusk"/>
<!-- DI注解驱动器 -->
<context:annotation-config/>
<!-- 注解驱动器 -->
<mvc:annotation-driven/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
JsonResult类
//json返回值信息
@Setter
@Getter
public class JsonResult {
//返回状态
private boolean success=true;
//返回数据
private String msg;
//如果状态为false才返回信息
public JsonResult(String msg) {
this.success=false;
this.msg=msg;
}
public JsonResult(boolean success,String msg) {
this.success=success;
this.msg=msg;
}
public JsonResult() {
}
}
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 引入jQuery -->
<script type="text/javascript" src="../../js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
账号:<input type="text" id="nameId">
<span id="sp"></span>
</body>
</html>
index.js
//内部操作
$(function(){
$("#nameId").blur(function(){
//this: 表示当前这个输入框
var uname=this.value;
//发送ajax请求
//$.get(url,params,fn,返回数据类型);
//回调函数表示请求回来的数据
$.get("/jquery/checkjqueryName.do",{username:uname},function(data){
if(data.success){
$("#sp").html(data.msg).css("color","green");
}else{
$("#sp").html(data.msg).css("color","red");
}
},"json");
})
});
二.登录验证
类LoginJQueryController
@Controller
@RequestMapping("login")
public class LoginJQueryController {
@RequestMapping("jquerylogin")
@ResponseBody
public JsonResult login(String username,String password,HttpServletResponse response) throws IOException {
if ("admain".equals(username) && "12".equals(password)) {
System.out.println("登录成功:"+username+password);
return new JsonResult();
}else {
return new JsonResult(false,"账号密码不正确");
}
}
@RequestMapping("main")
public String main() {
return "redirect:/jQuery/12_login/main.html";
}
}
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 引入jQuery -->
<script type="text/javascript" src="../../js/jquery-1.11.3.js"></script>
<script type="text/javascript" src="index.js"></script>
</head>
<body>
账号:<input type="text" id="nameId" name="username"><span id="sp"></span><br>
密码:<input type="text" id="pwdId" name="password"><br>
<input type="button" id="btn" value="登录"><br>
</body>
</html>
main.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
欢迎ooxx
</body>
</html>
index.js
//内部操作
$(function(){
//登录
$("#btn").click(function(){
var uname=$("#nameId").val();
var upwd=$("#pwdId").val();
$.post("/login/jquerylogin.do",{username:uname,password:upwd},function(data){
if(data.success){
window.location.href="/login/main.do";
}else{
$("#sp").html(data.msg).css("color","red");
}
},"json");
})
});
三.rbac的应用
准备一份rbac项目
commonAll.js替换
//禁用jQuery对数组参数做的序列化操作,对数组参数名带上[]
jQuery.ajaxSettings.traditional = true;
/** table鼠标悬停换色* */
$(function() {
// 如果鼠标移到行上时,执行函数
$(".table tr").mouseover(function() {
$(this).css({
background : "#CDDAEB"
});
$(this).children('td').each(function(index, ele) {
$(ele).css({
color : "#1D1E21"
});
});
}).mouseout(function() {
$(this).css({
background : "#FFF"
});
$(this).children('td').each(function(index, ele) {
$(ele).css({
color : "#909090"
});
});
});
});
/** 翻页操作 */
/*$(function() {
// 翻页操作
$(".btn_page").click(
function() {
// 获取data-page属性的值
var pageNo = $(this).data("page")
|| $(":input[name='currentPage']").val();
$(":input[name='currentPage']").val(pageNo);
$("#searchForm").submit();
});
// 设置每页显示多少条数据:改变ageSize
$(":input[name='pageSize']").change(function() {
$(":input[name='currentPage']").val(1);
$("#searchForm").submit();
});
});*/
/** 点击,跳转到指定URL */
/*$(function() {
$(".btn_redirect").click(function() {
window.location.href = $(this).data("url");
});
});*/
/** 批量删除操作 */
$(function() {
// 全选/全不选:复选框
$("#all").click(function() {
$(":input[name=IDCheck]").prop("checked", $(this).prop("checked"));
});
});
/** 确定删除的对话框 */
/*$(function() {
$(".btn_delete").click(function() {
var deleteUrl = $(this).data("url");
$.dialog({
title : "温馨提示",
content : "你确定要删除吗?",
icon : "face-smile",
cancel : true,
ok : function() {
var dialog = $.dialog({icon : "face-smile"});//初始化对话框
$.get(deleteUrl,{}, function(data) {
dialog.title("温馨提示").content("删除成功!").button({
name:"确定",
callback:function(){
window.location.reload();
}
});
});
}
});
});
});
// 对话框
function showDialog(content, icon, cancel, ok) {
$.dialog({
title : "温馨提示",
content : content || "",
icon : icon || "face-smile",
cancel : cancel || true,
ok : ok || true
});
}*/
input.jsp替换
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<title>信息管理系统</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="/style/basic_layout.css" rel="stylesheet" type="text/css">
<link href="/style/common_style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/js/jquery/jquery.js"></script>
<script type="text/javascript" src="/js/commonAll.js"></script>
</head>
<body>
<form action="/department/saveOrUpdate.do" method="post" id="editForm">
<input type="hidden" name="id" value="${entity.id}"/>
<div id="container">
<div id="nav_links">
<span style="color: #1A5CC6;">部门编辑</span>
<div id="page_close">
<a>
<img src="/images/common/page_close.png" width="20" height="20" style="vertical-align: text-top;"/>
</a>
</div>
</div>
<div class="ui_content">
<table cellspacing="0" cellpadding="0" width="100%" align="left" border="0">
<tr>
<td class="ui_text_rt" width="140">部门名称</td>
<td class="ui_text_lt">
<input type="text" name="name" value="${entity.name}" class="ui_input_txt02"/>
</td>
</tr>
<tr>
<td class="ui_text_rt" width="140">部门代码</td>
<td class="ui_text_lt">
<input type="text" name="sn" value="${entity.sn}" class="ui_input_txt02"/>
</td>
</tr>
<tr>
<td> </td>
<td class="ui_text_lt">
<input type="submit" value="确定保存" class="ui_input_btn01"/>
<input id="cancelbutton" type="button" value="重置" class="ui_input_btn01"/>
</td>
</tr>
</table>
</div>
</div>
</form>
</body>
</html>
list.jsp替换
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/style/basic_layout.css" rel="stylesheet" type="text/css">
<link href="/style/common_style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/js/jquery/jquery.js"></script>
<script type="text/javascript" src="/js/commonAll.js"></script>
<title>PSS-部门管理</title>
<style>
.alt td{ background:black !important;}
</style>
</head>
<body>
<form id="searchForm" action="/department/query.do" method="post">
<div id="container">
<div class="ui_content">
<div class="ui_text_indent">
<div id="box_border">
<div id="box_top">搜索</div>
<div id="box_bottom">
<input type="button" value="新增" class="ui_input_btn01 " />
</div>
</div>
</div>
</div>
<div class="ui_content">
<div class="ui_tb">
<table class="table" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
<tr>
<th width="30"><input type="checkbox" id="all" /></th>
<th>编号</th>
<th>名称</th>
<th>编码</th>
<th></th>
</tr>
<tbody>
<c:forEach var="d" items="${result.data}">
<tr>
<td><input type="checkbox" name="IDCheck" class="acb" /></td>
<td>${d.id}</td>
<td>${d.name}</td>
<td>${d.sn}</td>
<td>
<a href="#">编辑</a>
<a href="#">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<!-- 分页操作 -->
<div class="ui_tb_h30">
<div class="ui_flt" style="height: 30px; line-height: 30px;">
共有
<span class="ui_txt_bold04">xx</span>
条记录,当前第
<span class="ui_txt_bold04">1/22</span>
页
</div>
<div class="ui_frt">
<input type="button" value="首页" class="ui_input_btn01 " />
<input type="button" value="上一页" class="ui_input_btn01 "/>
<input type="button" value="下一页" class="ui_input_btn01 " />
<input type="button" value="尾页" class="ui_input_btn01 " />
<select name="pageSize" class="ui_select02">
<option value="3">3</option>
<option value="5">5</option>
<option value="10">10</option>
</select>
转到第<input type="text" name="currentPage" value="" class="ui_input_txt01" style="width:50px;"/>
<input type="button" class="ui_input_btn01 " value="跳转"/>
</div>
</div>
</div>
</div>
</form>
</body>
</html>
以上是把之前的js注释现在再写一遍
新增/编辑
给新增添加一个样式btn_redirect,自定义属性data-url
<div id="box_bottom">
<input type="button" value="新增" class="ui_input_btn01 btn_redirect" data-url="/department/input.do"/>
</div>
<a href="javascript:;" class="btn_redirect" data-url="/department/input.do?id=${d.id}">编辑</a>
删除
给删除元素添加自定义样式: btn_delete, 同时添加data-url自定义的属性
<a href="javascript:;" class="btn_delete" data-url="/department/delete.do?id=${d.id}">删除</a>
给首页/上一页/下一页/尾页/ 跳转 添加自定义样式 btn_page, 除了跳转都添加了data-page属性
<input type="button" value="首页" class="ui_input_btn01 btn_page" data-page="1"/>
<input type="button" value="上一页" class="ui_input_btn01 btn_page" data-page="${result.prevPage}"/>
<input type="button" value="下一页" class="ui_input_btn01 btn_page" data-page="${result.nextPage}"/>
<input type="button" value="尾页" class="ui_input_btn01 btn_page" data-page="${result.totalPage}"/>
最终js
//xinzeng
$(function(){
//$(".btn_redirect");
//添加或编辑
$(".btn_redirect").click(function () {
//被点击的元素
window.location.href=$(this).data("url");
});
//删除
$(".btn_delete").click(function(){
//询问用户是否确定要删除
var ret=confirm("你确定要删除吗?");
if(ret){
//发送ajax删除
$.get($(this).data("url"),function(data){
window.location.reload();
})
}
});
//参数1,数组或对象,参数2:操作函数
$.each($(":input[name='pageSize'] option"),function(index,item){
//当用于回的pageSize等于option中的value值时,才选择
if(${result.pageSize} == $(item).val()){
$(item).prop("selected",true);
}
});
//下拉框发生改变的时候,执行刷新操作,重新加载一次数据
$(":input[name='pageSize']").change(function(){
$(":input[name='currentPage']").val(1);
$("#searchForm").submit();
})
//分页
$(".btn_page").click(function(){
//如果点击跳转button,出现400因为没有制定data-page属性
//而这个跳转button对应的currentPage应该是currentPage值,有用户输入
var pageNo =$(this).data('page') || $(":input[name='currentPage']").val() || 1;
//获取当前页,然后修改成制定的跳转的页码数
$(":input[name='currentPage']").val(pageNo);
//找到form表单,然后直接提交表单
$("#searchForm").submit();
})
});
</script>
最总的list.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/style/basic_layout.css" rel="stylesheet" type="text/css">
<link href="/style/common_style.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="/js/jquery/jquery.js"></script>
<script type="text/javascript" src="/js/commonAll.js"></script>
<script type="text/javascript">
//xinzeng
$(function(){
//$(".btn_redirect");
//添加或编辑
$(".btn_redirect").click(function () {
//被点击的元素
window.location.href=$(this).data("url");
});
//删除
$(".btn_delete").click(function(){
//询问用户是否确定要删除
var ret=confirm("你确定要删除吗?");
if(ret){
//发送ajax删除
$.get($(this).data("url"),function(data){
window.location.reload();
})
}
});
//参数1,数组或对象,参数2:操作函数
$.each($(":input[name='pageSize'] option"),function(index,item){
//当用于回的pageSize等于option中的value值时,才选择
if(${result.pageSize} == $(item).val()){
$(item).prop("selected",true);
}
});
//下拉框发生改变的时候,执行刷新操作,重新加载一次数据
$(":input[name='pageSize']").change(function(){
$(":input[name='currentPage']").val(1);
$("#searchForm").submit();
})
//分页
$(".btn_page").click(function(){
//如果点击跳转button,出现400因为没有制定data-page属性
//而这个跳转button对应的currentPage应该是currentPage值,有用户输入
var pageNo =$(this).data('page') || $(":input[name='currentPage']").val() || 1;
//获取当前页,然后修改成制定的跳转的页码数
$(":input[name='currentPage']").val(pageNo);
//找到form表单,然后直接提交表单
$("#searchForm").submit();
})
});
</script>
<title>PSS-部门管理</title>
<style>
.alt td{ background:black !important;}
</style>
</head>
<body>
<form id="searchForm" action="/department/list.do" method="post">
<div id="container">
<div class="ui_content">
<div class="ui_text_indent">
<div id="box_border">
<div id="box_top">搜索</div>
<div id="box_bottom">
<input type="button" value="新增" class="ui_input_btn01 btn_redirect" data-url="/department/input.do"/>
</div>
</div>
</div>
</div>
<div class="ui_content">
<div class="ui_tb">
<table class="table" cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
<tr>
<th width="30"><input type="checkbox" id="all" /></th>
<th>编号</th>
<th>名称</th>
<th>编码</th>
<th></th>
</tr>
<tbody>
<c:forEach var="d" items="${result.data}">
<tr>
<td><input type="checkbox" name="IDCheck" class="acb" /></td>
<td>${d.id}</td>
<td>${d.name}</td>
<td>${d.sn}</td>
<td>
<a href="javascript:;" class="btn_redirect" data-url="/department/input.do?id=${d.id}">编辑</a>
<a href="javascript:;" class="btn_delete" data-url="/department/delete.do?id=${d.id}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<!-- 分页操作 -->
<div class="ui_tb_h30">
<div class="ui_flt" style="height: 30px; line-height: 30px;">
共有
<span class="ui_txt_bold04">${result.totalCount}</span>
条记录,当前第
<span class="ui_txt_bold04">${result.currentPage}/${result.totalPage}</span>
页
</div>
<div class="ui_frt">
<input type="button" value="首页" class="ui_input_btn01 btn_page" data-page="1"/>
<input type="button" value="上一页" class="ui_input_btn01 btn_page" data-page="${result.prevPage}"/>
<input type="button" value="下一页" class="ui_input_btn01 btn_page" data-page="${result.nextPage}"/>
<input type="button" value="尾页" class="ui_input_btn01 btn_page" data-page="${result.totalPage}"/>
<select name="pageSize" class="ui_select02">
<option value="3">3</option>
<option value="5">5</option>
<option value="10">10</option>
</select>
转到第<input type="text" name="currentPage" value="${result.currentPage}" class="ui_input_txt01" style="width:50px;"/>
<input type="button" class="ui_input_btn01 btn_page" value="跳转"/>
</div>
</div>
</div>
</div>
</form>
</body>
</html>