时间:2021-05-20
实现了Action处理类之后,就可以在struts.xml中配置该Action,从而让Struts 2框架知道哪个Action处理哪个请求,即建立用户请求和Action类之间的对应关系。
Action基本配置
Struts 2使用package包来组织Action,在struts.xml中通过使用package下的action元素来配置Action。在配置Action时,需要指定action元素的name和class属性。
Action基本配置代码如下:
<package name="default" namespace="/" extends="struts-default"> <action name="example" class="com.example.struts.action.expAction"></package>Action只是一个逻辑控制器,不直接对用户请求生成任何相应。因此,Action处理完用户请求后需要将指定的视图资源呈现给用户,即配置Action时,应该配置逻辑视图和物理视图资源之间的映射。
配置逻辑视图和物理视图之间的映射关系是通过<result>元素来定义的,每个<result>元素定义逻辑视图和物理视图之间的一个映射:
<package name="default" namespace="/" extends="struts-default"> <action name="example" class="com.example.struts.action.expAction"> <result name = "success">/success.jsp</result> <result name = "error">/error</result></package>动态方法调用
有时一个Action内需要包含多个控制处理逻辑。例如,对于同一个表单,当用户通过不同的提交按钮进行提交时,系统需要使用Action的不同方法进行处理用户请求,此时就需要让Action中包含多个控制处理逻辑。
Struts 2框架允许一个Action中包含多个处理逻辑。在Struts 2中请求一个Action中的不同处理逻辑方法的方式成为DMI(Dynamic Method Invocation,动态方法调用),其请求格式如下:
(ActionName)!(methodName).action动态方法调用示例
//访问product中的edit()方法product!edit.actionproductList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>商品列表</title></head><body> <table border="1"> <tr> <th>商品ID</th> <th>商品名称</th> <th>数量</th> <th colspan="2">操作</th> </tr> <tr> <td>1001</td> <td>小米手机</td> <td>128</td> <td><a href="product!edit.action?productId=1001" rel="external nofollow" >编辑</a></td> <td><a href="product!del.action?productId=1001" rel="external nofollow" >删除</a></td> </tr> <tr> <td>1002</td> <td>佳能相机</td> <td>100</td> <td><a href="product!edit.action?productId=1002" rel="external nofollow" >编辑</a></td> <td><a href="product!del.action?productId=1002" rel="external nofollow" >删除</a></td> </tr> </table></body></html>```上述代码中,商品列表中的每个商品使用超链接进行编辑、删除操作。超链接中href属性值采用动态方法调用的方式进行链接请求,并将产品ID作为参数传递给Action。
ProductAction.java代码如下:
package com.qst.chapter03.action;import com.opensymphony.xwork2.ActionSupport;public class ProductAction extends ActionSupport { private int productId; public int getProductId() { return productId; } public void setProductId(int productId) { this.productId = productId; } // 编辑商品 public String edit() { System.out.println("编辑商品" + productId); // ...省略一些编辑商品的业务 return "edit"; } // 删除商品 public String del() { System.out.println("删除商品" + productId); // ...省略一些删除商品的业务 return "del"; }}上述代码创建了两个业务方法edit()和del()方法。当用户单击不同的链接时,系统将交给对应的方法处理。
接下来编写edit.jsp和del.jsp页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://.qst.chapter03,action.{1}Action" method = " {2} ">以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Struts中的Action单例与多例详解struts2中action是多例的,即每次访问网络地址的时候都会产生一个actionpublicclasspr_ac
详解Struts2中Action访问ServletAPI的几种方法在通常的web开发中Request和Response对象比较常见,但在Struts2框架中由于
一:Struts开发步骤:1.web项目,引入struts-jar包2.web.xml中,引入struts的核心功能配置过滤器3.开发action4.配置act
一、jsp默认设置1、当访问的Action不存在时,页面会显示错误信息,可以通过配置默认Action处理用户异常的操作;2。配置方法:在struts.xml文件
1、每个action方法都返回一个String类型的值,struts一次请求返回什么值是由这个值确定的。2、在配置文件中,每一个action元素的配置都必须有r