`
forget丶兰
  • 浏览: 1971 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Struts2回忆:struts2接收表单域参数的三种方法

 
阅读更多

Struts2 支持3种方式接收表单域传递过来的数据

1.通过action对应的属性接收用户输入

(params拦截器负责帮我们把参数注入到栈顶对象对应的属性中 并压入值栈  所以 ,

    通俗点讲params拦截器的作用是: 接收表单参数  ,  表单回显

   此时 对应的action 必须提供 该属性的setter方法  

 

)

 代码如下所示:

 表单:

 

   <s:form action="Login"  method="post" namespace="/">
     <s:textfield name="username" label="用户名"></s:textfield>
     <br></br>
     <s:textfield name="password" label="密码"></s:textfield>
     <s:submit value="提交"></s:submit>
   </s:form>

 对应的action:

 

 

	
	private String username;
	private String password;
	
	//setter表单属性注入      getter表单属性回显
	
/*	public String getUsername() {
		return username;
	}*/

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

	/*public String getPassword() {
		return password;
	}*/

 使用ognl访问值栈中对应的属性:

 

 

  <!-- 使用ognl 访问值栈中的对应的属性 -->
  <h4>欢迎<s:property value="username"/>来到xxxx系统</h4>

 使用这种方式  如果表单中有 10...20 个需要提交的属性值  

 容易造成 action 中需要对应的属性值数量过于庞大

 

 

2.通过领域对象接收用户输入

表单代码如下:

 

 <s:form action="Login"  method="post" namespace="/">
     <s:textfield name="user.username" label="用户名"></s:textfield>
     <br></br>
     <s:textfield name="user.password" label="密码"></s:textfield>
     <s:submit value="提交"></s:submit>
   </s:form>

 对应的action代码如下:

 

 

	private User user;
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

 使用ognl进行访问:

 

 

  <!-- 使用ognl 访问值栈中的对应的属性 -->
  <h4>欢迎<s:property value="user.username"/>来到xxxx系统</h4>

 使用这种方式  也容易造成表单中 属性名过于冗长

 

3.使用modeldriven拦截器

表单如下:

 

  <s:form action="Login"  method="post" namespace="/">
     <s:textfield name="username" label="用户名"></s:textfield>
     <br></br>
     <s:textfield name="password" label="密码"></s:textfield>
     <s:submit value="提交"></s:submit>
   </s:form>

 对应action如下:

 

 

public class LoginAction extends ActionSupport implements ModelDriven<User>{

	private static final long serialVersionUID = 647270100576858812L;
	private User user = new  User();
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}

 使用ognl访问如下:

 

<!-- 使用ognl 访问值栈中的对应的属性 -->
  <h4>欢迎<s:property value="username"/>来到xxxx系统</h4>

 使用这个方式:

 

   即避免action中对应的属性过于繁多 ,又避免了表单域中属性名过于沉长。

   但是请注意:不是所有的情况下都是用modeldriven ,如果需要的参数特别少 就不需要

   如:搜索,只需要传一个值就行

modeldriven 实现步骤:

                          

                            1.在请求到达栈顶之前,经过了modeldriven拦截器 

                             modeldriven拦截器 会帮我们将model对象压入值栈 (注意此时的model对象任然是一个model 出来的空对象)

                                      也就是说此时表单域中的属性还没有注入到对应action对象的属性中,那谁帮我们完成的呢?

                                      是params 拦截器

                                      所以由defaultStack中的拦截器 向下执行可知:

                                      2 .params 拦截器 将表单域中的属性值注入栈顶对象(即目标action)对应的属性中

                                      3.一个action请求 拦截器共用一个值栈

  注意 :model 必须要new  必须是一个实例化的对象               

 

 

分享到:
评论

相关推荐

    Struts2 的接受参数的几种方式

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

    应用Struts2处理表单数据

    2. **表单域(Form Fields)**:表单中的输入字段在Action类中通常表现为成员变量,通过getter和setter方法进行访问。Struts2会自动将请求参数绑定到这些字段,实现数据的映射。 3. **结果类型(Result Types)**:...

    Struts2上传方法

    Struts2和其他Web框架支持三种不同的`enctype`属性值: 1. **application/x-www-form-urlencoded**:这是默认的编码方式,适用于大多数普通文本数据的提交。在这种模式下,表单字段会被转换成URL编码格式,不适用于...

    Struts2讲义-作者:吴峻申

    - FilterDispatcher是Struts2的前端控制器,它负责接收用户的请求,并调用相应的Action处理请求。 - Action是处理用户请求的具体业务逻辑类,它实现了接口`com.opensymphony.xwork2.Action`。 - **Struts2配置文件...

    Struts2的三种传值方式比较(附demo)

    当用户提交表单时,Struts2框架会自动将请求参数映射到对应的Action属性,然后在Action执行方法中使用这些值进行业务处理。这种方式简单直观,适合简单的数据传递。 2. **ValueStack和Ognl表达式** ValueStack是...

    struts2 学习笔记 实战

    Action可以直接通过成员变量接收请求参数,只需在Action类中声明对应的成员变量,Struts2会自动将其与请求参数进行绑定。另外,域模型(Domain Model)的概念使得Action和表单数据的交互更加直观,将业务对象的实例...

    struts1和struts2比较

    - **Pull-MVC架构**:Struts2采用了一种更先进的架构方式,允许开发者直接从Action中获取数据,无需通过Session、Request等域对象传递数据。 - **灵活性高**:在Struts2中,Action可以是任意Java对象,不强制要求...

    Struts2 开发笔记

    2. 域模型(Domain Model):域模型对象是用于封装业务数据的实体类,可以被Action引用,Struts2支持将整个对象作为参数传递,方便进行表单回填和持久化操作。 以上是Struts2开发的基础内容,实际开发中还会涉及更多...

    Struts2的文件上传下载.rar

    Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来构建可维护、结构清晰的Web应用程序。在Struts2中,文件上传和下载是常见的功能,对于处理用户通过表单提交的文件数据非常有用。这篇教程将带你...

    Struts2中接收表单数据的三种驱动方式

    总之,Struts2的这三种驱动方式提供了灵活的数据绑定机制,帮助开发者高效地处理Web应用中的表单数据。理解并熟练掌握这些驱动方式,将有助于提高开发效率,优化代码结构,从而提升整体项目质量。

    Struts2常用标签及说明

    需要注意的是,为了能够正确接收到此参数,对应的Action类需要包含名为`userName`的属性,并且提供相应的`getter`和`setter`方法。如果Action类中不存在对应的属性,也可以通过`HttpServletRequest`的方法`...

    spring+hibernate+struts2使用笔记

    以下将从Struts2的基本概念、MVC设计模式、Struts2在MVC中的实现、Struts2配置以及相关环境搭建等方面进行详细介绍。 ### 一、Struts2框架简介 #### 1. Struts2概述 Struts2是一个基于Java的开源Web应用框架,它是...

    Struts2文件上传和下载教程

    在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。这种设置允许表单中的文件作为请求的一部分发送到服务器端。 **1.2 enctype详解** - **application/x-...

    struts2+hirbate+spring面试题

    Struts2、Spring和Hibernate(SSH)是Java企业级开发中的三大主流框架,它们共同构建了一个强大的MVC(模型-视图-控制器)架构。在面试中,掌握这些框架的基本概念、工作原理以及最佳实践至关重要,尤其是对于刚踏入...

    struts2资料

    1. **表单域的回显**:Struts2可以通过OGNL自动将Action中的属性值绑定到页面的输入字段,实现回显。 2. **URL参数传递**:URL中的查询参数可以通过ActionContext读取,然后映射到Action的属性。 3. **请求体参数**...

    Struts学习总结.doc

    Struts 框架是Java Web开发中的一种经典MVC(Model-View-Controller)框架,它极大地简化了Web应用程序的构建。以下是关于Struts框架的一些核心知识点的详细解释: 一、Struts 中的主要类结构: 1. **ActionServlet...

Global site tag (gtag.js) - Google Analytics