`
esffor
  • 浏览: 1375670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2使用OGNL表达式封装输入数据(直接封装Map类型)

阅读更多

struts2使用OGNL表达式封装数据,不仅支持对象,而且还支持诸如List,Map的容器

User.java

 

package HelloWorld;

public class User ...{
    
private String username;
      
private String password;
      
private String[] books;
      
public String[] getBooks() ...{
            
return books;
        }

        
public void setBooks(String[] books) ...{
            
this.books = books;
        }

        
public String getUsername() ...{
            
return username;
        }

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

        
public String getPassword() ...{
            
return password;
        }

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

}

 LoginAction.java

 

package HelloWorld;

import java.util.Map;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class LoginAction implements Action...{
 
 
private String tip;

private Map<String,User> users;



public Map<String, User> getUsers() ...{
    
return users;
}


public void setUsers(Map<String, User> users) ...{
    
this.users = users;
}


public String execute() throws Exception...{
    
//用第一个user做逻辑判断
      if(this.getUsers().get("one").getUsername().equals("admin")&&this.getUsers().get("one").getPassword().equals("1234"))...{
          ActionContext.getContext().getSession().put(
"user"this.getUsers().get("one").getUsername());
          BookService bs
=new BookService();
          
this.getUsers().get("one").setBooks(bs.getBooks());
          
this.setTip("welcome welcome");
          
return SUCCESS;
      }
else...{
          
return ERROR;
      }

  }


public String getTip() ...{
    
return tip;
}

public void setTip(String tip) ...{
    
this.tip = tip;
}



  
}

 

index.jsp

 

<%...@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding
="gb2312"
%>
<%...@ taglib prefix="s" uri="/struts-tags" %>
<html>
  
<head> 
    
<title></title>
  
</head>
  
<body>      

     
<s:form action="Login">
       
<s:textfield name="users['one'].username" key="username"></s:textfield>
       
<s:textfield name="users['one'].password" key="password"></s:textfield>
       
<s:textfield name="users['two'].username" key="username"></s:textfield>
       
<s:textfield name="users['two'].password" key="password"></s:textfield>
       
<s:submit value="login"></s:submit>
     
</s:form>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
   
  
</body>
</html>

上面使用users['one'].username直接将输入数据封装成Map容器中的两个对象

 

 

分享到:
评论

相关推荐

    ognl表达式 ognl表达式

    在Struts2框架中,OGNL表达式被广泛应用于视图层,比如在JSP页面中用来获取数据。OGNL表达式的语法简洁明了,例如: - **直接调用方法**:`xxx.sayHello()`。 - **访问静态方法和常量**:`@java.lang.String@format...

    struts2对Ognl的封装--PropertyAccessor

    "struts2对Ognl的封装--PropertyAccessor"这个主题主要涉及Struts2框架如何处理OGNL表达式,特别是如何通过PropertyAccessor接口来访问和操作对象的属性。 首先,我们来了解什么是OGNL。OGNL是Struts2的核心组件之...

    struts2标签和OGNL表达式

    使用OGNL表达式的一个关键原因是Struts2对HttpServletRequest进行了封装,创建了StrutsRequestWrapper类,这允许OGNL在不直接操作原始HTTP请求对象的情况下,仍能访问请求参数和其他特性,提高了代码的简洁性和可...

    struts2中OGNL的一些概念及原理说明

    不过需要注意的是,OGNL表达式通常需要嵌入在Struts2的特定标签内才能发挥作用。 4. **OGNL的六种使用方法**:在实际应用中,OGNL表达式具有多种用途,包括但不限于: - **基本用法**:如上例所示,直接通过对象...

    Struts2五种数据封装Demo

    3. **使用OGNL(Object-Graph Navigation Language)**:直接在Action类的方法中使用OGNL表达式来获取和设置参数。 4. **使用ModelDriven接口**:实现`ModelDriven`接口,创建一个Model对象,Struts2会自动将请求...

    struts2标签库

    - **集合操作**:可以使用OGNL表达式直接创建和操作集合(List、Map等)。 - 创建List:`,'xiaoi','liming'}"/&gt;` - 遍历List:`&lt;s:iterator value="#list" id="n"&gt;&lt;s:property value="n"/&gt; &lt;/s:iterator&gt;` - ...

    Struts2中的参数传递

    1. **封装OGNL操作,实现值的传递**:Struts2通过对OGNL表达式的封装,实现从客户端传入的参数到Java对象之间的值传递。这一过程包括但不限于对各种复杂类型的处理,如数组、列表、映射等。 2. **类型转换**:为了...

    struts2.0标签使用源码

    3. 使用`s:submit`标签提交表单,Struts2会自动将表单数据封装到Action中。 4. 在Action的execute方法中处理业务逻辑,然后返回一个结果,比如"success"。 5. 在视图层,可以使用`s:property`标签显示Action返回的...

    OGNL表达归纳

    #### 四、使用OGNL表达式创建List/Map集合对象 OGNL不仅可用于获取对象属性,还能用于创建集合对象。例如,创建一个List集合: ``` ()" var="myList" /&gt; ``` 或者创建一个Map集合: ``` ()" var="myMap" /&gt; ``` 这...

    struts2 学习过程中的收获

    6. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的表达式语言,用于在Action和视图之间传递数据。例如,`${variable}`在JSP中用于访问Action中的属性。 7. **Tiles插件**:Struts2可以结合Tiles...

    Struts2学习文档

    - **实现方式**:通过OGNL表达式直接生成集合或Map类型的对象。 - **5.2.3 User(Map)属性类型转换,在没有泛型支持** - **实现方式**:当不支持泛型时,如何将Map类型的参数转换成User对象。 - **5.2.4 直接生成...

    struts2入门教程

    Struts2 的核心组件包括 FilterDispatcher(过滤器调度器)、ActionSupport 类、Ognl(Object-Graph Navigation Language)表达式语言以及一系列的插件支持。这些都使得 Struts2 更加易于使用,功能更加强大,且更...

    struts1.2和struts2区别

    - **Struts2**:解耦了Action与容器的关系,将Servlet上下文封装成Map,使得Action可以独立于容器进行单元测试。这种设计不仅提升了测试的便利性,还提高了代码的可移植性。 #### 易测性的提升 - **Struts1.2**:...

    Struts2中访问web元素的例子

    在JSP页面中,可以通过OGNL表达式访问这些属性。 3. **ActionSupport类的便利方法** Struts2提供了一个基类ActionSupport,它扩展了ValueStack的功能,提供了一些便利方法,如`getValue(String name)`和`...

    达内培训机密资料_struts2_day03(2)

    - 在Struts2中,可以利用OGNL表达式动态地指定结果视图。 ```xml ${session.nextAction} ``` ### 四、示例代码分析 1. **实体类User**: ```java public class User { private int userId; private ...

    传智播客struts2框架2016版视频教程笔记

    - **示例**:在JSP页面中使用OGNL表达式来访问对象属性。 ```jsp &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; ``` #### 值栈 - **概念**:Struts2中的一个关键概念,用于存储请求范围内的数据。 - **获取值栈...

    java详解教程-structs 2

    在Struts 2中,ValueStack被设置为OGNL(Object-Graph Navigation Language)的根对象,这允许开发者使用基于OGNL表达式的标签直接访问ValueStack中的数据,例如访问Action的属性时,可以直接使用`...

    2014 java servet jdbc struts struts2面试题

    5. **Struts2 OGNL**:表达式语言的使用,访问对象属性。 6. **Struts2的注解**:@Action、@Result、@Namespace等,简化配置。 7. **Struts2国际化**:资源文件的创建和使用,实现多语言支持。 8. **Struts2与...

    Struts2 ——4、struts2从请求取值的三种方式

    如果请求参数与Action属性不匹配,也可以使用OGNL(Object-Graph Navigation Language)表达式直接从值栈中获取参数,如`#parameters.name[0]`。 3. **ActionMapping和ActionForm** 在早期的Struts1中,...

    java程序员2016最新面试题ssm面向对象.pdf,这是一份不错的文件

    - 表达式支持上,Struts2引入了OGNL,功能比JSTL更强大。 - 类型转换双向性,Struts2支持页面到Action的双向转换。 - Struts2提供了更强大的验证机制,可指定方法进行验证。 - 拦截器机制使得Struts2能实现如...

Global site tag (gtag.js) - Google Analytics