Java Web 用户登陆示例代码

本文介绍了一个基于Struts2框架实现的用户登录与注销功能。通过使用session来记录用户的登录状态,并在登录成功后将用户信息保存到session中。注销功能则通过清除session中的用户信息来实现。
摘要由CSDN通过智能技术生成
实现功能:

1、用户登陆、注销

2、利用session记录用户登陆信息

3、在JSP中展示已登陆用户信息

实现原理:

登陆后通过判断用户名和密码是否和存储的一致,如果一致,就把用户信息放到session中储存;如果不一致就提示信息,并且返回登陆页面。

显示信息页面上固定从session中找用户登陆信息,找到就显示用户信息,没找到就显示登陆框。

注销很简单,就是清空session信息。

主要文件:

1、LoginAction:struts2的Action类,用于处理JAVA端的主要登陆和登出逻辑。

2、login.jsp:用户登陆页面,用户输入用户名和密码,如果登陆失败显示失败信息。

3、page.jsp:登陆成功后显示用户信息。

4、struts.xml:struts的配置文件。



LoginAction:struts2的Action类,用于处理JAVA端的主要登陆和登出逻辑

package luju.me.teach.struts2.login;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang.StringUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

/**
* @author 鲁炬 http://luju.me
*
*/
public class LoginAction {

private String loginname;

private String password;

private String msg;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getLoginname() {
return loginname;
}

public void setLoginname(String loginname) {
this.loginname = loginname;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

/** 用户登陆 */
public String login() {
if(StringUtils.isBlank(this.loginname)) {
return Action.INPUT;
}
/*
这里写你自己通过用户名查找用户信息的业务逻辑
比如:使用手机号登陆
Citizen user = prmService.queryEGovCitizenByMobile(this.loginname);
....
*/
if(user == null || user.getPwd() == null || !user.getPwd().getValue().equals(this.password)) {
//登陆失败
this.msg = "用户不存在或密码错误!";
return Action.INPUT;
} else {
//登陆成功
//设置session
this.getSession().setAttribute("_USER_INFO_LOGIN_NAME_", this.loginname);
this.getSession().setAttribute("_USER_INFO_USER_ID_", user.getId().getValue());
this.getSession().setAttribute("_USER_INFO_USER_INFO_", user);
//设置cookie
this.getResponse().addCookie(new Cookie("_USER_INFO_LOGIN_NAME_", this.loginname));
this.getResponse().addCookie(new Cookie("_USER_INFO_USER_ID_", user.getId().getValue()));
return Action.SUCCESS;
}
}

/**
* 注销
*/
public String loginout() {
//清空session
this.getSession().invalidate();
return Action.SUCCESS;
}

public HttpSession getSession() {
return ServletActionContext.getRequest().getSession();
}

public HttpServletRequest getRequest() {
return ServletActionContext.getRequest();
}

public HttpServletResponse getResponse() {
return ServletActionContext.getResponse();
}

}



struts.xml:struts的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="common" namespace="/common">
<action name="login" class="luju.me.site.common.action.LoginAction"
method="login">
<result name="input">login.jsp</result>
<result name="success" type="redirect">/page.jsp</result>
</action>
<action name="loginout" class="luju.me.site.common.action.LoginAction"
method="loginout">
<result name="success" type="redirect">login.action</result>
</action>
</package>
</struts>



login.jsp:用户登陆页面,用户输入用户名和密码,如果登陆失败显示失败信息。

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>欢迎登录</title>
</head>

<body>
<div id="login">
<span>${msg}</span>
<form name="form1" method="post" action="<c:url value="/common/login.action" />" >
<span>
<label>用户名:</label>
<input name="loginname" id="loginname" type="text" value="admin" />
</span>
<span>
<label>密码:</label>
<input type="password" name="password" id="password" value="123"/>
</span>
<span>
<input type="submit" value="登陆" />
</span>
</form>
</div>
</body>

</html>



page.jsp:登陆成功后显示用户信息。

<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
boolean isLogin = false;
String loginName = (String)request.getSession().getAttribute("_USER_INFO_LOGIN_NAME_");
if(loginName != null && !"".equals(loginName)){
isLogin = true;
}
request.setAttribute("isLogin",isLogin);
request.setAttribute("loginName",loginName);
%>
<c:if test="${isLogin}">
你好:${loginName}
  
<a href="<c:url value="/common/loginout.action" />">注销</a>
</c:if>
<c:if test="${!isLogin}">
<form name="login_form" method="post" action="<c:url value="/common/login.action" />" >
<span>
<label>手机号:</label>
<input name="loginname" id="loginname" type="text" value="" />
</span>
<span>
<label>密码:</label>
<input type="password" name="password" id="password" value=""/>
</span>
<span>
<input type="submit" value="登陆" />
</span>
</form>
</c:if>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值