码迷,mamicode.com
首页 > 其他好文 > 详细

9.用户模块:用户登录功能

时间:2015-04-25 00:17:50      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

用户登录业务:

1、用户登录页面点击登录校验用户名和密码不能为空!

2、登录失败页面不跳转,显示登录失败错误信息!

3、登录成功跳转到首页,首页显示登录人的姓名。


-------------------------相关代码-----------------------------------

1、login.jsp

首先提交执行函数checkForm进行用户名和密码的校验,然后提交到action="${pageContext.request.contextPath }/user_login.action",代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0080)http://localhost:8080/mango/login.jhtml?redirectUrl=%2Fmango%2Fcart%2Flist.jhtml -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>会员登录</title>

<link href="${pageContext.request.contextPath}/css/common.css" rel="stylesheet" type="text/css"/>
<link href="${pageContext.request.contextPath}/css/login.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
	function checkForm(){
		//用户名校验
		var username = document.getElementById("username").value;
		if(username==null || username==''){
			alert("用户名不能为空");
			return false;
		}
		
		//密码校验
		var password = document.getElementById("password").value;
		if(password==null || password==''){
			alert("密码不能为空");
			return false;
		}
	}
</script>

</head>
<body>

<div class="container header">
	<div class="span5">
		<div class="logo">
			<a href="http://localhost:8080/mango/">
				"<img src="${pageContext.request.contextPath}/image/r___________renleipic_01/logo.gif" alt="商城">
			</a>
		</div>
	</div>
	<div class="span9">
<div class="headerAd">
					<img src="${pageContext.request.contextPath}/image/header.jpg" width="320" height="50" alt="正品保障" title="正品保障">
</div>	</div>
	<%@include file="menu.jsp" %>
	
</div>	<div class="container login">
		<div class="span12">
<div class="ad">
					<img src="${pageContext.request.contextPath}/image/login.jpg" width="500" height="330" alt="会员登录" title="会员登录">
</div>		</div>
		<div class="span12 last">
			<div class="wrap">
				<div class="main">
					<div class="title">
						<strong>会员登录</strong>USER LOGIN 
					</div>
					<div><s:actionmessage/></div>
					<form id="loginForm" action="${pageContext.request.contextPath }/user_login.action" method="post" novalidate="novalidate" onsubmit="return checkForm();">
						<table>
							<tbody><tr>
								<th>
										用户名:
								</th>
								<td>
									<input type="text" id="username" name="username" class="text" maxlength="20">
									
								</td>
							</tr>
							<tr>
								<th>
									密  码:
								</th>
								<td>
									<input type="password" id="password" name="password" class="text" maxlength="20" autocomplete="off">
								</td>
							</tr>
								<tr>
									<th>
										验证码:
									</th>
									<td>
										<span class="fieldSet">
											<input type="text" id="captcha" name="captcha" class="text captcha" maxlength="4" autocomplete="off"><img id="captchaImage" class="captchaImage" src="${pageContext.request.contextPath}/image/captcha.jhtml" title="点击更换验证码">
										</span>
									</td>
								</tr>
							<tr>
								<th> 
									
								</th>
								<td>
									<label>
										<input type="checkbox" id="isRememberUsername" name="isRememberUsername" value="true">记住用户名
									</label>
									<label>
										  <a >找回密码</a>
									</label>
								</td>
							</tr>
							<tr>
								<th> 
									
								</th>
								<td>
									<input type="submit" class="submit" value="登 录">
								</td>
							</tr>
							<tr class="register">
								<th> 
									
								</th>
								<td>
									<dl>
										<dt>还没有注册账号?</dt>
										<dd>
											立即注册即可体验在线购物!
											<a href="./会员注册.htm">立即注册</a>
										</dd>
									</dl>
								</td>
							</tr>
						</tbody></table>
					</form>
				</div>
			</div>
		</div>
	</div>
<div class="container footer">
	<div class="span24">
	  <div class="footerAd"><img src="${pageContext.request.contextPath}/image/footer.jpg" width="950" height="52" alt="我们的优势" title="我们的优势" /></div>	
	</div>
	<div class="span24">
		<ul class="bottomNav">
					<li>
						<a >关于我们</a>
						|
					</li>
					<li>
						<a>联系我们</a>
						|
					</li>
					<li>
						<a>招贤纳士</a>
						|
					</li>
					<li>
						<a>法律声明</a>
						|
					</li>
					<li>
						<a>友情链接</a>
						|
					</li>
					<li>
						<a target="_blank">支付方式</a>
						|
					</li>
					<li>
						<a  target="_blank">配送方式</a>
						|
					</li>
					<li>
						<a>服务声明</a>
						|
					</li>
					<li>
						<a>广告声明</a>
						
					</li>
		</ul>
	</div>
	<div class="span24">
		<div class="copyright">Copyright © 2005-2015 网上商城 版权所有</div>
	</div>
</div>
</body></html>

2、根据struts.xml中的配置,需要在UserAction.java中编写login方法。代码如下:

/**
	 * 登录
	 * @return
	 */
	public String login(){
		User existUser = userService.login(user);
		if(existUser==null){
			//登录失败
			this.addActionMessage("登录失败:用户名或密码错误或未激活!");
			return LOGIN;
		}else{
			//登录成功,将信息存入到session中
			ServletActionContext.getRequest().getSession().setAttribute("existUser", existUser);
			return "loginSuccess";
		}
	}

3、action调用UserService中的login方法,UserService中的login方法代码如下:

/**
	 * 登录
	 * @param user
	 * @return
	 */
	public User login(User user) {
		return userDao.login(user);
	}

4、UserService.java中调用UserDao中的login方法,查询用户信息需要满足用户名密码正确并且状态为1(激活),代码如下:

/**
	 * 登录
	 * @param user
	 * @return
	 */
	public User login(User user) {
		String hql = "from User where username=? and password=? and state=?";
		List<User> list = this.getHibernateTemplate().find(hql, user.getUsername(),user.getPassword(),1);
		if(list!=null && list.size()>0){
			return list.get(0);
		}
		return null;
	}

5、UserAction中返回的逻辑视图需要在struts.xml中进行配置,其代码如下:

<!-- 用户action -->
    	<action name="user_*" class="userAction" method="{1}">
    		<result name="registPage">/WEB-INF/jsp/regist.jsp</result>
    		<result name="input">/WEB-INF/jsp/regist.jsp</result>
    		<result name="msg">/WEB-INF/jsp/msg.jsp</result>
    		<result name="loginPage">/WEB-INF/jsp/login.jsp</result>
    		<result name="login">/WEB-INF/jsp/login.jsp</result>
    		<result name="loginSuccess" type="redirect">index</result>
    	</action>

6、当登录失败时,需要在login.jsp中显示错误信息。

首先需要引入struts2的标签。

<%@ taglib uri="/struts-tags" prefix="s"%>

然后在页面中加入显示错误信息的代码。<div><s:actionmessage/></div>

login.jsp页面代码上面已列出,里面找得到这两句代码。


7、当登录成功时,需要跳转到首页,去掉登录注册的显示,增加显示登录人的姓名、我的订单和退出。

因为index.jsp中包含menu.jsp信息,所以需要在index.jsp中引入struts2的标签,如此menu.jsp中就可以用struts2的标签来进行条件判断了。

menu.jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<div class="span10 last">
		<div class="topNav clearfix">
			<ul>
				<s:if test="#session.existUser == null">
				<li id="headerLogin" class="headerLogin" style="display: list-item;">
					<a href="${pageContext.request.contextPath }/user_loginPage.action">登录</a>|
				</li>
				<li id="headerRegister" class="headerRegister" style="display: list-item;">
					<a href="${pageContext.request.contextPath }/user_registPage">注册</a>|
				</li>
				</s:if>
				<s:else>
				<li id="headerLogin" class="headerLogin" style="display: list-item;">
					欢迎您:<s:property value="#session.existUser.name"/>|
				</li>
				<li id="headerLogin" class="headerLogin" style="display: list-item;">
					<a href="#">我的订单</a>|
				</li>
				<li id="headerRegister" class="headerRegister" style="display: list-item;">
					<a href="#">退出</a>|
				</li>
				</s:else>
						<li>
							<a>会员中心</a>
							|
						</li>
						<li>
							<a>关于我们</a>
						</li>
			</ul>
		</div>
		<div class="cart">
			<a  href="./购物车.htm">购物车</a>
		</div>
			<div class="phone">
				客服热线:
				<strong>88888888</strong>
			</div>
	</div>
	<div class="span24">
		<ul class="mainNav">
					<li>
						<a href="./index.htm">首页</a>
						|
					</li>
					<li>
						<a href="./蔬菜分类.htm">定制套餐</a>
						|
					</li>
					<li>
						<a >安全频道</a>
						|
					</li>
					<li>
						<a>商城卡</a>
						|
					</li>
					<li>
						<a>蔬菜基地</a>
						|
					</li>
					<li>
						<a>节气养生</a>
						|
					</li>
					<li>
						<a>便民服务</a>
						|
					</li>
					
		</ul>
	</div>

8、效果图

技术分享



9.用户模块:用户登录功能

标签:

原文地址:http://blog.csdn.net/xiongwt/article/details/45254805

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!