登陆 退出

本文详细解析了一个典型的用户登录与退出流程,包括登录前转跳、登录验证、登录成功后的处理以及退出登录过程。通过JavaScript和Java后端实现,展示了如何在前端收集用户输入并发送到后端进行验证,后端如何响应并设置会话状态,以及如何在退出登录时清除会话。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.tologin

<script>
function tologin() {
		var backurl = encodeURIComponent(location.href);
		location.href = "${contextPath}/cont/tologin.htm?backurl=" + backurl;
	}
</script>

@RequestMapping("/tologin.htm")
	public String tologin(HttpSession session, RequestParameter param) {

		if (!StringUtils.isBlank(param.getBackurl())) {
			if (httpSession.getAttribute("NOLOGIN_SHOP_URL") != null) {
				httpSession.removeAttribute("NOLOGIN_SHOP_URL");
			}
			httpSession.setAttribute("NOLOGIN_SHOP_URL", param.getBackurl());
			if (param.getBackurl().endsWith("logout.htm"))
				httpSession.setAttribute("NOLOGIN_SHOP_URL", "");

		}
		return "web/login";
	}

  2.login

<script type="text/javascript">
	function doLogin() {
		if (trim($('#username').val()) == "") {
			showmsg(0, "请输入用户名");
			return;
		}
		if (trim($('#password').val()) == "") {
			showmsg(0, "请输入密码");
			return;
		}
		$.ajax({
			url : "${contextPath}/web/login.htm",
			data : $("#loginForm").serialize(),
			cache : false,
			success : function(xmlHttp) {
				var res = xmlHttp;
				if (res.errorMessage && res.errorMessage != "") {
					showmsg(0, res.errorMessage);
				} else {
					if (str_isblank(res.status)) {
						showmsg(1, "登录成功!");
						window.setTimeout("window.location='${contextPath}/web/toindex.htm'", 1500);
					} else {
						showmsg(1, "登录成功!");
						var fromUrl = res.status;
						location.href = fromUrl;
					}
				}
			}
		});

	}
</script>



	@RequestMapping("/login.htm")
	@ResponseBody
	public Response login(Model model, RequestParameter param, InfoUser infoUser) {

		Response res = new Response();

		SessionUser suser = null;
		if (httpSession.getAttribute(WebConstants.SESSION_USER_KEY) != null) {
			suser = new SessionUser();
			suser = (SessionUser) httpSession.getAttribute(WebConstants.SESSION_USER_KEY);
		}

		if (null == suser || StringUtils.isBlank(suser.getUsername())) {

			// #0: 正常;
			// #1: 用户名不存在;
			// #2:密码不正确;
			Integer ret = webService.loginInfoUser(infoUser);
			if (ret == 1) {
				res.setErrorMessage("登录失败,用户名不存在。");
			} else if (ret == 2) {
				res.setErrorMessage("登录失败,密码不正确。");
			} else { // 登录成功,写session

				InfoUser infoUser1 = webService.getInfoUserByName(infoUser.getUsername());

				suser = new SessionUser();
				suser.setUserid(infoUser1.getUserid());
				suser.setUsername(infoUser1.getUsername());
				// suser.setPhonenum(infoUser1.getPhonenum());

				httpSession.setAttribute(WebConstants.SESSION_USER_KEY, suser);

				if (httpSession.getAttribute("NOLOGIN_SHOP_URL") != null) {
					String backurl = (String) httpSession.getAttribute("NOLOGIN_SHOP_URL");

					res.setStatus(backurl);
					httpSession.removeAttribute("NOLOGIN_SHOP_URL");
				}
			}
		}

		return res;
	}

  3.logout

<a href="${contextPath}/web/logout.htm" >退出登录</a>

@RequestMapping("/logout.htm")
	public String logout(Model model, RequestParameter param, SessionStatus sessionStatus) {

		// 清除用户session
		if (httpSession.getAttribute(WebConstants.SESSION_USER_KEY) != null) {
			httpSession.removeAttribute(WebConstants.SESSION_USER_KEY);
		}

		return "web/index";
	}

  

 

转载于:https://www.cnblogs.com/wzz1020/p/5108921.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值