Struts 2 + JQuery +Ajax 无刷新 登录验证

来源:互联网 发布:已过期备案域名 编辑:程序博客网 时间:2024/05/16 17:18

JSP里应该了Ajax 与水印的效果

 

JSP代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<HEAD>
    <base href="<%=basePath%>">
    <TITLE>考勤系统</TITLE>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
   
    <LINK href="css/User_Login.css" type="text/css" rel="stylesheet">
   
    <script language="javascript" type="text/javascript" src="js/jquery.js"></script>
    <script language="javascript" type="text/javascript" src="js/jquery.watermark.js"></script>
    <script language="javascript" type="text/javascript" src="js/chkUtil.js"></script>
    <script language="javascript" type="text/javascript" src="js/userLogin.js"></script>
   
</HEAD>
<BODY id="userlogin_body">
<form>
<DIV id="user_login">
<DL>
  <DD id="user_top">
  <UL>
    <LI class="user_top_l"></LI>
    <LI class="user_top_c"></LI>
    <LI class="user_top_r"></LI>
  </UL>
  </DD>
  <DD id="user_main">
  <UL>
    <LI class="user_main_l"></LI>
    <LI class="user_main_c">
    <DIV class="user_main_box">
    <UL>
      <LI class="user_main_text">用户名: </LI>
      <LI class="user_main_input"><INPUT class="TxtUserNameCssClass" id="userCode"
      maxLength="20" name="userCode"> </LI></UL>
    <UL>
      <LI class="user_main_text">密码: </LI>
      <LI class="user_main_input"><INPUT class="TxtPasswordCssClass" id="password"
      type="password" name="password" value="test"> </LI></UL>
    <UL>
      <LI class="user_main_text">验证码: </LI>
      <LI class="user_main_input"><div><span><input type="text" name="randCode" class="TxtValidateCodeCssClass" id="randCode" maxlength="4" value="1234" size="4"/></span>&nbsp;&nbsp;
      <span><img src="frame/image.jsp" width="50" height="20"></span>
      </div></LI>
    </UL>
    </DIV></LI>
      <LI class="user_main_r"><img id="btnEnter"
    style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px"
    src="images/user_botton.gif" name="btnEnter"/>
    </LI>
    </UL>
    </DD>
  <DD id="user_bottom">
  <UL>
    <LI class="user_bottom_l"></LI>
    <LI class="user_bottom_c" id="msgText">考勤系统 V1.0.0.1</LI>
    <LI class="user_bottom_r"></LI>
  </UL>
  </DD>
  </DL>
</DIV>
    <SPAN id="ValrUserName" style="DISPLAY: none; COLOR: red"></SPAN>
    <SPAN id="ValrPassword" style="DISPLAY: none; COLOR: red"></SPAN>
    <SPAN id="ValrValidateCode" style="DISPLAY: none; COLOR: red"></SPAN>
    <DIV id="ValidationSummary1" style="DISPLAY: none; COLOR: red"></DIV>
    <DIV></DIV>
</FORM>
</BODY>
</HTML>

 

 

XML文件:

<?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="userLogin" namespace="/attendance" extends="json-default">
        <action name="userLogin" class="com.test.attendance.action.UserAction" method="login">
             <result type="json">
                <param name="excludeProperties">
                    <!-- 序列化属性中排除 ,这里的userService,user将不会以json格式输出 -->
                    <!-- userService因为是注入进来的对象 这里不排除的话会报异常 -->
                    userService,user
                </param>
                <param name="root">responseText</param>
            </result>

        </action>
    </package>

    <package name="menu" namespace="/menu" extends="struts-default">
        <action name="welcome" class="com.test.attendance.action.MenuAction">
            <result>/frame/login.jsp</result>
        </action>
       
        <action name="index" class="com.test.attendance.action.MenuAction" method="index">
            <result name="SUCCESS">/frame/index.jsp</result>
            <result name="ERROR">/frame/error.jsp</result>
        </action>
    </package>

 

</struts>

 

Action 代码:

package com.snprint.attendance.action;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author Saindy
 *
 */
public class UserAction extends ActionSupport{
   
    private static final long serialVersionUID = -8176928115208075330L;
    private String userCode;
    private String userPwd;
    private String randCode;
    private String responseText;
    这里省去了get    set  方法

   
    /**
     * 进入Index.jsp 主界面
     * @return String
     * @throws Exception
     */
    public String index() throws Exception {
       
        return SUCCESS;
    }
   
    /**
     * 用户登录
     * @return String
     * */
    public String login() throws Exception {
       
        User user=new User();
        user.setUserCode(userCode);
        user.setUserPwd(userPwd);
        String result=null;
       
        //得到session中的验证码
        ActionContext actionContext=ActionContext.getContext();
        Map<String, Object> session=actionContext.getSession();
        String rand=(String) session.get("rand");
        if(rand.equals(randCode)){
            //查询数据库判断在返回true反之false
            if(userService.userLogin(user)){
                result="yes";
               
                //写入cookie
                //1、 创建cookie对象
                Cookie cookie = new Cookie("userCode",userCode);
                //2、 设置最大时效
                //默认该cookie是存储在浏览器的内存中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。   
                //本程序设置cookie的有效时间为七天,如果设置为0则是删除该cookie
                cookie.setMaxAge(60*60*24*7);
                //3、向客户端添加Cookie
                //将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie头信息,而是创建新的头信息。
                //注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应头信息,即发送到客户程序。
                ServletActionContext.getResponse().addCookie(cookie); //生成cookie到客户端
               
                //记录登录成功,并将它保存到session中
                session.put("loginFlag","true");
               
                //登录成功之后,保存其他信息到session中
                int userID=user.getUserID();
                String userCode=user.getUserCode();
                session.put("userCode", userCode);
                session.put("userID", userID);

                这里省去了Service   和 Dao 的两个方法


                List<User> userInfo=userService.getUserInfo(userID);
                Iterator<User> it=userInfo.iterator();
                while(it.hasNext()){
                    user=(User) it.next();
                    String s_trueName=user.getTrueName();
                    int s_powers=user.getPowers();
                   
                    session.put("s_trueName", s_trueName);
                    session.put("s_powers", s_powers);
                }
            }
            else{
                result="no";
            }
        }
        else{
            result="randCode";
        }
        session.remove("rand");
        setResponseText(result);
        return SUCCESS;
    }
}