Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 291|回复: 0

[struts学习]实战struts2:用户登录

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-11 07:17:37 | 显示全部楼层 |阅读模式
    内容提要:本文通过“用户登录”这个简单功能,介绍struts2的标志(Tag)、Action、输入校验(Input Validation)以及本地化输出(Localizing Output)。 开发环境:myeclipse5.0+eclipse3.2+jdk5.0+tomcat5.5+struts2+junit3.8

    项目目录结构







       















      项目文件
    1. 首先我们为“用户登录”提供一个简单入口
    Welcome.jsp:
      
       
       
       
        <%
       
        @ taglib prefix = " s "  uri = " /struts-tags "
        %>
       

        <
        HTML
        >
       
         
        <
        head
        >
       
             
        <
        title
        >
        Welcome
        </
        title
        >
       
             
        <
        link  
        href
        ="<s:url value="
        /css/tutorial.css"
        />
        " rel="stylesheet" type="text/css" />
         
        </
        head
        >
       
         
        <
        body
        >
       
             
        <
        h3
        >
       
                Commands
             
        </
        h3
        >
       
             
        <
        ul
        >
       
                
        <
        li
        >
       
                     
        <
        a  
        href
        ="<s:url action="
        Register"
        />
        ">Register
        </
        a
        >
       
                
        </
        li
        >
       
                
        <
        li
        >
       
                     
        <
        a  
        href
        ="<s:url action="
        Logon!input"
        />
        ">Sign On
        </
        a
        >
       
                
        </
        li
        >
       
             
        </
        ul
        >
       
         
        </
        body
        >
       

        </
        html
        >
       
    这里,我们用到的是这句:



       
       
        <
        a
        href
        ="<s:url action="
        Logon!input"
        />
        ">Sign On
        </
        a
        >
        暂时先不理会“!input”的具体意义,接着往下看。

    2. 登录页面
    Logon.jsp:



       
       
       
        <%
       
        @ taglib prefix="s" uri="/struts-tags"
        %>
       

        <
        html
        >
       
       
        <
        head
        >
       
            
        <
        title
        >
        Login
        </
        title
        >
       
       
        </
        head
        >
       
       
        <
        body
        >
       
            
        <
        s:form
        action
        ="Logon"
        >
       
                
        <
        s:textfield
        label
        ="User Name"
         name
        ="username"
         
        />
       
                
        <
        s:password
        label
        ="Password"
         name
        ="password"
         
        />
       
                
        <
        s:submit
        />
       
            
        </
        s:form
        >
       
       
        </
        body
        >
       

        </
        html
        >
       
    3. 接着,编写与之对应的Action类。
    com.cleversoft.struts2.demo.Logon.java:



       
       
        package
         com.cleversoft.struts2.demo;


        import
         com.opensymphony.xwork2.ActionSupport;


        public
         
        class
         Logon
        extends
         ActionSupport
       
        {

        /** *//**
         *
         */
        private static final long serialVersionUID = -9039794122089833258L;

        public String execute() throws Exception {

            if (isInvalid(getUsername()))
                return INPUT;
            if (isInvalid(getPassword()))
                return INPUT;
            return SUCCESS;
        }

        private boolean isInvalid(String value) {
            return (value == null || value.length() == 0);
        }

        private String username;

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        private String password;

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

    }
       
    需要注意这句:



       
       
                
        if
         (isInvalid(getUsername()))
                
        return
         INPUT;
            
        if
         (isInvalid(getPassword()))
                
        return
         INPUT;
            
        return
         SUCCESS;
       
    如果用户名和密码均不为空的话,返回“success”,响应Menu.jsp页面;否则返回“input”,响应Logon.jsp页面。(见随后struts.xml中的Action配置)
    现在我们可以回想上面出现的“!input”。

    4. 以上提到返回“input”,那接着看看与之对应的输入校验页面。
    Logon-validation.xml:



       
       
        <!
        DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
        >
       


        <
        validators
        >
       
       
        <
        field
        name
        ="username"
        >
       
            
        <
        field-validator
        type
        ="requiredstring"
        >
       
                
        <
        message
        >
        Username is required
        </
        message
        >
       
            
        </
        field-validator
        >
       
       
        </
        field
        >
       
       
        <
        field
        name
        ="password"
        >
       
            
        <
        field-validator
        type
        ="requiredstring"
        >
       
                
        <
        message
        >
        Password is required
        </
        message
        >
       
            
        </
        field-validator
        >
       
       
        </
        field
        >
       

        </
        validators
        >
        需要注意的是,命名需要与与其对应的Action类匹配。 5. 最后需要进行Action配置。
    struts.xml:
       
       
        <!
        DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"
        >
       

        <
        struts
        >
       
       
        <
        package
        name
        ="com.cleversoft.struts2.demo"
       
            extends
        ="struts-default"
        >
       
            
        <
        action
        name
        ="HelloWorld"
       
                class
        ="com.cleversoft.struts2.demo.HelloWorld"
        >
       
                
        <
        result
        >
        /HelloWorld.jsp
        </
        result
        >
       
            
        </
        action
        >
       
            
        <
        action
        name
        ="Welcome"
        >
       
                
        <
        result
        >
        /Welcome.jsp
        </
        result
        >
       
            
        </
        action
        >
       
            
        <
        action
        name
        ="Menu"
        >
       
                
        <
        result
        >
        /Menu.jsp
        </
        result
        >
       
            
        </
        action
        >
       
            
        <
        action
        name
        ="Logon!*"
         method
        ="{1}"
       
                class
        ="com.cleversoft.struts2.demo.Logon"
        >
       
                
        <
        result
        type
        ="redirect-action"
        >
        Menu
        </
        result
        >
       
                
        <
        result
        name
        ="input"
        >
        /Logon.jsp
        </
        result
        >
       
            
        </
        action
        >
       
       
        </
        package
        >
       

        </
        struts
        >
       
    其中:



       
       
                
        <
        action
        name
        ="Logon!*"
         method
        ="{1}"
       
                class
        ="com.cleversoft.struts2.demo.Logon"
        >
       
                
        <
        result
        type
        ="redirect-action"
        >
        Menu
        </
        result
        >
       
                
        <
        result
        name
        ="input"
        >
        /Logon.jsp
        </
        result
        >
       
            
        </
        action
        >
       
    “method="{1}"”等价于“method=input”,这是通配符式的写法。

    6. 其他

    Menu.jsp:



       
       
        <
        html
        >
       
       
        <
        head
        >
       
            
        <
        title
        >
        Missing Feature
        </
        title
        >
       
       
        </
        head
        >
       

       
        <
        body
        >
       
            
        <
        p
        >
       
                This feature is under construction. Please try again in the next interation.
            
        </
        p
        >
       
       
        </
        body
        >
       

        </
        html
        >
        7. 运行
    访问http://localhost:8080/struts2/Welcome.action
    运行结果:












    登录





      

    输入校验













    登录成功
















    8. 本地化输出
    首先需要添加资源文件
    package.properties:
       
       
        requiredstring
        =
         ${getText(fieldName)} is required.
    password
        =
         Password
    username
        =
         User Name
        接着需要修改Logon-validation.xml和Logon.jsp
    Logon-validation.xml:
      
       
       
        <!
        DOCTYPE validators PUBLIC
    "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
    "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"
        >
       


        <
        validators
        >
       
       
        <
        field
        name
        ="username"
        >
       
            
        <
        field-validator
        type
        ="requiredstring"
        >
       
                
        <
        message
        key
        ="requiredstring"
        />
       
            
        </
        field-validator
        >
       
       
        </
        field
        >
       
       
        <
        field
        name
        ="password"
        >
       
            
        <
        field-validator
        type
        ="requiredstring"
        >
       
                
        <
        message
        key
        ="requiredstring"
        />
       
            
        </
        field-validator
        >
       
       
        </
        field
        >
       

        </
        validators
        >
        Logon.jsp:
       
       
       
        <%
       
        @ taglib prefix="s" uri="/struts-tags"
        %>
       

        <
        html
        >
       
       
        <
        head
        >
       
            
        <
        title
        >
        Login
        </
        title
        >
       
       
        </
        head
        >
       
       
        <
        body
        >
       
            
        <
        s:form
        action
        ="Logon"
        >
       
                
        <
        s:textfield
        label
        ="%{getText("username")}"
         name
        ="username"
        />
       
                
        <
        s:password
        label
        ="%{getText("password")}"
         name
        ="password"
         
        />
       
                
        <
        s:submit
        />
       
            
        </
        s:form
        >
       
       
        </
        body
        >
       

        </
        html
        >
         参考资料:
    1. Getting Started
    2. http://www.blogjava.net/max/category/16130.html
       
         
         
          
          

            
          

            
          
         
         
      


    源码下载:http://file.javaxxz.com/2014/10/11/071736765.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-22 16:34 , Processed in 0.500073 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表