使用Struts2搭建登錄注冊示例


使用Struts2來搭建mvc網站框架還是比較容易的,Struts2提供了各項輔助功能,保證了web開發的快速方便。下面使用struts2來搭建一個登錄注冊示例。

0 項目結構截圖

 

1 搭建Struts2環境

1.1 導入struts2基本包

因為這是一個簡單的示例,所以僅用到了struts最進本的功能,所以只需導入struts的基本包即可,具體包如下:

其中文件名中的版本號因不同版本而異。將上面這些包放入WEB-INF/lib目錄下,然后在將包導入項目中。

1.2 在web.xml中配置Struts2的過濾器

struts2使用servlet的過濾器來引入struts2框架,該過濾器類名稱為:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,具體模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>LoginDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
      <filter-name>struts</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
      <filter-name>struts</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

1.3 在src目錄下創建struts.xml文件,該文件是struts2的默認配置文件,該項目僅用在struts.xml中配置action即可,具體模板如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/" extends="struts-default">
        <action name="login" class="com.login.demo.action.LoginAndRegisterAction" method="login">
            <result name="success">/index.jsp</result>
            <result name="login">/login.jsp</result>
        </action>
        <action name="register" class="com.login.demo.action.LoginAndRegisterAction" method="register">
            <result name="success">/index.jsp</result>
            <result name="register">/register.jsp</result>
        </action>
    </package>
</struts>

通過以上步驟就將struts2框架引入了項目中,下面添加對應的代碼實現。

2 添加業務實現

2.1 添加User實體類

User.java

package com.login.demo.model;

public class User {

    private String name;
    
    private String pass;
    
    private String gender;
    
    private int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

2.2 添加LoginAndRegisterAction

因為登錄和注冊有很大的相似性,所以將這兩個動作合並為一個,在struts.xml中配置action時可以分解為login和register動作,然后分別為其制定method屬性,這樣struts2調用時就會調用method制定的方法來代替默認的execute方法,代碼如下:

LoginAndRegisterAction.java

package com.login.demo.action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.login.demo.model.User;

public class LoginAndRegisterAction implements Action {

    private User user;
    
    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
    
    public String login()
    {
        if(getUser() != null)
        {
            if(getUser().getName() != null && getUser().getName().trim().length() > 0 &&
                    getUser().getPass() != null && getUser().getPass().trim().length() > 0)
            {
                ActionContext.getContext().getSession().put("type", "login");
                return SUCCESS;
            }
        }
        return LOGIN;
    }
    
    public String register()
    {
        if(getUser() != null)
        {
            if(getUser().getName() != null && getUser().getName().trim().length() > 0 &&
                    getUser().getPass() != null && getUser().getPass().trim().length() > 0 &&
                    getUser().getGender() != null && 
                    (getUser().getGender().equals("male") || getUser().getGender().equals("female")) &&
                    getUser().getAge() > 0)
            {
                ActionContext.getContext().getSession().put("type", "register");
                return SUCCESS;
            }
        }
        return LOGIN;
    }

    @Override
    public String execute() throws Exception {
        return null;
    }
}

2.3 添加login.jsp

<%@ page contentType="text/html; charset=utf-8"%>
<!DOCTYPE>
<html>
    <head>
        <title>Login Demo</title>
    </head>
    <body>
        <form action="login" method="get">
            NAME: <input type="text" name="user.name"><br>
            PASS: <input type="password" name="user.pass"><br>
            <button type="submit">Login</button> <a href="register.jsp">Register</a>
        </form>
    </body>
</html>

2.4 添加register.jsp

<%@ page contentType="text/html; charset=utf-8"%>
<!DOCTYPE>
<html>
    <head>
        <title>Login Demo</title>
    </head>
    <body>
        <form action="register" method="get">
            NAME: <input type="text" name="user.name"><br>
            PASS: <input type="password" name="user.pass"><br>
            AGE: <input type="text" name="user.age"><br>
            GENDER: <select name="user.gender">
                        <option value="male">male</option>
                        <option value="female">female</option>
                    </select>
            <button type="submit">Login</button>
        </form>
    </body>
</html>

2.5 添加index.jsp

<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE>
<html>
    <head>
        <title>Login Demo</title>
    </head>
    <body>
        <s:if test='#session.type=="login"'>
            Name: <s:property value="user.name"/><br>
            Pass: <s:property value="user.pass"/><br>
        </s:if>
        <s:elseif test='#session.type=="register"'>
            Name: <s:property value="user.name"/><br>
            Pass: <s:property value="user.pass"/><br>
            Age: <s:property value="user.age"/><br>
            Gender: <s:property value="user.gender"/><br>
        </s:elseif>
        <s:else>
            <% response.sendRedirect("login.jsp"); %>
        </s:else>
    </body>
</html>

 通過以上過程就完成了本示例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM