系统功能实现-登录功能
一、功能简介。任务发布系统主要分为两大部分。一是后台管理系统,主要是管理员管理任务系统,比如任务的发布,用户的管理,纪念品的管理等等。后台系统用户有两类,分别为系统管理员和部门负责人。系统管理员可以使用全部功能,部门负责人只能使用任务管理功能。二是前台任务系统,主要是普通用户使用,实现任务领取,任务提交,兑换纪念品等功能,由于普通用户主要使用手机登录系统,所以采用H5开发,适配手机界面。
二、登录功能的实现。今天主要介绍登录功能的具体实现。管理员和普通用户登录页面是分开的,逐一介绍。首先介绍管理员登录功能实现,主要有登录,登出,修改密码等。管理员页面结构如图:
登录页面login.jsp:
视频加载中...
核心代码解析:
<%String loginmsg = request.getParameter("loginmsg");//接收回调参数,确定登录状态
request.getSession(true);
session.putValue("IsLogin","false");//初始化登录状态为未登录%>
<script language="JavaScript">//用户名,密码输入检测JS
function check_input(){
if( form.username.value.length<1 || form.username.value.length>20 ){
alert("请输入用户名.")
return false;}
if( form.password.value.length<1 || form.password.value.length>20 ){
alert("请输入密码.")
return false;}}
</script>
<form action=/TaskMS/ChkLogin.jsp method=post name=form onSubmit="return check_input()">//转入ChkLogin.jsp页面,验证登录
根据回调参数loginmsg,确定登录状态。
<%if(loginmsg != null && loginmsg.equals("userwrong"))
out.print("用户名或密码不正确.");
else if(loginmsg != null && loginmsg.equals("loginfirst"))
out.print("请先登录.");
else if(loginmsg != null && loginmsg.equals("logout"))
out.print("已经成功退出系统.");%>
ChkLogin.jsp页面核心代码解析:
String username = request.getParameter("username");
String password = request.getParameter("password");
String loginmsg;
String Unit;
boolean IsAdmin;
if(!User.ChkLogin(username,password))//调用User类的ChkLogin,确定用户名密码是否匹配{
loginmsg="userwrong";
response.sendRedirect("login.jsp?loginmsg="+loginmsg);//如果不匹配则转向登录页面
return;}
Unit=User.FindByName(username).getUnit();//获取用户单位
IsAdmin=User.FindByName(username).getIsAdmin();//获取是否管理员
//将用户相关信息放入session
request.getSession(true);
session.putValue("IsLogin","true");
session.putValue("UserName",username);
session.putValue("User",Unit);
session.putValue("Unit",Unit);
if(IsAdmin)
session.putValue("IsAdmin","true");
else
session.putValue("IsAdmin","false");
if(Unit.equals("superAdmin"))//如果是超级管理员则转向管理员首页
{response.sendRedirect("Home/index.jsp");
session.putValue("Unit","superAdmin");
return;}
登出页面Logout.jsp核心代码解析:
<% //清空session并转向登录页面
Enumeration names = session.getAttributeNames();
while (names.hasMoreElements()){
String element =(String)names.nextElement();
session.removeAttribute(element);}
String loginmsg="logout";
response.sendRedirect("login.jsp?loginmsg="+loginmsg);%>
修改密码页面及核心代码解析:
ModifyPasswordStep1.jsp:
确认两次密码输入是否一致
<script language="javascript">
function check_input(theForm){
if (theForm.oldpassword.value == ""){
alert("请输入旧密码.");
theForm.oldpassword.focus();
return (false);}
if (theForm.newpassword.value != theForm.confirmpassword.value){
alert("两次输入密码不一致.");
theForm.confirmpassword.focus();
return (false);}}
</script>
ModifyPasswordStep2.jsp
try{
String username = (String)session.getValue("UserName");//获取用户名
String oldpassword = new String(request.getParameter("oldpassword").getBytes("ISO8859_1"),"GBK");//获取原密码
String newpassword = new String(request.getParameter("newpassword").getBytes("ISO8859_1"),"GBK");//获取新密码
if(!(User.ChkLogin(username,oldpassword)))//确认用户名和密码是否匹配{%>
<script>
alert("旧密码输入错误,请重新输入.");
window.history.back();
</script><% }
else{
IsSucceed = User.ModifyPassword(username,newpassword);//修改密码}}
catch(Exception e){
out.println("error:"+e.getMessage());}
Check.jsp页面用来验证是否是登录状态,后续页面都要引用,确定登录后才能访问。核心代码解析:
if((String)session.getValue("IsLogin")!="true")//确定是否登录,如没有则转向登录页面{
String loginmsg="loginfirst";
response.sendRedirect("/TaskMS/login.jsp?loginmsg="+loginmsg);}
用户页面登录与管理员登录实现方式基本一致,不再详细介绍。
视频加载中...