-----------------siwuxie095

在 Action 中获取表单提交数据

1、之前的 Web 阶段是提交表单到 Servlet,在其中使用 Request 对象

的方法获取数据

2、Struts2 是提交表单到 Action,但 Action 没有 Request 对象,不能

直接使用 Request 对象获取数据

「可以间接使用 Request 对象获取数据」

3、Action 获取表单提交数据主要有三种方式:

(1)使用 ActionContext 类

(2)使用 ServletActionContext 类

(3)使用 ServletRequestAware 接口

「底层封装的依然是 Servlet 的 API」

使用 ActionContext 类获取

1、使用 getParameters() 方法获取表单提交数据,因为它不是静态

方法,所以需要先创建 ActionContext 对象

注意:

ActionContext 对象不是 new 出来的,而是通过 ActionContext 类

直接调用静态方法 getContext() 返回的

2、具体过程

(1)创建表单,提交表单到 Action

(2)在 Action 中使用 ActionContext 类获取表单提交数据

3、具体实现

(1)编写页面

form.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>表单</title>

</head>

<body>

<form action="${pageContext.request.contextPath }/form.action" method="post">

username:<input type="text" name="username"/>

<br/>

password:<input type="password" name="password"/>

<br/>

address:<input type="text" name="address"/>

<br/>

<input type="submit" value="提交"/>

</form>

</body>

</html>

(2)编写 Action

Form1Action.java:

package com.siwuxie095.action;

import java.util.Arrays;

import java.util.Map;

import java.util.Set;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**

* 使用 ActionContext 类获取

*/

public class Form1Action extends ActionSupport {

@Override

public String execute() throws Exception {

ActionContext context=ActionContext.getContext();

/*

* 调用 getParameters() 方法,返回值是 Map 类型,创建以接收

*

* Key 即表单中输入项的 name 属性值,Value 即输入的值

*

*/

Map<String, Object> map=context.getParameters();

// 得到所有的 Key 值

Set<String> keys=map.keySet();

//根据 Key 得到 Value

for (String key : keys) {

//数组形式:输入项可能有复选框,传过来多个值

Object[] obj=(Object[]) map.get(key);

System.out.println(Arrays.toString(obj));

}

return NONE;

}

}

(3)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="demo" extends="struts-default" namespace="/">

<action name="form" class="com.siwuxie095.action.Form1Action"></action>

</package>

</struts>

(4)访问路径

1)http://localhost:8080/工程名/form.jsp

注:

使用 ServletActionContext 类获取

1、直接调用 ServletActionContext类中的静态方法,

获取 Request 对象,进而通过 getParameter() 方法

获取表单提交数据

2、具体实现

(1)编写页面(同上 form.jsp)

(2)编写 Action

Form2Action.java:

package com.siwuxie095.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**

* 使用 ServletActionContext 类获取

*/

public class Form2Action extends ActionSupport {

@Override

public String execute() throws Exception {

// 先使用 ServletActionContext 类调用静态方法获取 Request 对象

HttpServletRequest request=ServletActionContext.getRequest();

// 再调用 Request 对象的方法获取表单提交数据

String username=request.getParameter("username");

String password=request.getParameter("password");

String address=request.getParameter("address");

System.out.println(username+"-"+password+"-"+address);

return NONE;

}

}

(3)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="demo" extends="struts-default" namespace="/">

<action name="form" class="com.siwuxie095.action.Form2Action"></action>

</package>

</struts>

(4)访问路径(同上)

注:

使用 ServletRequestAware 接口获取

1、让 Action 实现 ServletRequestAware接口,获取

Request 对象,进而通过 getParameter() 方法获取表

单提交数据

2、具体实现

(1)编写页面(同上 form.jsp)

(2)编写 Action

Form3Action.java:

package com.siwuxie095.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

/**

* 使用 ServletRequestAware 接口获取(实现该接口)

*/

public class Form3Action extends ActionSupport implements ServletRequestAware {

private HttpServletRequest request;

//重写 ServletRequestAware 接口的 setServletRequest() 方法获取 Request 对象

@Override

public void setServletRequest(HttpServletRequest request) {

//使用 ServletRequestAware 接口注入 Request 对象

this.request=request;

}

@Override

public String execute() throws Exception {

String username=request.getParameter("username");

String password=request.getParameter("password");

String address=request.getParameter("address");

System.out.println(username+"-"+password+"-"+address);

return NONE;

}

}

(3)配置 Action

struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="demo" extends="struts-default" namespace="/">

<action name="form" class="com.siwuxie095.action.Form3Action"></action>

</package>

</struts>

(4)访问路径(同上)

注:

【made by siwuxie095】

在Action中获取表单提交数据的更多相关文章

  1. koa 基础(十)原生node.js 在 koa 中获取表单提交的数据

    1.app.js // 引入模块 const Koa = require('koa'); const router = require('koa-router')(); /*引入是实例化路由 推荐*/ ...

  2. Struts2_day02--Action获取表单提交数据

    Action获取表单提交数据 1 之前web阶段,提交表单到servlet里面,在servlet里面使用request对象里面的方法获取,getParameter,getParameterMap 2 ...

  3. Struts2 03---数据封装+获取表单提交数据

        Struts的数据封装分为三种:属性封装,模型驱动,表达式封装.下面以获取表单提交数据来简单介绍一下Struts的数据封装. <form action="loginlogin. ...

  4. Layui 获取表单提交数据

    HTML<div class="layui-card-header layuiadmin-card-header-auto"> <form class=" ...

  5. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  6. springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据

    springboot框架中集成thymeleaf引擎,使用form表单提交数据,debug结果后台获取不到数据 表单html: <form class="form-horizontal ...

  7. koa 基础(十一)koa 中 koa-bodyparser 中间件获取表单提交的数据

    1.app.js /** * koa 中 koa-bodyparser 中间件获取表单提交的数据 * 1.npm install --save koa-bodyparser * 2.引入 const ...

  8. 前端表单提交数据~php获取表单内容

    上图代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  9. 在Express 中获取表单请求体数据

    在Express 中获取表单请求体数据 获取 GET 请求参数 获取 POST 请求体数据 安装 配置 获取 GET 请求参数 Express 内置了一个 API , 可以直接通过 req.query ...

随机推荐

  1. sudo-tcpdump提权法

    当当前用户可以通过sudo执行tcpdump时,可以用来进行提权 tcpdump中有两个参数-z和-Z,前者用来执行一个脚本,后者用来指定tcpdump以哪个用户运行,当可以通过sudo执行时,则可以 ...

  2. vue.js 源代码学习笔记 ----- fillter-parse.js

    /* @flow */ export function parseFilters (exp: string): string { let inSingle = false let inDouble = ...

  3. TF随笔-13

    import tensorflow as tf a=tf.constant(5) b=tf.constant(3) res1=tf.divide(a,b) res2=tf.div(a,b) with ...

  4. 最佳C/C++编辑器 source insight3

    C/C++嵌入式代码编辑器source insight3下载地址 http://www.sourceinsight.com/eval.html 注册码:SI3US-361500-17409

  5. MySQL-with rollup函数运用

    如果想在下面这个表下面添加一行 总计 数据行SQL代码怎么实现 并且根据9月金额进行城市降序 总计置于底部呢 MySQL提供了 group by with rollup 函数进行group by 字段 ...

  6. ballerina 学习十八 事务编程

    事务在分布式开发,以及微服务开发中是比较重要的 ballerina 支持 本地事务.xa 事务.分布式事务 ,但是具体的服务实现起来需要按照ballerian 的事务模型 infection agre ...

  7. 打造jQuery的高性能TreeView

    UPDATE:回答网友提出的设置节点的自定义图片的问题,同时欢迎大家提问,我尽量在第一时间回复,详见最后 2009-11-03 项目中经常会遇到树形数据的展现,包括导航,选择等功能,所以树控件在大多项 ...

  8. jsp---猜数字游戏,深有感触

    猜数字游戏注意两点.1.随机数和猜的数字不能放在同一个页面,不然随机数不停出现,猜的数字不可能相等的. 2.数据类型的相互转换.包装类Integer和int的用法,前者是类,后者是基本数据类型 cai ...

  9. Bootstrap-Plugin:警告框(Alert)插件

    ylbtech-Bootstrap-Plugin:警告框(Alert)插件 1.返回顶部 1. Bootstrap 警告框(Alert)插件 警告框(Alert)消息大多是用来向终端用户显示诸如警告或 ...

  10. pythonNetday06

    进程 Process(target,name,args,kwargs) p.pid : 创建的新的进程的PID号 p.is_alive() 判断进程是否处于alive状态 p.daemon = Tru ...