zoukankan      html  css  js  c++  java
  • 使用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>

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

  • 相关阅读:
    comparator接口与Comparable接口的区别
    heap和stack有什么区别
    聚集索引和非聚集索引(整理)
    SQL里的EXISTS与in、not exists与not in
    SQL中CONVERT转化函数的用法
    GCC 对C语言的扩展
    C++宏定义详解
    How to Find Processlist Thread id in gdb !!!!!GDB 使用
    Netdata----Linux 性能实时监测工具
    java开发C语言编译器
  • 原文地址:https://www.cnblogs.com/lvniao/p/5602067.html
Copyright © 2011-2022 走看看