博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts2学习之何为action以及Action 类,如何访问WEB资源
阅读量:5333 次
发布时间:2019-06-15

本文共 2554 字,大约阅读时间需要 8 分钟。

1. 搭建struts2 的步骤: 3个步骤

2. action VS Action 

  • action: 代表一个Struts2 的请求.
  • Action 类: 能够处理Struts2 请求的类.  先前写的Product 类就是这样一个类
    • 属性的名字必须遵守与JavaBeans (就是一个java类,格式是含有属性,以及get,set方法的类)属性名相同的命名规则,属性的类型可以是任意类型。从字符串到非字符串(基本数据类型)数据类型转换可以自动发生. 下面例子中的函数方法名 setProductName 必须和JSP 页面中productName 的名字一致( 途中标红色的地方,其值必须一致):
package strutshelloworld;public class Product {	private Integer productId;	private String productName;	private String productDesc;		private double productPrice;	public Integer getProductId() {		return productId;	}	public void setProductId(Integer productId) {		this.productId = productId;	}	public String getProductName() {		return productName;	}	public void setProductName(String productName) {		this.productName = productName;	}	public String getProductDesc() {		return productDesc;	}	public void setProductDesc(String productDesc) {		this.productDesc = productDesc;	}	public double getProductPrice() {		return productPrice;	}	public void setProductPrice(double productPrice) {		this.productPrice = productPrice;	}	@Override	public String toString() {		return "Product [productId=" + productId + ", productName=" + productName + ", productDesc=" + productDesc				+ ", productPrice=" + productPrice + "]";	}    	public String save(){		System.out.println("save: " + this);		return "details";	}}

  

productName:
productDesc:
productPrice:
    • 必须要有一个无参的构造器:通过反射的方式创建实例。从下面的配置文件中可以发现,我们只是传入了一个类的名字,所以它是通过反射的方式创建的类对象。
/WEB-INF/pages/input.jsp
    • 至少有一个供struts 在执行这个action 时调用的方法 如Product  中的save() 方法
    • 同一个Action 类可以包含多个action 方法,Struts2 会为每一个HTTP 请求创建一个新的Action实例,即Action 不是单例的,不存在线程安全的问题

3. 在Action 中访问WEB 资源:

  • 什么是WEB 资源?
    • HttpServletRequest, HttpSession, ServletContext 等原生的Servlet API
  • 为什么访问WEB 资源?
    • B\S 应用的Controller 中必然要访问WEB 资源: 向域对象中读写属性,读写Cookie, 获取realPath...
  • 如何访问WEB 资源?
    • 和Servlet API解耦的方式:只能访问有限的Servlet API对象,且只能访问有限的方法(读取请求参数,读写域对象的属性, 使session 失效)
      • 使用ActionContext
      • 实现XxxAware 接口
    • 和Servlet API 耦合的方式:可以访问更多的Servlet API对象,且可以调用其原生的方法
      • 使用ServletActionContext
      • 实现ServletXxxAware 接口

5. result:

  • result 是action 节点的子节点
  • result 代表action 方法执行后,可能去的目的地
  • 一个action 节点可以配置多个result 子节点
  • result 的name 属性值对应的action 方法可能有的一个返回值
  • result 一共有2个属性,还有一个是type: 表示结果的响应类型
  • result  的type属性值在struts-default 包的result-types 节点的name属性中定义:常用的有:
    • dispatcher(默认的):转发,同servlet 中的转发一样
    • redirect: 重定向
    • redirectAction: 重定向到一个Action
    • chain: 转发到一个action

 

转载于:https://www.cnblogs.com/shi-yi-ge/p/5561634.html

你可能感兴趣的文章
L1-Day34
查看>>
Linux主机在LNMP环境中同时运行多个PHP版本
查看>>
玩转Xcode之修改系统生成的注释模板
查看>>
8、二进制中1的个数------------>剑指offer系列
查看>>
.eww
查看>>
ssh The authenticity of host '10.11.26.2 (10.11.26.2)' can't be established
查看>>
代码学习总结
查看>>
初入Installshield2015
查看>>
vs2010 无法创建 *.edmx(Entity Frame Work) 文件的问题
查看>>
<C++>查询
查看>>
2019-07-29 CentOS安装
查看>>
Leetcode-944 Delete Columns to Make Sorted(删除列以使之有序)
查看>>
P1087-FBI树
查看>>
怎么在某个控制器中判断程序是否在前台或后台
查看>>
第三周vim入门学习1
查看>>
Linux内核分析(第九周)
查看>>
Serlvet学习笔记之一 ——实现servlet的3种方法
查看>>
批处理
查看>>
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>