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

【Struts2五】Struts2 参数传值

 
阅读更多

Struts2中参数传值的3种情况

1.请求参数绑定到Action的实例字段上

2.Action将值传递到转发的视图上

3.Action将值传递到重定向的视图上

 

一、请求参数绑定到Action的实例字段上以及Action将值传递到转发的视图上

Struts可以自动将请求URL中的请求参数或者表单提交的参数绑定到Action定义的实例字段上,绑定的规则使用ognl表达式语言。OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。关于OGNL,在下一篇详细介绍 。

 

以表单提交为例

 

1.addUser.jsp

 

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        input {
            display: block;
        }
    </style>
</head>
<body>
<!--提交的表单,user.id和user.name作为请求参数传递到了服务器端-->
<form action="/user/hellons/hi" method="post">
    <input type="text" id="userId" name="user.id"/>
    <input type="text" id="userName" name="user.name"/>
    <input type="submit"/>
</form>

</body>
</html>

 

2. struts.xml

 

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="hellopkg" namespace="/hellons" extends="struts-default">
        <action name="hi" class="com.tom.actions.HelloWorldAction">
            <!--页面内跳转-->
            <result name="dispatcher" type="dispatcher">/htmls/result.jsp</result>
        </action>
    </package>
</struts>

 

 3. HelloWorldAction

 

package com.tom.actions;

import com.tom.model.User;

public class HelloWorldAction {

    private User user;

    public User getUser() {
        return user;
    }

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

    public String execute() {
        System.out.println(user.getId() + "\t" + user.getName());
        return "dispatcher";
    }

}

 

 4. result.jsp

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
    The information is: ${user.id}, ${user.name}
</body>
</html>

 

结论:

1. 在表单中输入100和abc,提交表单后,控制台输出100和abc,同时页面也显示The information is: 100, abc,原因是浏览器客户端提交的表单(GET请求则将参数添加到URL中,POST请求则以请求数据流的方式传输到服务器端,与action中的实例字段(通过setter方法反射)进行参数绑定。

 

2. 将action请求转发到result.jsp时,Struts通过调用action的字段的getter方法将action中字段的值替换result.jsp中的JSTL表达式的值

 

3. 在浏览器客户端提交的user.id为100,这是一个字符串,在action中,自动完成了字符串到整型数的转化,这是Struts完成的自动类型转换,Struts支持自定义类型转换

 

4.在通过POST提交表单的方式时,浏览器自动为请求添加了

Content-Type: ContentTypeapplication/x-www-form-urlencoded ,通过这个内容类型是告诉web服务器,POST的请求数据是通过表单提交的,这些数据将作为请求参数,然后web容器自动将POST中的请求取出,然后将这些请求参数设置

到HttpServletRequest中,可以通过getParameter等方法获取这些请求参数

 

 

二、Action将值传递到重定向的视图上

 

 1. struts.xml文件

 

<struts>
    <package name="hellopkg" namespace="/hellons" extends="struts-default">
        <action name="hi" class="com.tom.actions.HelloWorldAction">
            <!--定义跳转类型为重定向,并且将Action中user.id和user.name作为url参数传递到result.jsp中-->
            <result name="redirect" type="redirect">/htmls/result.jsp?id=${user.id}&amp;name=${user.name}</result>
        </action>
    </package>
</struts>

 

2.HelloWorldAction的execute方法

 

    public String execute() {
        System.out.println(user.getId() + "\t" + user.getName());
        //重定向到结果视图
        return "redirect";
    }

 

3.result.jsp

 

 

<body>
    <!--param表示从url中获取请求参数-->
    The information is: ${param.id}, ${param.name}
</body>

 

结论:

 

1.当用户通过POST请求提交表单,HelloWorldAction将获得用户在表单中输入的信息,user.id=100,user.name=abc

2.Action在重定向时,Struts将Action中的值传道重定向视图的URL上,

<result name="redirect" type="redirect">/htmls/result.jsp?id=${user.id}&amp;name=${user.name}</result>

3.所以用户提交后,将看到页面重定向到http://localhost:8668/user/htmls/result.jsp?id=200&name=abc

 

问题

 

假如重定向视图如下配置,即参数的key分别是user.id和user.name,

 

<result name="redirect" type="redirect">/htmls/result.jsp?id=${user.id}&amp;user.name=${user.name}</result>

 

那么在result.jsp中,通过如下方式得不到值,在这种情况下如何传值呢?

 

 

${param.user.id}, ${param.user.name}

 

 

 

 

分享到:
评论

相关推荐

    ajax请求传值Struts2+jsp

    2. **发送数据**:在请求中,可以通过`data`参数发送键值对数据。 3. **接收响应**:在请求成功时,通过`onreadystatechange`或`success`回调函数处理服务器返回的数据。 ### 三、Struts2与AJAX整合 1. **配置...

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

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

    struts 2中文汉字传值

    总之,Struts 2 中处理中文汉字传值的关键在于理解和正确使用字符编码,包括设置页面编码、响应编码、URL编码和Action中的解码步骤。确保每个环节都与UTF-8编码兼容,可以避免中文字符的乱码问题。在实际开发中,还...

    Struts2页面取值总结

    ### Struts2页面取值与标签使用详解 #### 引言 在Web应用开发中,Struts2框架因其强大的功能和灵活的配置受到广大开发者青睐。本文将深度解析Struts2框架中页面取值的多种方式及核心标签的使用技巧,帮助开发者更...

    Struts2常用标签及说明

    ### Struts2常用标签及其应用详解 #### 一、引言 Struts2是一个基于MVC模式的开源Java Web框架,它提供了丰富的标签库来帮助开发者更高效地进行Web应用程序的开发。这些标签不仅简化了页面逻辑的编写,还提高了代码...

    struts2学习代码

    4. **传值去页面**:Struts2支持将Action中的数据传递给JSP页面进行显示。这可以通过`ModelDriven`接口、`ActionSupport`类的`getFieldErrors()`方法,或者直接在JSP中使用OGNL访问Action属性来实现。此外,`...

    Struts2_ModelDriven接收参数(项目案例及视频)

    这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ModelDriven接口是Struts2提供的一种设计模式,它的核心思想是将业务模型与Action类紧密结合。通过实现...

    Struts2笔记

    Struts2是一个强大的MVC(Model-View-Controller)框架,它被广泛应用于Java Web开发中,以提高开发效率和代码可维护性。本笔记将深入探讨Struts2的核心概念、配置方法以及如何通过Action类与视图进行交互。 1. **...

    acton之间传值

    ### Struts2框架中Action间传值方法详解 在Struts2框架中,Action类是处理用户请求的核心组件,它们负责执行具体的业务逻辑,并决定视图的转向。在某些情况下,我们可能需要在一个Action处理完成后将某些数据传递给...

    struts2常用标签说明

    Struts2 是一款基于 MVC 设计模式的 Java Web 开发框架,它简化了Java应用程序的开发流程,尤其是在处理表单和页面展示方面。Struts2 提供了一系列丰富的标签库,使得开发者能够方便地在 JSP 页面中实现各种功能。...

    struts2.x一些技术细节资料总结

    Struts2是一个流行的Java Web框架,它为开发者提供了一种组织和管理应用程序逻辑的方式。在Struts2中,Action是核心组件,负责处理用户请求并返回相应的结果。本篇文章将详细探讨在Struts2.x中两个Action之间传递值...

    Struts2页面开发中常用标签

    在Struts2中,`&lt;input&gt;`标签被广泛用于从前端页面向后端Action传递参数。例如: ```html ``` 这里,`name`属性定义了参数名,这要求在Action中需定义相应的属性并提供SET/GET方法。如果Action中没有定义该属性,...

    动态增删table以及后台传值和弹出窗口父子窗口传值

    请求参数可以通过ActionForm对象或者直接在Action类的方法参数中获取,然后进行必要的业务处理。 弹出窗口父子窗口传值主要指的是在Web应用中打开新窗口或弹出对话框时,两个窗口之间数据的交换。在JavaScript中,...

    myeclipse8下STRUTS(自带JSON插件)的JSON传值例子.rar

    1. **添加STRUTS库**:确保你的项目已经包含了STRUTS的依赖库,包括struts2-core、struts2-json-plugin等。这些库可以在Maven仓库或Apache官方网站上找到。 2. **配置struts.xml**:在项目的配置文件struts.xml中,...

    struts2 的标签库

    Struts2是一个强大的MVC框架,用于构建Java Web应用程序。它的核心特性之一是提供了丰富的标签库,使得开发者能够更方便地在JSP页面中处理业务逻辑和展示数据。下面我们将深入探讨Struts2的页面开发中常用的标签及其...

    struts2里的一些标签

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,简化了JSP页面的开发。以下是对Struts2中常用标签的详细说明: 1. **传值到Action**: - `&lt;input&gt;`标签:用于创建HTML输入字段,通过`name`属性指定在Action中...

    Struts:Strurs的Somp应用

    Struts2ParameterPostMethod_common: 关于Struts普通传值的应用 Struts2ParameterPostMethod_packagebybean: 关于Struts封装参数传递的应用 Struts2SQLConnection: 关于Struts数据库链接的应用 Struts2Verifier: ...

    url传值到Action乱码解决方案

    今天,我们将讨论如何解决URL传值到Action乱码问题,特别是在Struts2框架中。 乱码问题的原因 乱码问题的原因是因为URL传值时,浏览器和服务器之间的编码方式不同所致。在大多数情况下,浏览器使用UTF-8编码,而...

    java中页面传值的简单操作

    在Java Web开发中,页面传值是不可或缺的一部分,主要用于用户在网页上填写信息后提交...在实际项目中,通常会结合Model-View-Controller(MVC)架构,使用框架如Spring MVC或Struts来更高效地管理页面传值和业务逻辑。

    ajax例子servlet传值

    #### 五、Struts配置 Struts框架需要配置相关的`Action`和表单bean,如下所示: ```xml &lt;struts-config&gt; &lt;form-bean name="loginForm" type="org.viman.struts.form.LoginForm"/&gt; ...

Global site tag (gtag.js) - Google Analytics