7.Struts2复杂类型数据的接受

复合类型数据的接收

所谓复合类型数据是指,一个JavaBean实例的属性值,而这些值又作为参数传递给Action。

Action若要接收这些数据,需要做到以下几点:

(1)定义Action时,将该Bean的实例定义为该Action的属性,并赋予其get与set方法。

(2)参数的形式为:bean实例.属性

(3)若复合型数据还需要在视图中显示,如在EL表达式中出现,其出现形式也为:bean实例.属性

源码文档建立目录如下:

Complex_Params_Action.java源码如下:

package actions;

import dto.UserDto;

public class Complex_Params_Action {
    private UserDto user;

    public UserDto getUser() {
        return user;
    }

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

    public String execute(){
        System.out.println("user:"+user);
        return "success";
    }    

}

UserDto.java源码如下:

package dto;

public class UserDto {
    private String username;
    private int age;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    public String toString(){
        return "username="+username+",age="+age;
    }

}

index.jsp源码如下:

<%@ page  pageEncoding="UTF-8"%>
<html>
  <head>

    <title>注册页面</title>

  </head>

  <body>
           <form action="complex.action" method="post">
           用户名<input type="text" name="user.username"/><br/>
           年龄<input type="text" name="user.age"/><br/>
           <input type="submit" value="注册"/>
           </form>
  </body>
</html>

welcome.jsp源码如下:

<%@ page pageEncoding="utf-8" isELIgnored="false"%>

<html>
  <head>

    <title>welcome page</title>

  </head>

  <body>
        用户名:${user.username}<br/>
        年龄:${user.age}

  </body>
</html>

web.xml配置文档如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

        <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>

        <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
        </filter-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

struts.xml配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="one" extends="struts-default">

        <action name="complex" class="actions.Complex_Params_Action">
            <result>/welcome.jsp</result>
        </action>

    </package>
</struts>

重新部署发布,启动tomcata,地址输入:

http://127.0.0.1:8080/receive_complex_params/

时间: 2024-10-03 11:46:19

7.Struts2复杂类型数据的接受的相关文章

6.Struts2简单类型数据的接受

简单类型数据的接收 在Action类中定义与请求参数同名的属性, 即,要定义该属性的set方法,便能够使struts2自动接收请求参数并赋予同名属性. 简单类型数据的接受举例: 新建工程项目,名称为:receive_simple_params. Simple_Params_Action.java源码如下: package actions; public class Simple_Params_Action { private String username; private int age; p

Struts2+Jquery实现ajax并返回json类型数据

主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的数据,并转换为json类型模式数据 3.配置struts.xml文件 4.页面脚本接受并处理数据 网上看到很多关于Struts2+ajax+jquery+json的例子,但是很多都不完整,也看不明白,主要原因是返回jsno类型数据和原来的返回字符串类型数据不一样,并且网友们实现步骤没有说清楚,让初学的朋友捉摸不透到底该怎么做. 我做了个简单的demo,供网友们学习,最后我会附上链接,可以下载整个de

【整理】Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据

[整理]Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据 发送数据 //当前页面地址 string currentUrl = Request.Url.ToString(); string fileName = "复制文件"; string url = currentUrl.Substring(0, currentUrl.LastIndexOf('/')) + "/Default2.aspx?id=" + fileNa

Asp.net HttpWebRequest和HttpWebResponse发送和接受任何类型数据

发送字符串数据发送数据 string strId = "guest"; string strPassword = "123456"; string postData = "userid=" + strId; postData += ("&password=" + strPassword); byte[] data = Encoding.UTF8.GetBytes(postData); // Prepare web re

Struts2 自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性 用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一 种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue

SpringMVC 处理Date类型数据@InitBinder @DateTimeFormat 注解 的使用

使用SpringMVC的时候,需要将表单中的日期字符串转换成对应JavaBean的Date类型,而SpringMVC默认不支持这个格式的转换,解决方法有两种,如下: 方法一 . 在需要日期转换的Controller中使用SpringMVC的注解@initbinder和Spring自带的WebDateBinder类来操作. /* 以下资料来自网络 */ 用@InitBinder注解的控制器方法,允许你直接在你的控制器类中配置 Web 数据绑定.@InitBinder标记初始化WebDataBind

mysql存取blob类型数据

参考网址:http://www.cnblogs.com/jway1101/p/5815658.html 首先是建表语句,需要实现将表建立好. CREATE TABLE `blobtest` ( `primary_id` varchar(32) NOT NULL, `bank_id` varchar(32) NOT NULL, `bank_name` varchar(64) NOT NULL, `blob_data` blob NOT NULL, PRIMARY KEY (`primary_id`

tablib.Dataset()操作exl类型数据之“类方法”研究

#tablib.Dataset()操作exl类型数据之“类方法”研究 import tablib #初始化 data=tablib.Dataset() #设置列标题 data.headers=('name','where') some_collector=[('xiaodeng','enshi'),('xiaoming','hubei'),('xiaodong','enshi')] #写入数据 for key,value in some_collector: data.append((key,v

Cassandra存储time series类型数据时的内部数据结构?

因为我一直想用Cassandra来存储我们的数字电表中的数据,按照之前的文章(getting-started-time-series-data-modeling)的介绍,Cassandra真的和适合用于存储time series类型的数据,那么我就想要弄清楚,对于下面这张表 CREATE TABLE temperature ( weatherstation_id text, event_time timestamp, temperature text, PRIMARY KEY (weathers