https://blog.csdn.net/y249839817/article/details/77702745

https://blog.csdn.net/nthack5730/article/details/46813245

https://www.cnblogs.com/linjiqin/archive/2011/03/16/1986367.html

struts2之请求参数接收

1. 采用基本类型接受请求参数(get/post)
在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性。
请求路径:http://localhost:8080/action/register.action?id=33

  1.  
  2. public class HelloWorldAction {
  3. private Integer id;
  4.  
  5. public Integer getId() {
  6. return id;
  7. }
  8.  
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. }

2. 采用复合类型接受请求参数
请求路径:http://localhost:8080/action/register.action?id=79

  1.  
  2. public class HelloWorldAction {
  3. private Person person;
  4.  
  5. public Person getPerson() {
  6. return person;
  7. }
  8.  
  9. public void setPerson(Person person) {
  10. this.person = person;
  11. }
  12.  
  13. }

获取Bean属性的原理:
Struts2首先通过反射技术调用Person的默认构造器创建person的实例,然后再通过反射技术调用person中与请求参数同名的属性的setter方法,来获取请求参数数值。

实体bean

  1.  
  2. package com.ljq.bean;
  3.  
  4. public class Person {
  5. private String name;
  6. private Integer id;
  7.  
  8. public String getName() {
  9. return name;
  10. }
  11.  
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15.  
  16. public Integer getId() {
  17. return id;
  18. }
  19.  
  20. public void setId(Integer id) {
  21. this.id = id;
  22. }
  23.  
  24. }

HelloWorldAction类

  1.  
  2. package com.ljq.action;
  3.  
  4. import com.ljq.bean.Person;
  5.  
  6. public class HelloWorldAction {
  7. //基本类型请求参数
  8. private Integer id;
  9. private String name;
  10. //复合类型请求参数
  11. private Person person;
  12.  
  13. public String execute(){
  14. return "success";
  15. }
  16.  
  17. public Person getPerson() {
  18. return person;
  19. }
  20.  
  21. public void setPerson(Person person) {
  22. this.person = person;
  23. }
  24.  
  25. public Integer getId() {
  26. return id;
  27. }
  28.  
  29. public void setId(Integer id) {
  30. this.id = id;
  31. }
  32.  
  33. public String getName() {
  34. return name;
  35. }
  36.  
  37. public void setName(String name) {
  38. this.name = name;
  39. }
  40.  
  41. }

index.jsp请求页面

  1.  
  2. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6. <title>My JSP 'index.jsp' starting page</title>
  7. <meta http-equiv="pragma" content="no-cache">
  8. <meta http-equiv="cache-control" content="no-cache">
  9. <meta http-equiv="expires" content="0"> 
  10. </head>
  11.  
  12. <body>
  13. <!-- get方法发送,如果是中文则会出现乱码,post不会,好像struts2.1.8有修正此问题
  14. 基本类型get请求参数: http://localhost:8083/struts2/control/employee/executeHelloWorld.do?id=1&name= zhangsan
  15. 复合类型get请求参数: http://localhost:8083/struts2/control/employee/executeHelloWorld.do?person.id=2&person.name=lisi
  16.  
  17. http://localhost:8083/struts2/control/employee/executeHelloWorld.do?id=1&name=zhangsan&person.id=2&person.name=lisi
  18. -->
  19.  
  20. <!-- post方法发送 -->
  21. <form action="<%=request.getContextPath()%>/control/employee/executeHelloWorld.do" method="post">
  22. <!-- 基本类型请求参数 -->
  23. id:<input type="text" name="id"><br/>
  24. name:<input type="text" name="name"><br/>
  25. <!-- 复合类型请求参数 -->
  26. person.id:<input type="text" name="person.id"><br/>
  27. person.name:<input type="text" name="person.name"><br/>
  28. <input type="submit" value="发送"/>
  29. </form>
  30. </body>
  31. </html>

显示页面

  1.  
  2. <%@ page language="java" import="java.util.*,java.net.*" pageEncoding="UTF-8"%>
  3.  
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html>
  6. <head>
  7.  
  8. <title>My JSP 'message.jsp' starting page</title>
  9.  
  10. <meta http-equiv="pragma" content="no-cache">
  11. <meta http-equiv="cache-control" content="no-cache">
  12. <meta http-equiv="expires" content="0"> 
  13. </head>
  14.  
  15. <body>
  16. <!-- 输出基本类型请求参数 -->
  17. id=${id}<br/>
  18. name=${name}<br/>
  19. <!-- 输出复合类型请求参数 -->
  20. person.id=${person.id }<br/>
  21. person.name=${person.name }<br/>
  22. </body>
  23. </html>

struts.xml配置文件

  1.  
  2. <?xml version="1.0" encoding="UTF-8" ?>
  3. <!DOCTYPE struts PUBLIC
  4. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  5. "http://struts.apache.org/dtds/struts-2.0.dtd">
  6.  
  7. <struts>
  8. <constant name="struts.i18n.encoding" value="UTF-8" />
  9. <constant name="struts.enable.DynamicMethodInvocation" value="false" />
  10. <constant name="struts.action.extension" value="do,go" />
  11.  
  12. <package name="employee" namespace="/control/employee" extends="struts-default">
  13. <action name="*HelloWorld" class="com.ljq.action.HelloWorldAction" method="{1}">
  14. <result name="success">/WEB-INF/page/message.jsp</result>
  15. </action>
  16. </package>
  17. </struts>

struts2接受请求参数的更多相关文章

  1. Struts2接受请求参数三种常用方法

    一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...

  2. struts2之请求参数接收

    struts2之请求参数接收 1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http:/ ...

  3. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  4. Springmvc之接受请求参数二

    Springmvc之接受请求参数 准备工作 新建一个表单提交 请求地址: http://localhost:8080/ProjectName/user/login.do <form action ...

  5. SpringMvc接受请求参数的几种情况演示

    说明: 通常get请求获取的参数是在url后面,而post请求获取的是请求体当中的参数.因此两者在请求方式上会有所不同. 1.直接将接受的参数写在controller对应方法的形参当中(适用于get提 ...

  6. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...

  7. SpringMVC 接受请求参数、作用域传值

    目录 原生servlet接收参数 Spring MVC最基础的参数获取 接收基本数据类型参数 方法参数列表和请求参数不一致的处理方式 接收对象引用数据类型 接收复选框这种多个同名的参数 接收obj.f ...

  8. java工具类-接受请求参数,并利用反射调用方法

    public String a(HttpServletRequest request,HttpServletResponse response) throws JSONException, IOExc ...

  9. SpringMVC接受请求参数、

    1. 接收请求参数 1.1. [不推荐]通过HttpServletRequest 在处理请求的方法中,添加HttpServletRequest对象作为参数,在方法体中,直接调用参数对象的getPara ...

随机推荐

  1. 洛谷 P2714 四元组统计

    错误记录:42行N写成n:事实上除了读入以外,此题的小n没有任何用途 #include<cstdio> #include<algorithm> #include<cstr ...

  2. 16G 手机清理

    1.16G 手机清理 清理top 5 的应用的缓存即可 2,hw wife 连接模块 低于 app wifi 的连接模块. 在同样的电脑热点面前,hw 连补上电脑热点,apple 可以连上电脑热点. ...

  3. 动手实现 Redux(六):Redux 总结

    不知不觉地,到这里大家不仅仅已经掌握了 Redux,而且还自己动手写了一个 Redux.我们从一个非常原始的代码开始,不停地在发现问题.解决问题.优化代码的过程中进行推演,最后把 Redux 模式自己 ...

  4. C#之九大视图

    本节向大家介绍一下有关UML视图方面的内容,UML视图共有9种,它们之间有什么区别和联系呢,下面就让我们一起来学习吧,相信通过本节的介绍你一定会有不少收获. UML视图 UML总共提供了9种视图,这些 ...

  5. AJPFX关于部分String类方法

    string类使用于描述字符串事物常见的操作:1.获取:  1.1 字符串中的包含的字符数,也就是字符串的长度        int length():获取字符串的长度 1.2 根据位置获取位置上的某 ...

  6. AJPFX总结heap和stack有什么区别?

    栈是后进先出的线性表结构,存取速度比堆快.创建对象的时候new一个对象,引用存在栈上具体的内容存在堆上. 栈与堆都是Java用来在RAM中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不 ...

  7. 【转】哪个更快:Java堆还是本地内存

    译文出处: shenzhang   原文出处:原文链接 使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放.当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配.堆 ...

  8. expect下命令不能解析通配符*的问题

    曾遇到这样一段代码:(Bash脚本) 1 2 3 4 5 6 7 8 9 10 11 12 #!/usr/bin/expect -f set HOST "192.168.102.1" ...

  9. Android 友盟和微信的包冲突:Multiple dex files define Lcom/tencent/a/a/a/a/a;

    最近App中有个需求是添加微信支付,就在微信技术官网 http://open.weixin.qq.com,查看一下文档,然后下载SDk,Demo.把SDK集成进项目. 照着微信的文档,把jar包和进来 ...

  10. Docker - Image创建

    自己创建Image会有一些好处,可以选择最新的版本,而且从国内的镜像创建时更新软件也会从该镜像获取,速度更快. (1)安装debootstrap zhouh1@uhome:/media/zhouh1/ ...