`
footman265
  • 浏览: 119085 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

Struts2参数传递

    博客分类:
  • SSH
阅读更多

要使用struts2,首先需要在web.xml中配置一个监听器: 

Java代码 
  1. <filter>  
  2.         <filter-name>struts2</filter-name>  
  3.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  4.     </filter>  
  5.   
  6.     <filter-mapping>  
  7.         <filter-name>struts2</filter-name>  
  8.         <url-pattern>/*</url-pattern>  
  9.     </filter-mapping>  

接着,我们实现一个Action,在struts2中,实现Action并不像struts1那样一定需要继承一个基类,你也可以不继承任何基类: 
Java代码 
  1. package org.darkness.struts2.test;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Date;  
  5. import java.util.List;  
  6.   
  7. import org.apache.struts2.ServletActionContext;  
  8.   
  9. import com.opensymphony.xwork2.Action;  
  10. import com.opensymphony.xwork2.ActionContext;  
  11.   
  12. public class ParamsAction {  
  13.   
  14.     private int id;  
  15.     private String username;  
  16.     private String password;  
  17.     private boolean boolvalue;  
  18.   
  19.          // getter and setter methods here  
  20.   
  21.     public Utils getUtils() {  
  22.         return new Utils();  
  23.     }  
  24.   
  25.     public String saveUser() {  
  26.   
  27.         // 直接赋值,可以将这个值传递到下一个页面  
  28.         id = 10;  
  29.   
  30.         // 通过ActionContext对象来传值,在页面上,通过#name来取值  
  31.         ActionContext.getContext().put("name""暗之幻影");  
  32.   
  33.         // 通过httpRequest对象来传输数据  
  34.         ServletActionContext.getRequest().setAttribute("sex""男");  
  35.           
  36.         List<User> users = new ArrayList<User>();  
  37.         for (int i = 0; i < 10; i++) {  
  38.             User user = new User();  
  39.             user.setId(i);  
  40.             user.setUsername("darkness" + i);  
  41.             user.setPassword("sky" + i);  
  42.             users.add(user);  
  43.         }  
  44.           
  45.         ActionContext.getContext().put("users", users);  
  46.   
  47.         return Action.SUCCESS;  
  48.     }  
  49.   
  50. }  

代码看上去很简洁。我们定义了一个saveUser方法,这个方法的定义也不像struts1中那样一定需要request、forward参数什么的,完全就是一个很简单的方法。我们要想向request中设值则可以通过ServletActionContext.getRequest()获取到容器上下文中的request对象,就像这样:ServletActionContext.getRequest().setAttribute("sex", "男"); 
但是,struts2并不推荐这样使用,struts2推荐使用ActionContext上下文来设值,代码如下:
Java代码 
  1. ActionContext.getContext().put("name""暗之幻影");  

设置好值之后,我们可以通过struts2提供的一个静态常量Action.SUCCESS来返回需要跳转的页面了。Action.SUCCESS其实就是一个"success"字符串,它会到struts.XML中去找当前action中名称为success的result来进行跳转。struts.XML的配置如下: 
Java代码 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.         "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.         "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.     <package name="simple" namespace="/simple"  
  8.         extends="struts-default">  
  9.         <action name="hello"  
  10.             class="org.darkness.struts2.test.ParamsAction">  
  11.             <result name="success">  
  12.                 /struts2/test/save_success.jsp  
  13.             </result>  
  14.         </action>  
  15.     </package>  
  16. </struts>  

struts2的配置文件通过使用package将action进行分类,这样便于组织。通常这个package需要继承一个名为"struts-default"的package,同时也引入了命名空间namespace的概念。 
下面是一些比较简单的辅助类、POJO类: 
Java代码 
  1. package org.darkness.struts2.test;  
  2.   
  3. public class Utils {  
  4.       
  5.     public static String toLowerCase(String str) {  
  6.         return str.toLowerCase();  
  7.     }  
  8.   
  9.     public String toUpperCase(String str) {  
  10.         return str.toUpperCase();  
  11.     }  
  12. }  
  13.   
  14. package org.darkness.struts2.test;  
  15.   
  16. public class User {  
  17.   
  18.     private int id;  
  19.     private String username;  
  20.     private String password;  
  21.     private Person person;  
  22.   
  23.          // getter and setter methods here  
  24. }  
  25.   
  26. package org.darkness.struts2.test;  
  27.   
  28. public class Person {  
  29.       
  30.     private String name;  
  31.   
  32.     public String getName() {  
  33.         return name;  
  34.     }  
  35.   
  36.     public void setName(String name) {  
  37.         this.name = name;  
  38.     }  
  39.       
  40.     public String fact(User u){  
  41.         return u.getUsername()+",";  
  42.     }  
  43.       
  44.     public String getFact(){  
  45.         return "username";  
  46.     }  
  47. }  

接下来需要将刚才action中设置的值在页面中显示了,页面定义如下: 
Java代码 
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3. <%@ taglib prefix="s" uri="/struts-tags" %>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. font-size: 1em; margin-top: 0p
    分享到:
    评论

相关推荐

    struts2 向结果传参数

    总的来说,Struts2提供了多种方式来向结果传递参数,这使得它在处理复杂的业务逻辑和页面跳转时具有高度的可定制性。根据项目的具体需求,选择合适的方法可以提高代码的可维护性和效率。在实践中,结合使用不同的...

    Struts2中的参数传递

    ### Struts2中的参数传递 #### 一、概述 在Web开发中,Struts2框架因其灵活、高效的特点被广泛采用。Struts2的核心之一就是它对于参数传递的支持能力,这一点主要依赖于OGNL(Object-Graph Navigation Language)...

    AJAX和struts2传递JSON数组

    在本场景中,我们将探讨如何使用AJAX来传递JSON数组,并在Struts2的Action中接收和处理这些数据。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,同时也易于机器解析...

    struts2支持方法上传递参数

    Struts2作为一款流行的Java Web框架,为开发者提供了丰富的功能,其中包括通过方法上传递参数的能力。这种方法使得在处理用户请求时更加灵活,不需要依赖特定的注解,而是直接通过参数名来获取界面传递的参数信息。...

    struts2 action跳转action传参数

    ### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...

    struts2传递参数及ModelDriven的使用示例

    2. **传递参数**:在Struts2中,可以通过不同的方式传递参数,如表单参数、URL参数、Action上下文参数等。例如,在`main.jsp`中可以使用表单元素将数据提交到服务器,然后在Action类中通过`@ActionParams`注解或者...

    Struts2中Action接收参数的方法

    2. 在 JSP 页面中,使用表单或其他方式将参数传递给 Action。 3. 在 Action 中,使用设定的属性接收参数,例如 `userName`。 例如,在 Action 中定义了 `userName` 属性,可以在 JSP 页面中使用 `user1!add?...

    struts2 接收参数

    在Struts2中,接收参数是常见的操作,这涉及到用户通过HTTP请求传递的数据如何被框架捕获和处理。这篇博客文章可能深入探讨了Struts2如何在Action类中获取和管理这些参数。 首先,Struts2的核心是DispatcherServlet...

    struts2 使用action属性接收中文参数(post提交)

    在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含中文字符的数据时,可能会遇到编码问题,因为HTTP请求默认使用的是ASCII编码,而中文字符需要UTF-...

    struts1.x 和 struts2.x向Action里填充jsp参数原理

    本篇文章将深入探讨Struts1.x和Struts2.x在向Action中填充JSP参数的原理。 Struts1.x的工作原理: Struts1的核心是ActionServlet,它是一个实现了Servlet接口的控制器。当用户发起HTTP请求时,请求会被Dispatcher...

    Struts2学习笔记(5)-参数传递方法

    在Struts2框架中,参数传递是连接前端页面与后台Action类的重要环节,使得用户交互的数据能够被正确处理。在本文中,我们将深入探讨几种在Struts2中进行参数传递的方法。 1. **Action中直接参数法** 这是最基本的...

    留言板留言板struts2留言板struts2

    5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,用于在Action和视图之间传递数据。通过OGNL,可以在JSP页面中直接访问Action中的属性,或者在Action中动态设置模型数据。 6. ...

    Struts2接口文档

    “Struts2.3.1.2_API.chm”文档包含了Struts2框架的详细API,其中涵盖了各个主要类和接口的解释、方法签名、参数说明以及返回值类型。开发者可以通过查阅此文档,快速查找特定功能的实现方式,例如ActionSupport类,...

    struts2中action接收参数的方式

    本篇文章将深入探讨Struts2中Action接收参数的多种方式,以及相关源码解析。 首先,最常见的接收参数方式是通过方法签名直接接收。例如,如果在JSP页面上有这样一个表单: ```jsp 提交" /&gt; ``` 对应的Action...

    Struts2+Jquery+Ajax

    7. 请求与响应的处理,包括参数传递和数据封装 8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts...

    Struts2 的接受参数的几种方式

    ### Struts2 接受参数的几种方式 #### 第一种方式:直接在 Action 中设置变量 这种方式是最直接的参数接收方式。当从前端传递参数到后端时,我们需要确保 Action 类中有与这些参数名称相匹配的变量。例如,如果...

    struts2 学习重点笔记

    ### Struts2 学习重点知识点总结 #### 一、Struts2 概念与架构 **1.1 Struts2 简介** - **定义**:Struts2 是 Apache 组织提供的一个基于 MVC 架构模式的开源 Web 应用框架。 - **核心**:Struts2 的核心其实是 ...

    uploadify3与struts2结合实现有进度条文件上传实例

    这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 本实例没测试这个问题 但在工作项目中碰到了 但原因在这里...

    Struts2的视频学习代码

    4. **OGNL(Object-Graph Navigation Language)**:OGNL是Struts2中的默认表达式语言,用于在视图和模型之间传递数据。它允许开发者在JSP或其他视图层中直接访问Action对象的属性,或者设置模型数据。例如,`${user...

    Struts2漏洞检查工具2018版.zip

    Struts2的安全漏洞通常涉及OGNL(Object-Graph Navigation Language),这是一个强大的表达式语言,用于在Struts2中传递数据和执行逻辑。例如,S2-045、S2-052、S2-063等都是知名的OGNL注入漏洞,允许攻击者通过精心...

Global site tag (gtag.js) - Google Analytics