前言:

前面已经有一篇随笔介绍了Struts2的大概原理。本文就Struts2中Action与jsp页面进行数据对接时介绍几种常见方法!

  1. 值栈ValueStack

  2. 3个Action

    Action1

    package com.gdufe.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    /*
    * Action接收参数之后通过set方法赋给普通变量age,name;
    */
    public class UserAction1 extends ActionSupport{ private int age;
    private String name; public int getAge() {
    return age;
    } public void setAge(int age) {
    this.age = age;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String execute(){ return SUCCESS;
    } public String test(){
    System.out.println(age +"|"+ name);
    return SUCCESS;
    }
    }

    Action2

    package com.gdufe.action;
    
    import com.gdufe.pojo.User;
    import com.opensymphony.xwork2.ActionSupport; /*
    * Action接收参数之后赋给引用对象“user”,内部是set方法赋值
    */
    public class UserAction2 extends ActionSupport { private User user; public User getUser() {
    return user;
    } public void setUser(User user) {
    this.user = user;
    } public String test(){
    System.out.println(user.getName() + "|" + user.getAge());
    return "success";
    }
    }

    Action3

    package com.gdufe.action;
    
    import com.gdufe.pojo.User;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven; public class UserAction3 extends ActionSupport implements ModelDriven<User> { private User user = new User(); public String test(){ System.out.println(user.getName() + "|" + user.getAge());
    return "success";
    } public User getModel() {
    return user;
    }
    }
  3. 2个页面

index.jsp

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head> <body>

    <h2>Action传值测试</h2>
    <a href="userAction1!test?age=8&name=admin">test1:Attribution</a> <br>
    <a href="userAction2!test?user.age=8&user.name=admin">test2:JavaBean</a> <br>
    <a href="userAction3!test?age=8&name=admin">test3:ModelDriven</a> <br>

  </body>
</html>

    success.jsp

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> </head> <body> <h2>Action传值双击debug</h2>
<s:debug></s:debug>
<!-- debug重要的strut2标签调试工具 -->
</body>
</html>
  1. 1个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> <!-- devMode设置为开发模式 -->
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<!-- 注:因为Action采用DMI方式,故不需要指明method 以及 ‘result’ -->
<action name="userAction1" class="com.gdufe.action.UserAction1" >
<result>/success.jsp</result>
</action> <action name="userAction2" class="com.gdufe.action.UserAction2" >
<result>/success.jsp</result>
</action> <action name="userAction3" class="com.gdufe.action.UserAction3" >
<result>/success.jsp</result>
</action> </package> </struts>

  

  运行结果:

对应Action1——------------------*-------------------------

  对应Action2——------------------*-------------------------

  对应Action3——------------------*-------------------------

注意:新手的话请勿按部就班,因为还有初始配置没有说明,比如jar包及web.xml配置。详细配置自己读manual帮助文档或者上网参考!

==============================

结语:近期在接手Web开发时,数据对接不熟练;鉴于此,才再次翻起struts2的一些基础知识加深理解。希望能给有打算从事Java的朋友些许借鉴!

  

Struts中Action三种接收参数的方式?的更多相关文章

  1. Struts2之Action三种接收参数形式与简单的表单验证

    有了前几篇的基础,相信大家对于Struts2已经有了一个很不错的认识,本篇我将为大家介绍一些关于Action接收参数的三种形式,以及简单的表单验证实现,下面进入正题,首先我们一起先来了解一下最基本的A ...

  2. 参数对象Struts2中Action的属性接收参数

    题记:写这篇博客要主是加深自己对参数对象的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. Action中三种传递并接受参数: 1.  在Action添加成员属性接受参数 例如请求的 ...

  3. struts用action的属性接收参数

    新建一个javaweb项目 在项目中加入Struts.xml( 选中项目右键MyEclipse-->project facets-->Struts2-->finish) 在src项目 ...

  4. C++中的三种继承方式

    1,被忽略的细节: 1,冒号( :)表示继承关系,Parent 表示被继承的类,public 的意义是什么? class Parent { }; class Child : public Parent ...

  5. 关于在Struts2的Action中使用domain模型接收参数的问题

    最近在搭建一个最新的ssh2框架,今天在调试的时候,发现了一个以前一直没有注意过的问题,我在Action中使用域模型的方式去接收jsp画面中的参数的时候,发现参数总是接收不完,头一次遇到这种问题,现在 ...

  6. Netty中的三种Reactor(反应堆)

    目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...

  7. js oop中的三种继承方法

    JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...

  8. Vue中的三种Watcher

    Vue中的三种Watcher Vue可以说存在三种watcher,第一种是在定义data函数时定义数据的render watcher:第二种是computed watcher,是computed函数在 ...

  9. Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

    Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过 ...

随机推荐

  1. bzoj1787 [Ahoi2008]Meet 紧急集合

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 2272  Solved: 1029 [Submi ...

  2. iis 发布MVC HTTP错误 403.14

    1. 在web.config增加<modules runAllManagedModulesForAllRequests="true" /> 如:问题依然不能解决.报错貌 ...

  3. C#开源系统大汇总

    一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式.这种部署方面(as ...

  4. BZOJ 2733 【HNOI2012】 永无乡

    Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...

  5. JavaScript中的this关键字

    在JavaScript中,函数的this关键字的行为与其他语言相比有很多不同.在JavaScript的严格模式和非严格模式下也略有区别. 在绝大多数情况下,函数的调用方式决定了this的值.this不 ...

  6. consumer group

    Kafka消费组(consumer group)一直以来都想写一点关于kafka consumer的东西,特别是关于新版consumer的中文资料很少.最近Kafka社区邮件组已经在讨论是否应该正式使 ...

  7. Linux shell特性

    一:别名 .alias 查看本用户下的alias配置 --自定义别名:alias 别名='shell命令' (注意是单引号) --cat $HOME/.bashrc 在这个用户下配置着alias名的配 ...

  8. mysql 定义自增

    The database returned no natively generated identity value问题 alter table user_table MODIFY user_id I ...

  9. 【JavaEE企业应用实战学习记录】requestListener

    package sanglp.servlet; import javax.servlet.*; import javax.servlet.annotation.WebListener; import ...

  10. 48-tree 命令总结