基于FullCalendar插件的简单个人日程安排系统(2)
2017-11-27 11:38
573 查看
(之前写了2个小时的内容没有保存,又要重新写,我 (꒦_꒦) )
先展示下工程目录:
![](https://img-blog.csdn.net/20171127112841252?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFyaG9uZ0JhTGE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
系统流程图
![](https://img-blog.csdn.net/20171127115812849?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFyaG9uZ0JhTGE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
UML类图
![](https://img-blog.csdn.net/20171127115857897?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFyaG9uZ0JhTGE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
ER图
![](https://img-blog.csdn.net/20171127115932597?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFyaG9uZ0JhTGE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
login.jsp:
signin.js
我用于处理用户登录和注册的办法是: 通过js获取用户的输入信息,再通过AJAX将用户输入的信息传递给后端,也就是上面出现的signin()函数中的loginServlet和signup()函数中的signUpServlet。在这两个servlet中对用户信息进行判断,然后将结果返回到jsp页面,jsp再根据servlet不同的返回值做出不同的提示。
由于后端部分内容实在是有点多而且有点乱,所以我放在后一篇文章中了。
有疑惑的地方可以留言。
先展示下工程目录:
系统流程图
UML类图
ER图
login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- 一个自定义的SimpleTag,用于记住用户名 --> <%@taglib prefix="mytag" uri="MyTag"%> <!DOCTYPE html> <html> <head> <title>个人日程安排系统登录界面</title> <!-- 因为这个登录界面模板我也是从网上找的,除了login.css这个文件是我自己写的外,其他都是模板附带的,所以除了login.css最好别改动。 --> <link rel="shortcut icon" href="../../favicon.ico"> <link rel="stylesheet" type="text/css" href="../css/demo.css" /> <link rel="stylesheet" type="text/css" href="../css/style.css" /> <link rel="stylesheet" type="text/css" href="../css/animate-custom.css" /> <link rel="stylesheet" type="text/css" href="../css/login.css" /> </head> <body> <div class="container"> <header> <h1>个人日程安排系统</h1> </header> <section> <div id="container_demo"> <a class="hiddenanchor" id="toregister"></a> <a class="hiddenanchor" id="tologin"></a> <div id="wrapper"> <!-- 登录部分页面代码 --> <div id="login" class="animate form"> <!-- 这个onsubmit属性是html5的form的一个属性,如果值为true则正常跳转到action的路径,如果值为false,则不能跳转 --> <!-- 这里的onsubmit属性值用一个函数返回值是因为这个signin()函数要用于判断用户名密码是否正确有效 --> <form name="login_form" action="index.jsp" method="post" onsubmit="return signin()"> <h1>登  录</h1> <p> <!-- 这里的oninvalid属性和oninput属性也是input自带的属性 --> <!-- oninvalid="setCustomValidity('请输入用户名')就是当用户输入不合法时提示"请输入用户名" --> <!-- oninput="setCustomValidity('')就是当用户输入时调用这个函数--> <!-- 注意这两个属性要成对出现才能实现提示效果 --> <label for="username" class="uname"> 用户名 </label> <input id="username" name="username" required oninvalid="setCustomValidity('请输入用户名')" oninput="setCustomValidity('')" placeholder="my user name" value="<mytag:FourthTag/>" /> </p> <p> <label for="password" class="password"> 密码 </label> <input id="password" name="password" required oninvalid="setCustomValidity('请输入密码')" oninput="setCustomValidity('')" type="password" placeholder="my password" /> ef00 </p> <p id="loginError">用户名或密码错误</p> <p class="keeplogin"> <input type="checkbox" name="rememberusername" id="rememberusername" value="loginkeeping" /> <label for="loginkeeping">记住账号</label> </p> <p class="login button"> <input type="submit" value="Login" /> </p> <p class="change_link"> 没有账号 ? <a href="#toregister" class="to_register">注 册</a> </p> </form> </div> <!-- 注册部分页面代码 --> <div id="register" class="animate form"> <form action="login.jsp#tologin" onsubmit="return signup()" method="post"> <h1>注  册</h1> <p> <label for="userNameSignUp" class="uname"> 用户名 </label> <input id="userNameSignUp" name="userNameSignUp" required oninvalid="setCustomValidity('请输入要想注册的用户名')" oninput="setCustomValidity('')" placeholder="my username" /> </p> <p> <label for="passwordSignUp" class="youpasswd"> 密码 </label> <input id=passwordSignUp name=passwordSignUp required oninvalid="setCustomValidity('请输入你的密码')" oninput="setCustomValidity('')" type="password" placeholder="my password" /> </p> <p> <label for="passwordSignUp_confirm" class="youpasswd"> 确认密码 </label> <input id="passwordSignUp_confirm" name="passwordsignup_confirm" required oninvalid="setCustomValidity('请输入你的密码')" oninput="setCustomValidity('')" type="password" placeholder="my password" /> </p> <p id="signUpError" class="keeplogin"></p> <p class="signin button"> <input type="submit" value="Sign up" /> </p> <p class="change_link"> 已注册账号 ? <a href="#tologin" class="to_register"> 登 录 </a> </p> </form> </div> </div> </div> </section> </div> <!-- 引入处理用户登录&注册的js文件 --> <script src="../js/signin.js" charset="UTF-8"></script> </body> </html> <!-- 引入公共尾部 --> <jsp:include page="footer.jsp" />
signin.js
/** * @see 该js文件用于处理login.jsp页面的登录和注册 * @author wangbin * @time 2017年11月15日 下午2:41:20 */ /** * @see 处理用户(普通用户或者管理员)登录 * @author wangbin * @time 2017年11月15日 下午2:44:20 */ function signin() { /** * xmlhttp XMLHttpRequest对象,用于在后台与服务器交换数据 * username 登录页面用户输入的用户名 * password 登录页面用户输入的密码 * loginError 登录页面的错误提示 * result 用户是否正确登录,若正确登录则返回true,否则返回false */ var xmlhttp, username, password, loginError,rememberusername, result = false; loginError = document.getElementById("loginError"); username = document.getElementById("username").value; password = document.getElementById("password").value; rememberusername = document.getElementById("rememberusername").checked; //新建XMLHttpRequest对象 //对于不同浏览器新建XMLHttpRequest对象方式不同 if (window.XMLHttpRequest) { // 对于 IE7+, Firefox, Chrome, Opera, Safari浏览器 xmlhttp = new XMLHttpRequest(); } else { // 对于 IE6,IE5浏览器 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } //向处理登录的servlet发送请求,该请求包含用户名和密码 xmlhttp.open("POST", "loginServlet", false); xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); xmlhttp.send("username=" + username + "&password=" + password +"&rememberusername="+ rememberusername); //处理servlet返回的结果 if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //如果servlet返回"incorrect",说明用户名或密码错误 //显示错误提示 //登录失败 if (xmlhttp.responseText == "incorrect") { loginError.style.display = "block"; result = false; } else { //如果servlet没有返回"incorrect",说明,用户名、密码正确 //根据账号的不同类型,servlet会返回不同的地址 //若账号类型为管理员,则servlet会返回管理员首页面的地址 //若账号类型为普通用户,则servlet会返回普通用户首页面的地址 //不显示错误提示 //登录成功 //跳转到相应首页面 loginError.style.display = "none"; document.forms['login_form'].action=xmlhttp.responseText; result = true; } } return result; } /** * @see 隐藏登录界面,显示注册界面 * @author wangbin * @time 2017年11月15日 下午3:03:20 */ function toRegister(){ document.getElementById("login").style.display="none"; document.getElementById("register").style.display="block"; } /** * @see 隐藏注册界面,显示登录界面 * @author wangbin * @time 2017年11月15日 下午3:05:20 */ function toLogin(){ $("register").hide(); $("login").show(); } /** * @see 处理普通用户注册 * @author wangbin * @time 2017年11月15日 下午3:25:02 */ function signup(){ var userNameSignUp,passwordSignUp,passwordSignUp_confirm,signUpError,xmlhttp; userNameSignUp = document.getElementById("userNameSignUp").value; passwordSignUp = document.getElementById("passwordSignUp").value; passwordSignUp_confirm = document.getElementById("passwordSignUp_confirm").value; signUpError = document.getElementById("signUpError"); if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } if(passwordSignUp != passwordSignUp_confirm){ signUpError.style.display = "block"; signUpError.innerHTML="两次密码不一致"; return false; }else{ xmlhttp.open("POST","signUpServlet",false); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset=UTF-8"); xmlhttp.send("userNameSignUp="+userNameSignUp+"&passwordSignUp="+passwordSignUp); if (xmlhttp.readyState==4 && xmlhttp.status==200) { if(xmlhttp.responseText=="success"){ signUpError.style.display = "none"; alert("注册成功!"); return true; }else if(xmlhttp.responseText=="error"){ signUpError.innerHTML="该用户名已经注册 !"; signUpError.style.display = "block"; return false; }else{ signUpError.value="Register failly!"; signUpError.style.display = "block"; return false; } } } }
我用于处理用户登录和注册的办法是: 通过js获取用户的输入信息,再通过AJAX将用户输入的信息传递给后端,也就是上面出现的signin()函数中的loginServlet和signup()函数中的signUpServlet。在这两个servlet中对用户信息进行判断,然后将结果返回到jsp页面,jsp再根据servlet不同的返回值做出不同的提示。
由于后端部分内容实在是有点多而且有点乱,所以我放在后一篇文章中了。
有疑惑的地方可以留言。
相关文章推荐
- 基于FullCalendar插件的简单个人日程安排系统(1)
- 基于FullCalendar插件的简单个人日程安排系统(3)
- 日程日历系统,顶级插件FullCalendar使用说明 推荐
- 基于FullCalendar插件的个人日程安排系统(4)
- FullCalendar日历插件(中文API,简单Demo)
- fullCalendar插件的使用简单教程
- Easyui+MVC+FullCalendar插件实现日程记录功能
- jQuery插件实战之Fullcalendar - 开发一个完整功能的富客户端会议室预定系统前台
- jquery fullcalendar 日历日程插件使用
- js jquery 实现 排班,轮班,日历,日程。使用fullcalendar 插件
- fullcalendar 日程插件demo使用
- JS日程管理插件FullCalendar简单实例
- jQuery插件实战之fullcalendar(日历插件) - 使用fullcalendar开发一个功能完整的富客户端会议室预定系统(转)
- fullcalendar插件日程管理
- jQuery插件实战之Fullcalendar - 开发一个完整功能的富客户端会议室预定系统前台
- 基于jsp+servlet的个人博客系统
- 基于slimscroll与bootstarp插件实现非常好用应用系统表格展示
- servlet+jdbc+html+jquery+Mysql数据库(基于MVC的简单查询系统)
- 我们的游戏世界(背包【仓库】,交易,任务,简单经济系统,装备)实现(基于仙剑demo聊聊游戏世界)第二篇谈谈任务
- 基于ARM Contex-A8 Tiny210的简单室内人员数目监测系统实现(3)