struts2框架+mysql,实现用户登录、注册功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012829611/article/details/70243181

说明:所有源码已上传到笔者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.在实现对数据库操作(连接、查询、添加、删除、修改)时,进行了很好的封装,代码通用率高,基本可以直接使用。


转载请注明!谢谢!

猜你喜欢

转载自blog.csdn.net/u012829611/article/details/70243181