`
阅读更多
此文主要来自www.blogjava.net/Max的实例

Struts 2.0
支持更高级的POJO访问,先定义一个User.java类。把usernamepassword属性,从Login类中分离出来,它可以使系统结构更清晰,对开发多层系统尤其有用。


User.java
package com.bulktree.struts2;

public class User {
    
private String username;
    
private String password;
    
public String getUsername() {
        System.out.println(
"******getUsername()******");
        
return username;
    }

    
public void setUsername(String username) {
        System.out.println(
"*******setUsername()********");
        
this.username = username;
    }

    
public String getPassword() {
        System.out.println(
"******getPassword()*******");
        
return password;
    }

    
public void setPassword(String password) {
        System.out.println(
"******setPassword()*********");
        
this.password = password;
    }

}

login2.jsp
<s:form action="login2" method="post">
        
<s:textfield name="user.username" label="USERNAME" tooltip="Enter Your UserName"></s:textfield>
        
<s:password name= "user.password" label="PASSWORD" tooltip="Enter Your PassWord"></s:password>
        
<s:submit label="login"></s:submit>
    
</s:form>
struts.xml文件中action配置:
<action name="login2" class="com.bulktree.struts2.LoginAction2">
            
<result name="success">/welcome.jsp</result>
            
<result name="input">/login2.jsp</result>
        
</action>
LoginAction2.java:
package com.bulktree.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction2 extends ActionSupport {
    
    
private User user;
    
private String message;
    
    
public void setUser(User user) {
        System.out.println(
"********setUser()***********");
        
this.user = user;
    }

    
    
public User getUser() {
        System.out.println(
"*********getUser()*************");
        
return user;
    }


    
public String getMessage() {
        System.out.println(
"************getMessage()********");
        
return message;
    }

    
    @Override
    
public String execute() throws Exception {
        System.out.println(
"*****execute()******");
        
if("bulktree".equals(user.getUsername()) && "oakertree".equals(user.getPassword())) {
            message 
= "Welcome, " + user.getUsername();
        }
 else {
            message 
= "Error!";
        }

        
return ActionSupport.SUCCESS;
        
    }

    @Override
    
public void validate() {
        System.out.println(
"******validate()******");
        
if(null == user.getUsername() || user.getUsername().length() < 5{
            
this.addFieldError("username","USERNAME ERROR");
        }

        
if(null == user.getPassword() || user.getPassword().length() < 5{
            
this.addFieldError("password","PASSWORD ERROR");
        }

    }

    
}

welcome.jsp:
YOUR USERNAME:<FONT size="5" color="red"><s:property value="user.username"/></FONT><br>
    YOUR PASSWORD:
<FONT size="5" color="red"><s:property value="user.password"/></FONT><br>
控制台输出及分析:
*********getUser()*************  //得到User类的实例
********setUser()***********  //执行setUser(),准备赋值操作
******setPassword()*********  //set赋值操作,此时是真正的赋值
*********getUser()*************  //得到User类的实例
*******setUsername()********  //set赋值操作,此时是真正的赋值
以上有struts2框架自动执行
******validate()******  //表单验证
******getUsername()******  //表单验证时调用get方法(判断username)
******getUsername()******  //表单验证时第二次调用get方法(判断username)
******getPassword()******* //表单验证时调用get方法(判断password)
******getPassword()*******  //表单验证时第二次调用get方法(判断password)
*****execute()******  //业务逻辑
******getUsername()******  //调用get方法
******getPassword()*******  //调用get方法
一下由Struts2框架自动执行
*********getUser()************* //得到User类的实例
******getUsername()******  //自动执行get方法
********getUser()*************  //得到User类的实例
******getPassword()*******  //自动执行get方法

我们可以把类的属性分离出来实现系统架构清晰、明了。


分享到:
评论

相关推荐

    Struts2 in action中文版

    第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 1.2.1 什么是框架 7 1.2.2 为什么使用框架 8 1.3 Struts 2框架...

    struts2 详解文档

    介绍Struts 2及Struts 2开发环境的搭建 第一个Struts 2应用开发 解决Struts 2配置文件无提示问题 Action名称的搜索顺序 Action配置的各项默认值 result配置的各种视图转发类型 为Action属性注入值 指定...

    Struts2文件的上传和下载

    Struts2中的文件的上传和下载 1. 文件上传的原理: 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1) application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性...

    深入浅出struts2

    Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器...

    struts工作流程.doc

    1. 客户端发送一个请求,...2. ActionSevlet首先调用struts配置文件(struts-config.xml),如果有表单提交,需要自动填充ActionForm Bean(找struts配置文件的),根据请求分派给相应的Action(找struts配置文件的)。

    struts高级实战进阶

    传智播客的struts高级实战进阶 MVC模式的回顾 回顾Struts的请求处理时序图 使用超连接的技巧 封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 ...

    struts2.0.jar

    · POJO表单: Struts 2不支持ActionForms特性。ActionForms中定义的属性可以直接放在Action类上。不需要使用所有的String属性。 · 智能默认值: Struts 2配置文件中的大多数配置元素都会有默认值,所以不需要设定值...

    struts2(2).docx

    struts2的请求数据封装,OGNL基本语法和Struts2表单验证等一些基础概念总结和理解,自己考试复习用,不严谨不客观。

    struts2实验一:动态方法调用+请求参数的获取+简单的表单数据验证

    struts2实验一:动态方法调用+请求参数的获取+简单的表单数据验证

    struts2+hibernate文件上传以及连接数据库操作

    strtus2+hibernate文件上传及连接数据库操作,使用模拟http请求测试的,验证类是updateTest类,文件上传类是uplodController,连接数据库的操作时productController类

    详解struts2的token机制和cookie来防止表单重复提交

    主要介绍了详解struts2的token机制和cookie来防止表单重复提交的相关资料,需要的朋友可以参考下

    JSP程序设计课件包含Hibernate,Struts的介绍

    相比于Struts 1,Struts 2加入很多新的元素,如访问截取组件(interceptor)。 在Struts 2的技术框架,所有的请求均被截取组件先处理,再交由动作类分发 。Struts.xml是Struts 2的必须配置文件,放在WEB-INF/classes...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    《深入浅出Struts2》是广受赞誉的Struts2优秀教程.它全面而深入地阐述了Strut2的各个特性,并指导开发人员如何根据遇到的问题对症下药。选择使用最合适的特性。作者处处从实战出发。在丰富的示例中直观地探讨了许多...

    非常好的struts2教程

    回顾Struts的请求处理时序图 使用超连接的技巧 封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与...

    struts+hibernate课件

    d、表单验证解决了请求数据的验证问题,增强了系统健壮性。 e、便于团队开发 Struts缺点: a、大量的使用标签,对于初学者难度较大。 b、ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成) ...

    一个struts的action跳转大全

    首先,Struts的ActionServlet接收到一个请求,然后根据struts-config.xml的配置定位到相应的mapping (映射);接下来如果form的范围是request或者在定义的范围中找不到这个form,创建一个新的form实例;取得form...

Global site tag (gtag.js) - Google Analytics