`
龙塘湾
  • 浏览: 135418 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Struts2中表单数据怎样实例化

阅读更多
1、使用领域对象来接收用户输入
er对象中包含两个字段:username和password,在Action中有一个User对象user,则在jsp中:

Jsp代码
<input type="text" name="user.username">  
<input type="text" name="user.password"> 

<input type="text" name="user.username">
<input type="text" name="user.password"> 来进行数据绑定。

当Struts2尝试设置user对象的username属性时,将依次调用以下的方法:

Java代码
action.getUser();  
action.setUser(new User());  
action.getUser().setUserName(); 

action.getUser();
action.setUser(new User());
action.getUser().setUserName();Struts2首先尝试获得User对象的引用,当它发现User对象为null时,它将使用User类的默认构造方法创建一个User实例,并调用action的setUser()方法设置这个实例。这样,Struts2就可以设置Usser对象的username字段了。



在Struts2中,自动实例化对象的特性对于任意层次的对象包含关系都是适用的。



例如, user.address.street这样的表达式会调用:

Java代码
getUser().getAdderss().setStreet(...); 

getUser().getAdderss().setStreet(...); Struts2会先创建User对象,接着创建Address对象,然后设置Address对象的street属性。



2、使用ModelDriver action
Java代码
public class LoginAction implements Action, ModelDriven<User> {  
      
    private User user = new User();  
 
    @Override 
    public User getModel() {  
         return user;  
    }  
 


public class LoginAction implements Action, ModelDriven<User> {
   
    private User user = new User();

    @Override
    public User getModel() {
         return user;
    }

} 在jsp页面中:

Jsp代码
<input type="text" name="user.username">  
<input type="text" name="user.password"> 

<input type="text" name="user.username">
<input type="text" name="user.password">

3、使用action的属性接收用户输入
Java代码
public class LoginAction implements Action, ModelDriven<User> {  
 
      private String username;  
      ...  
}     

public class LoginAction implements Action, ModelDriven<User> {

      private String username;
      ...
}   
4、访问request、session和application对象
4.1 与 Servlet API 解耦的访问方式

Java代码
// 获得action的执行上下文  
ActionContext context = ActionContext.getContext();  
 
// 得到三个对象  
Map request = (Map)context.get("request");  
Map session = context.getSession();  
Map application = context.getApplication();  
 
// 使用三个对象  
request.put("text1","test1");  
session.put("text2","test2");  
application.put("text2","test3"); 

// 获得action的执行上下文
ActionContext context = ActionContext.getContext();

// 得到三个对象
Map request = (Map)context.get("request");
Map session = context.getSession();
Map application = context.getApplication();

// 使用三个对象
request.put("text1","test1");
session.put("text2","test2");
application.put("text2","test3");使用JSP内置的表达式语言来访问request、session和application范围的数据:

Jsp代码
${seesionScope.user.username},${requestScope.text2}  
${applicationScope.text3} 

${seesionScope.user.username},${requestScope.text2}
${applicationScope.text3}通过接口注入来获取request、session和application对象

Java代码
public class LoginAction implements Action, RequestAware, SessionAware, ApplicationAware {  
   private Map request;  
   private Map session;  
   private Map application;  
 
    @Override 
    public void setRequest(Map request){  
        this.request = request;  
    }  
 
    @Override 
    public void setSession(Map session){  
        this.session = session;  
    }  
 
    @Override 
    public void setApplication(Map application){  
        this.application= application;  
    }  
 


public class LoginAction implements Action, RequestAware, SessionAware, ApplicationAware {
   private Map request;
   private Map session;
   private Map application;

    @Override
    public void setRequest(Map request){
        this.request = request;
    }

    @Override
    public void setSession(Map session){
        this.session = session;
    }

    @Override
    public void setApplication(Map application){
        this.application= application;
    }

}

4.2 与 Servlet API 耦合的访问方式

通过ServletActionContext来获取HttpServletRequest和ServletContext对象

Java代码
public class LoginAction implements Action, RequestAware, SessionAware, ApplicationAware {  
   private Map request;  
   private Map session;  
   private Map application;  
 
    @Override 
    public void setRequest(Map request){  
        this.request = request;  
    }  
 
    @Override 
    public void setSession(Map session){  
        this.session = session;  
    }  
 
    @Override 
    public void setApplication(Map application){  
        this.application= application;  
    }  
 
}

分享到:
评论

相关推荐

    Struts2入门教程(全新完整版)

    1.概述strust2中的拦截器 28 2.自定义拦截器 28 方式一,实现Interceptor接口。 28 方式二、继承AbstractInterceptor抽象类 29 方式三、继承MethodFilterInteceptor类 30 3.使用来MethodFilterInterceptor灵活拦截 ...

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Struts2+API+标签全解+网页说明

    bean:创建一个JavaBean实例。。 date:格式化输出一个日期属性。 debug:生成一个调试链接,当单击该链接时,可以看到当前栈值中的内容。 i18n:指定国际化资源文件的baseName。 include:包含其他的页面资源。 ...

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

    这是因为某个servlet(服务器端Java程序)在应用户的请求而首次调入内存执行之后将一直驻留在内存里,对同一个servlet的后续请求不用再对这个servlet的类进行实例化,因此响应速度更快。 可是,servlet也存在一个...

    Struts原理、开发及项目实施

    Struts原理、开发及项目实施 Holen 2002-9-12 &lt;br/&gt;1、 摘要 2、 关键词 3、 Framework 4、 Struts的起源 5、 Struts工作原理 6、 Struts安装 7、 一个实例 8、 Struts优缺点...

    structs程序设计从入门到精通word文档

    13.1 使用Struts Bean标签保存与传输数据小实例 15 第14章 Struts Logic标签库 15 14.1 如何使用Logic标签进行基于值的条件显示 15 14.1 如何使用Logic标签进行字符串匹配 15 14.1 如何使用Logic标签来检测值是否...

    低清版 大型门户网站是这样炼成的.pdf

    5.3.6 动态实例化查询结果 313 5.4 qbc查询方式 314 5.4.1 基本查询 315 5.4.2 qbe查询 317 5.4.3 分页查询 318 5.4.4 复合查询 318 5.4.5 离线查询 319 5.5 本地sql查询 320 5.6 hibernate的批量处理 322 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密...

    JAVA上百实例源码以及开源项目源代码

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    从J2SE到J2EE知识点介绍

    2. 基本数据类型 6 (三).面向对象 6 1.类和对象 6 2.类的声明 7 3.成员变量的声明 8 4成员方法的声明 8 5.创建对象 9 6.对象的使用 9 7.对象的初始化 10 8.类的封装 11 9.实例成员和类成员 13 (四).类的继承 14 ...

    java 经典面试题 于网络分享

    C 用户每次提交表单,都会产生一个新的FormBean实例 D 动态FormBean不能进行验证操作 答案:A 8.以下哪些不是Hibernate的检索方式: A、导航对象图检索 B、OID检索 C、ORM检索 D、QBC检索 E、本地SQL检索 ...

    ssh(structs,spring,hibernate)框架中的上传下载

     其中save(FileActionForm fileForm)方法,将封装在fileForm中的上传文件保存到数据库中,这里我们使用FileActionForm作为方法入参,FileActionForm是Web层的表单数据对象,它封装了提交表单的数据。将...

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

    Spring面试题

    -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; -(4)如果...

    JAVA上百实例源码以及开源项目

    Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非...

    Java语言基础下载

    Struts ActionForm Bean捕获表单数据 648 ActionForm的处理流程 649 Struts的其他组件 652 内容总结 653 独立实践 653 第三十二章:配置Struts组件 654 学习目标 654 三个 XML文件和一个属性文件 655 Web应用部署...

Global site tag (gtag.js) - Google Analytics