1. 程式人生 > >struts2框架+mysql,實現使用者登入、註冊功能

struts2框架+mysql,實現使用者登入、註冊功能

說明:所有原始碼已上傳到筆者GitHub上,歡迎follow、star。感謝!!!

一、Demo介紹

本Demo具體實現了以下功能:
1.基於struts2框架+MySQL資料庫驗證,實現了使用者登入、註冊功能。
2.使用者註冊時,分別使用客戶端校驗和伺服器端校驗兩種校驗方式,實現了對使用者輸入資訊的校驗,對不符合要求的資訊,予以提示且不允許註冊,需重新填寫註冊。

二、主要程式碼

1.login.jsp:該頁面實現了一個Form表單中相應多個action,具體實現方法原理,請見http://blog.csdn.net/u012829611/article/details/70243230

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>使用者登入</title> </head> <body background="images/xxx.gif"> <center> <script type="text/javascript"> function regist(){ myform.action="register.action"; myform.submit(); } </script> <s:form action
="login" method="post" name="myform">
<s:textfield name="username" label="使用者名稱" cssStyle="width:160px;heigh:26px;"/> <s:password name="password" label="密碼" cssStyle="width:160px;heigh:26px"/> <!-- <s:submit type="image" src="images/login.gif"/> <s:submit value="登入"/> --> <input type=submit value="登入"> <input type="button" value="註冊" onclick="regist()"/> </s:form> </center> </body> </html>

2.LoginAction.java:登入action,用於對使用者名稱、密碼進行資料庫驗證

package com.cy.action;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;

import com.cy.domain.User;
import com.cy.service.UsersService;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

    private String username;
    private String password;
    private HttpServletRequest request; 

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() throws Exception {

        UsersService usersService=new UsersService();
        User user=new User();

        request=ServletActionContext.getRequest();

        user.setUsername(username);
        user.setPassword(password);

        if(usersService.checkUser(user)!=null){

            request.getSession().setAttribute("userInfo", user);

            return SUCCESS;
        }else{

            return ERROR;
        }       

    }

    public String register(){

        return "regist";
    }

}

3.RegistAction.java:註冊action,實現資料庫中使用者資訊的新增操作,同時,對使用者註冊輸入的資訊進行了校驗

package com.cy.action;

import java.util.regex.Pattern;

import com.cy.utils.SqlHelper;
import com.opensymphony.xwork2.ActionSupport;

public class RegistAction extends ActionSupport {

    private String username;
    private String password;
    private String ip="10.160.104.199";

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() throws Exception {

        String sql="insert into user(username,password,ip) values(?,?,?)";
        String []paras={username,password,ip};
        SqlHelper sqlHelper=new SqlHelper();
        sqlHelper.executeUpdate(sql, paras);
        return SUCCESS;

    }

    //伺服器端校驗:重寫struts2框架中的validate()函式,實現對使用者註冊時,輸入資訊的校驗(推薦使用此方法)
    //客戶端校驗:在regist.jsp頁面中使用script指令碼實現校驗(相關程式碼可檢視regist.jsp頁面)
    @Override
    public void validate() {

        if(username==null||"".equals(username.trim())){
            this.addFieldError("username", "使用者名稱不能為空!");

        }else if(!Pattern.compile("^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$").matcher(username.trim()).matches()){
            this.addFieldError("username", "使用者名稱為學號!長度在5~20之間,且以字母開頭!");

        }else if(password==null||"".equals(password.trim())){
            this.addFieldError("password", "密碼不能為空!");

        }else if(password.length()>20||password.length()<6){
            this.addFieldError("password", "密碼長度必須在6~20之間!");

        }

    }

}

4.使用者輸入資訊錯誤提示截圖:
資訊校驗

5.資料庫建立的SQL語句:資料庫名為lms,表名為:user

create database lms;
use lms;
create table user(username char(20) primary key,
                  password varchar(30),
                  ip varchar(30)
                  )charset=utf8;

三、說明

1.本文列出了部分主要程式碼,完整Demo可到
http://download.csdn.net/detail/u012829611/9819232 下載,解壓後直接匯入eclipse中即可執行。
2.上面主要程式碼中列出了資料庫建立的SQL語句,輸入即可建立資料庫。
3.一個form表單中如何配置多個action?具體實現原理方法及程式碼詳見http://blog.csdn.net/u012829611/article/details/70243230
4.在實現對資料庫操作(連線、查詢、新增、刪除、修改)時,進行了很好的封裝,程式碼通用率高,基本可以直接使用。


轉載請註明!謝謝!