Java Web用戶登錄實(shí)例代碼
實(shí)現(xiàn)功能:
1、用戶登陸、注銷
2、利用session記錄用戶登陸信息
3、在JSP中展示已登陸用戶信息
實(shí)現(xiàn)原理:
登陸后通過(guò)判斷用戶名和密碼是否和存儲(chǔ)的一致,如果一致,就把用戶信息放到session中儲(chǔ)存;如果不一致就提示信息,并且返回登陸頁(yè)面。
顯示信息頁(yè)面上固定從session中找用戶登陸信息,找到就顯示用戶信息,沒(méi)找到就顯示登陸框。
注銷很簡(jiǎn)單,就是清空session信息。
主要文件:
1、LoginAction:struts2的Action類,用于處理JAVA端的主要登陸和登出邏輯。
2、login.jsp:用戶登陸頁(yè)面,用戶輸入用戶名和密碼,如果登陸失敗顯示失敗信息。
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;
}
/*
這里寫你自己通過(guò)用戶名查找用戶信息的業(yè)務(wù)邏輯
比如:使用手機(jī)號(hào)登陸
Citizen user = prmService.queryEGovCitizenByMobile(this.loginname);
....
*/
if(user == null || user.getPwd() == null || !user.getPwd().getValue().equals(this.password)) {
//登陸失敗
this.msg = "用戶不存在或密碼錯(cuò)誤!";
return Action.INPUT;
} else {
//登陸成功
//設(shè)置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);
//設(shè)置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:用戶登陸頁(yè)面,用戶輸入用戶名和密碼,如果登陸失敗顯示失敗信息。
<%@ 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>手機(jī)號(hào):</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>
以上所述是小編給大家介紹的Java Web用戶登錄實(shí)例代碼,希望對(duì)大家有所幫助!
相關(guān)文章
Spring Security添加二次認(rèn)證的項(xiàng)目實(shí)踐
在用戶自動(dòng)登錄后,可以通過(guò)對(duì)密碼進(jìn)行二次校驗(yàn)進(jìn)而確保用戶的真實(shí)性,本文就來(lái)介紹一下Spring Security添加二次認(rèn)證的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Spring Boot結(jié)合IDEA自帶Maven插件如何快速切換profile
IDEA是目前 Java 開發(fā)者中使用最多的開發(fā)工具,它有著簡(jiǎn)約的設(shè)計(jì)風(fēng)格,強(qiáng)大的集成工具,便利的快捷鍵,這篇文章主要介紹了Spring Boot結(jié)合IDEA自帶Maven插件快速切換profile,需要的朋友可以參考下2023-03-03
關(guān)于Unsupported major.minor version 49.0的錯(cuò)誤解決辦法
這篇文章主要介紹了關(guān)于Unsupported major.minor version 49.0的錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2015-11-11
聊聊Spring Boot 如何集成多個(gè) Kafka
這篇文章主要介紹了Spring Boot 集成多個(gè) Kafka的相關(guān)資料,包括配置文件,生成者和消費(fèi)者配置過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10
使用IDEA配置Tomcat和連接MySQL數(shù)據(jù)庫(kù)(JDBC)詳細(xì)步驟
這篇文章主要介紹了使用IDEA配置Tomcat和連接MySQL數(shù)據(jù)庫(kù)(JDBC)詳細(xì)步驟,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

