关于登录中的记住我的功能(cookie实例)
来源:互联网 发布:重大误解知乎 编辑:程序博客网 时间:2024/05/17 23:49
最近做了一个登录功能并可选了“记住我” 的功能,类似QQ登录的那种
思路很如下:鄙人不才,加上懒得打字就把代码放出来吧,慢慢读就会明白了
思路很如下:鄙人不才,加上懒得打字就把代码放出来吧,慢慢读就会明白了
package com.sys.action;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Controller;
import com.opensymphony.xwork2.ActionContext;
import com.sys.api.ShipApi;
import com.sys.base.QueryResult;
import com.sys.bean.Employees;
import com.sys.util.APIFactory;
import com.sys.util.MD5;
import com.sys.util.MailSender;
import com.sys.util.PageBean;
import com.sys.util.SmsSender;
import com.sys.util.WebUtil;
import com.sys.api.ShipApi;
import com.sys.base.QueryResult;
import com.sys.bean.Employees;
import com.sys.util.APIFactory;
import com.sys.util.MD5;
import com.sys.util.MailSender;
import com.sys.util.PageBean;
import com.sys.util.SmsSender;
import com.sys.util.WebUtil;
/**
* 登录类
*/
@Controller("loginAction")
public class LoginAction {
/**
* 初始化登录
*
* 读取cookie
* @return tologin
*/
public String login() {
try{
String remebermestr= WebUtil.getInstance().getCookieByName(ServletActionContext.getRequest(), "username");
if(remebermestr!=null &&!"".equals(remebermestr.trim())){
String [] username = remebermestr.split("_");
if(username!=null&&username.length>0){
ServletActionContext.getRequest().setAttribute("username",username[0]);
ServletActionContext.getRequest().setAttribute("password",username[1]);
ServletActionContext.getRequest().setAttribute("checkboxcheck","1");
}
}
String errorpass = ServletActionContext.getRequest().getParameter("stu");
if(errorpass!=null && !"".equals(errorpass.trim())){
ServletActionContext.getRequest().setAttribute("errorpass", "验证码错误");
}
} catch (Exception e) {
e.printStackTrace();
}
return "tologin";
}
/**
* 初始化忘记密码页面
*
*
* @return findpwd
*/
public String getPwd() {
return "findpwd";
}
/**
* 登录,此处密码没有加MD5测试完再加
* 保存登录信息到session
* 保存到cookie
* @return getList
*/
public String tologin() {
try{
ShipApi api = APIFactory.getShipAPIFactory().getShipServiceAPI();
HttpServletResponse response=ServletActionContext.getResponse();
String msgbox =null;
//从请求中获取查询条件
String remebermestr= WebUtil.getInstance().getCookieByName(ServletActionContext.getRequest(), "username");
String userName = ServletActionContext.getRequest().getParameter("username");//用户名
String password = ServletActionContext.getRequest().getParameter("password");//密码
String rememberme = ServletActionContext.getRequest().getParameter("rememberme");//记住我
if(userName==null||userName.equals("")){
msgbox = "用户名不能为空!";
}else if(password==null||password.equals("")){
msgbox = "密码不能为空!";
}
if(msgbox!=null&&!msgbox.equals("")){
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
return "toredirect";
}
//拼接查询SQL
StringBuffer jhql = new StringBuffer(" ");
List<Object> params = new ArrayList<Object>();
if(rememberme!=null&&rememberme.equals("1")){//用户提交过来的是记住我
/**获取COOKIE里面的值,比较提交过来的是否与COOKIE里一样**/
if(remebermestr!=null){
String [] remebermelist = remebermestr.split("_");
if(remebermelist!=null&&remebermelist.length>0
&&userName!=null&&userName.trim().equals(remebermelist[0])
&&password!=null&&password.equals(remebermelist[1])
){
/**COOKIE里有值与当前提交过来的一样**/
if(userName.trim()!=null&&!userName.trim().equals("")&&password!=null&&!"".equals(password)){//用户名验证
jhql.append("(");
jhql.append(" o.userName=? ");
params.add(userName.trim());
jhql.append(" or o.email=? ");
params.add(userName.trim());
jhql.append(" or o.phone=? ");
params.add(userName.trim());
jhql.append(")");
jhql.append(" and o.password=? and o.visible=true");
params.add(password);
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){
Employees bean = list.get(0);
ActionContext.getContext().getSession().put("user", bean);
ServletActionContext.getResponse().sendRedirect("/nbshipWeb/other/iframeControll_main.action");
return null;
}else{
msgbox = "不存在用户名或密码!";
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getRequest().setAttribute("username",userName.trim());
ServletActionContext.getRequest().setAttribute("password",MD5.getInstance().MD5Encode(password));
ServletActionContext.getRequest().setAttribute("checkboxcheck","1");
return "tologin";
}
}
}
}
if(userName.trim()!=null&&!userName.trim().equals("")&&password!=null&&!"".equals(password.trim())){//用户名验证
jhql.append("(");
jhql.append(" o.userName=? ");
params.add(userName.trim());
jhql.append(" or o.email=? ");
params.add(userName.trim());
jhql.append(" or o.phone=? ");
params.add(userName.trim());
jhql.append(")");
jhql.append(" and o.password=? and o.visible=true");
if(remebermestr!=null){
String [] remebermelist = remebermestr.split("_");
if(remebermelist!=null&&remebermelist.length>0
&&userName!=null&&userName.trim().equals(remebermelist[0])
&&password!=null&&password.equals(remebermelist[1])
){
params.add(password.trim());
}else{
password=MD5.getInstance().MD5Encode(password.trim());
params.add(password.trim());
}
}else{
password=MD5.getInstance().MD5Encode(password.trim());
params.add(password.trim());
}
}
//
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()==1){
Employees bean = list.get(0);
ActionContext.getContext().getSession().put("user", bean);
msgbox = "登录成功!";
//添加COOKIES
if(rememberme!=null&&rememberme.equals("1")){
String namepwd = userName+"_"+password;
WebUtil.getInstance().addCookie(response, "username",namepwd, 7*24*60*60);
}else{
//清除COOKIES
WebUtil.getInstance().addCookie(response, "username",null,0);
}
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getResponse().sendRedirect("/nbshipWeb/other/iframeControll_main.action");
return null;
}else if(list!=null&&list.size()>1){
msgbox = "存在多个相同的帐号";
return "tologin";
}else{
msgbox = "不存在用户名或密码!";
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getRequest().setAttribute("username",userName.trim());
ServletActionContext.getRequest().setAttribute("password",password.trim());
ServletActionContext.getRequest().setAttribute("checkboxcheck","1");
return "tologin";
}
//这里是把查询结果放在request中了,引用名为result,分页标签中的为pageSize
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 初始获取验证
*
* 发送邮箱 或短信
* @return tologin
*/
public String getSendMsg() {
PrintWriter out = null;
try {
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
String emldun = ServletActionContext.getRequest().getParameter("emldun");
String radiofind = ServletActionContext.getRequest().getParameter("radiofind");
ShipApi api = (ShipApi) APIFactory.getShipAPIFactory().getShipServiceAPI();
if(radiofind!=null&&radiofind.equals("1")){//短信用户
//拼接查询SQL
StringBuffer jhql = new StringBuffer(" ");
List<Object> params = new ArrayList<Object>();
if(emldun.trim()!=null&&!emldun.trim().equals("")){//用户名验证
jhql.append(" o.phone=? ");
params.add(emldun.trim());
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){//判断手机号是否存在
SmsSender.getInstance().SendSms(emldun.trim(), "测试发送手机");
out = response.getWriter();// 设置输出
out.print("phoneok");//out.print(value);
out.close();
}else{
out = response.getWriter();// 设置输出
out.print("phoneno");//out.print(value);
out.close();
}
}
if(radiofind!=null&&radiofind.equals("2")){//邮箱用户
//拼接查询SQL
StringBuffer jhql = new StringBuffer(" ");
List<Object> params = new ArrayList<Object>();
if(emldun.trim()!=null&&!emldun.trim().equals("")){//用户名验证
jhql.append(" o.email=? ");
params.add(emldun.trim());
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){//判断邮箱是否存在
MailSender.getInstance().sendMessage(emldun.trim(), "测试发送邮箱");
out = response.getWriter();// 设置输出
out.print("emailok");//out.print(value);
out.close();
}else{
out = response.getWriter();// 设置输出
out.print("emailno");//out.print(value);
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
}
//ServiceAPIFactory.getInstance().destory();
}
return null;
}
}
if(remebermestr!=null){
String [] remebermelist = remebermestr.split("_");
if(remebermelist!=null&&remebermelist.length>0
&&userName!=null&&userName.trim().equals(remebermelist[0])
&&password!=null&&password.equals(remebermelist[1])
){
/**COOKIE里有值与当前提交过来的一样**/
if(userName.trim()!=null&&!userName.trim().equals("")&&password!=null&&!"".equals(password)){//用户名验证
jhql.append("(");
jhql.append(" o.userName=? ");
params.add(userName.trim());
jhql.append(" or o.email=? ");
params.add(userName.trim());
jhql.append(" or o.phone=? ");
params.add(userName.trim());
jhql.append(")");
jhql.append(" and o.password=? and o.visible=true");
params.add(password);
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){
Employees bean = list.get(0);
ActionContext.getContext().getSession().put("user", bean);
ServletActionContext.getResponse().sendRedirect("/nbshipWeb/other/iframeControll_main.action");
return null;
}else{
msgbox = "不存在用户名或密码!";
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getRequest().setAttribute("username",userName.trim());
ServletActionContext.getRequest().setAttribute("password",MD5.getInstance().MD5Encode(password));
ServletActionContext.getRequest().setAttribute("checkboxcheck","1");
return "tologin";
}
}
}
}
if(userName.trim()!=null&&!userName.trim().equals("")&&password!=null&&!"".equals(password.trim())){//用户名验证
jhql.append("(");
jhql.append(" o.userName=? ");
params.add(userName.trim());
jhql.append(" or o.email=? ");
params.add(userName.trim());
jhql.append(" or o.phone=? ");
params.add(userName.trim());
jhql.append(")");
jhql.append(" and o.password=? and o.visible=true");
if(remebermestr!=null){
String [] remebermelist = remebermestr.split("_");
if(remebermelist!=null&&remebermelist.length>0
&&userName!=null&&userName.trim().equals(remebermelist[0])
&&password!=null&&password.equals(remebermelist[1])
){
params.add(password.trim());
}else{
password=MD5.getInstance().MD5Encode(password.trim());
params.add(password.trim());
}
}else{
password=MD5.getInstance().MD5Encode(password.trim());
params.add(password.trim());
}
}
//
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()==1){
Employees bean = list.get(0);
ActionContext.getContext().getSession().put("user", bean);
msgbox = "登录成功!";
//添加COOKIES
if(rememberme!=null&&rememberme.equals("1")){
String namepwd = userName+"_"+password;
WebUtil.getInstance().addCookie(response, "username",namepwd, 7*24*60*60);
}else{
//清除COOKIES
WebUtil.getInstance().addCookie(response, "username",null,0);
}
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getResponse().sendRedirect("/nbshipWeb/other/iframeControll_main.action");
return null;
}else if(list!=null&&list.size()>1){
msgbox = "存在多个相同的帐号";
return "tologin";
}else{
msgbox = "不存在用户名或密码!";
ServletActionContext.getRequest().setAttribute("msgBox",msgbox);
ServletActionContext.getRequest().setAttribute("username",userName.trim());
ServletActionContext.getRequest().setAttribute("password",password.trim());
ServletActionContext.getRequest().setAttribute("checkboxcheck","1");
return "tologin";
}
//这里是把查询结果放在request中了,引用名为result,分页标签中的为pageSize
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 初始获取验证
*
* 发送邮箱 或短信
* @return tologin
*/
public String getSendMsg() {
PrintWriter out = null;
try {
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
String emldun = ServletActionContext.getRequest().getParameter("emldun");
String radiofind = ServletActionContext.getRequest().getParameter("radiofind");
ShipApi api = (ShipApi) APIFactory.getShipAPIFactory().getShipServiceAPI();
if(radiofind!=null&&radiofind.equals("1")){//短信用户
//拼接查询SQL
StringBuffer jhql = new StringBuffer(" ");
List<Object> params = new ArrayList<Object>();
if(emldun.trim()!=null&&!emldun.trim().equals("")){//用户名验证
jhql.append(" o.phone=? ");
params.add(emldun.trim());
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){//判断手机号是否存在
SmsSender.getInstance().SendSms(emldun.trim(), "测试发送手机");
out = response.getWriter();// 设置输出
out.print("phoneok");//out.print(value);
out.close();
}else{
out = response.getWriter();// 设置输出
out.print("phoneno");//out.print(value);
out.close();
}
}
if(radiofind!=null&&radiofind.equals("2")){//邮箱用户
//拼接查询SQL
StringBuffer jhql = new StringBuffer(" ");
List<Object> params = new ArrayList<Object>();
if(emldun.trim()!=null&&!emldun.trim().equals("")){//用户名验证
jhql.append(" o.email=? ");
params.add(emldun.trim());
}
PageBean pageBean = WebUtil.getInstance().getPageBean(ServletActionContext.getRequest());
QueryResult<Employees> result = api.getScrollDataEmployees2(pageBean.getFirstPage(), pageBean.getMaxPage(),jhql.toString(),params.toArray());
List<Employees> list = result.getResultlist();
if(list!=null&&list.size()>0){//判断邮箱是否存在
MailSender.getInstance().sendMessage(emldun.trim(), "测试发送邮箱");
out = response.getWriter();// 设置输出
out.print("emailok");//out.print(value);
out.close();
}else{
out = response.getWriter();// 设置输出
out.print("emailno");//out.print(value);
out.close();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.flush();
out.close();
}
//ServiceAPIFactory.getInstance().destory();
}
return null;
}
}
- 关于登录中的记住我的功能(cookie实例)
- cookie实现登录页面记住我和自动登录功能
- cookie实现登录页面记住我和自动登录功能
- 解决cookie中文乱码(登录的记住用户功能)
- [JavaScript] session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- session、cookie与“记住我的登录状态”的功能的实现
- javaWeb的session和cookie实现记住密码自动登录功能简单实例
- 登录页面“记住我”的功能实现
- 登录记住我功能实现
- laravel 修改记住我功能的cookie保存时间
- jsp页面获取到后台的cookie(登录时记住我)
- iOS解决Cookie登录问题(记住第三方的cookie,下次登录记住cookie并设置cookie)
- MySQL那点事之常见操作
- 安装edge和express后运行是提示不能找到这些module的解决方法
- css取消默认样式
- 推荐一个使用的及时生成html代码文档软件
- GDAL RasterIO使用说明
- 关于登录中的记住我的功能(cookie实例)
- 层次语句【未看完全】
- EJB揭秘
- test
- 分布式中 CAP BASE ACID 理解
- 轻量级邮件客户端Geary官方ppa安装
- HttpClient文件上传
- Socket层实现系列 — accept()的实现(一)
- postgresql 字段sql语句