`
weigang.gao
  • 浏览: 486341 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Action

 
阅读更多

1.① String path = request.getContextPath(); 可以获取工程的名字struts2_0100_path

   ② String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  最终形成了"http://localhost:8080/struts2_0100_path/",在所有的链接之前加上basePath就形成了绝对路径。

  • request.getScheme()  拿到“http”字符串
  • request.getServerName()   拿到localhost
  • request.getServerPort()     拿到8080端口号

使用方法:

①<a href="<%=basePath%>index.jsp">index.jsp</a>

②在<head></head>之间添加<base href="<%=basePath%>" />标签,指定base是什么内容。这个base的意思是说当前我们所有的这个页面里的链接前面默认它都会加上basePath

 

 

2.struts2中路径问题是根据action的路径来确定而不是JSP路径来确定,所有尽量不要用相对路径。

虽然可以使用redirect方式解决,但redirect方式非必要。

解决办法非常简单,统一使用绝对路径。

 

 

3.①Action执行的时候并不一定要执行execute()方法。

   ②可以在配置文件中配置Action的时候,使用“method=”来指定执行那个方法(不推荐),因为如果action中有很多方法的话,就要在struts.xml中配置很多action。

   ③也可以在URL地址中动态指定(动态方法调用DMI)(推荐),因为不管action中有多少个方法,只需要在struts.xml中配置一个action。


 

 

4.wildcard 通配符 eg:  * , {n}

①使用通配符将配置量降低到最低

②当客户请求一个action时,最精确的Action优先匹配,与其位置无关; 带 * 符号的Action优先级别相同,那个在前,优先匹配那个,与位置相关。

③ 情况1:

1.有三个action 顺序如下: name ="student_*"
                                          name = "*_*"
                                          name = “student_add”

2.输入:http://localhost:8080/struts2/student_add

分析:会匹配第三个action,因为当一个客户请求一个action时,最精确的Action优先匹配,与其前后位置无关。

 

情况2:

1.有2个action 顺序如下: name = “*_*” 

                                         name = “student_*”

2.输入:http://localhost:8080/struts2/student_add

分析:会匹配第一个action,因为带“*” 符号的Action优先级别相同

 

5.在Struts2里面,你可以往action里面传参数,参数怎么来接收呢?在Action里面有3种方式来接收参数的方式

①通过成员变量来接受

URL地址中的参数名字(eg:age)要和Action中setXXX(setAge)中的XXX(Age)相同,而成员变量XXX对应的set方法不一定要遵循setXXX()格式,因为URL地址中输入的参数是经过Action中setXXX()方法给成员变量赋值的,而不是直接给成员变量赋值的


 

②DomainModel 域模型来直接接收参数

1.定义一个User类,该类有二个属性String name和int age

2.在Action中,声明private User user(该user不用new,Struts2自动帮我们创建User对象),并自动生成对应的setUser和getUser方法,这样写之后,我们可以直接给User赋值。

说明:执行流 :a.首先调用getUser()来获取user,如果user为null的话,调用setUser来创建一个User对象并且给User对象的age属性赋值,然后将User赋值的引用传给成员变量user。

b,递归调用getUser,此时user不为null,直接给成员变量user的name属性赋值"gaoweigang" 。 

c,最后调用action中的add方法。

我们输入的参数个数有可能不是恰好和域模型匹配,我输入了1个参数name,域模型是不是正好要有1个参数呢?不是,这时候并不会报错,age是赋予默认值0。

再如:我们输入3个参数分别为name,age, birthday(Model中并不存在该属性),域模型中name和age属性会被正常赋值,birthday会在后台报错ognl.NoSuchPropertyException。

 

③通过ModelDriven来接收,这种方式并不常用,不过其中隐含了一种非常重要的程序设计思想(MVC模型)

implements ModelDriven<User>,DomainModel要自己new。

运行机制:struts2接收到2个参数,接收到2个参数后,它就会new那个访问的action, new这个action的时候,它就会发现这个action实现了ModelDriven接口,你既然实现了ModelDriven接口,那么就调用getModel()方法,返回一个DomainModel(User对象),再调用setName和setAge给User赋值。


 

 

  • 大小: 16.8 KB
  • 大小: 10.4 KB
  • 大小: 24.4 KB
  • 大小: 24 KB
  • 大小: 15.4 KB
分享到:
评论

相关推荐

    JavaScript获取网页表单action属性的方法

    JavaScript获取网页表单的action属性是一种常用的操作,通常用于获取表单提交时要发送到的URL地址。在Web开发中,表单是用来收集用户输入数据并将其发送到服务器的HTML元素。action属性指定了表单提交后,服务器处理...

    Spring in Action 中文版 第五部分(Spring in Action CN.005)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;Spring in Action CN.006&lt;br&gt;Spring in Action ... &lt;br&gt;本书信息:...

    最强大的录屏软件Action_Portable

    "Action_Portable"是一款被誉为最强大的录屏软件,它的便携式版本允许用户在无需安装的情况下,随时随地进行高质量的屏幕录制。Action!以其出色的性能、丰富的功能和易用性赢得了用户的广泛赞誉。以下是对这款软件的...

    jsp自动调用action

    ### jsp自动调用action详解 #### 一、概述 在Web开发中,尤其是在使用Java Server Pages (JSP)与Struts框架时,有时需要在用户访问某个初始页面(如欢迎页)时自动触发一系列后端操作(如执行某个Action)。这种...

    自定义Action实现Action接口(实现简单登录功能)

    在Struts2框架中,自定义Action是实现业务逻辑的核心组件。这个教程将带你了解如何通过实现`Action`接口来创建一个简单的登录功能。首先,我们需要理解Struts2的架构和Action类的角色。 Struts2是一个基于MVC...

    多action之间跳转传参问题

    在开发Java Web应用程序时,尤其是使用Struts2或者Spring MVC等MVC框架时,我们经常需要在多个Action之间进行跳转并传递参数。这在构建动态、交互性强的Web应用中是必不可少的。本项目旨在演示如何在自定义的Action...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...

    Android 多个service的action 相同冲突 验证demo

    在某些情况下,我们可能需要启动多个Service来执行不同的任务,但问题在于,如果这些Service的Intent ACTION(动作)相同,可能会引发冲突。本篇文章将深入探讨这个主题,并提供一个验证示例。 当多个Service声明了...

    action之间的跳转

    Action 之间的跳转 Action 之间的跳转是 Struts2 框架中的一种机制,允许不同的 Action 之间进行跳转,以实现复杂的业务逻辑。这种机制可以分为两种类型:chain 和 redirect-action。 1. Chain 类型 当 type 为 ...

    Android action 分类大全

    13. `ACTION_DATA_ACTIVITY_STATE_CHANGED_ACTION` 和 `ACTION_DATA_CONNECTION_STATE_CHANGED_ACTION`:这两个广播分别用于通知电话的数据活动状态和数据连接状态变化,对于网络相关功能的监控非常有用。...

    android Action call 拨打电话 Intent.ACTION.CALL

    当我们想要从应用中拨打电话时,就需要用到Intent ACTION_CALL这个知识点。接下来,我们将深入探讨如何在Android中使用Intent ACTION_CALL来实现拨打电话的功能。 首先,理解Intent ACTION_CALL的含义是关键。...

    通过表单提交实现调用不同的action方法

    在表单提交时,我们可以通过`action`属性设置表单数据的提交地址,即URL。例如: ```html &lt;form action="doSomething" method="post"&gt; &lt;!-- 表单内容 --&gt; ``` 这里的`doSomething`就是Action方法的标识,它会被...

    action的三种类型

    ### Action的三种类型详解 在自动化测试工具QTP(Quick Test Professional)中,Action是一种重要的概念,它代表了脚本中的一个独立执行单元。通过合理地组织和利用Action,可以帮助测试人员更高效、灵活地进行自动...

    动态设置form表单的action属性的值的简单方法

    form name="myform" id="myform" action="ssss" method="post" onsubmit="getUrl();"&gt; javascript方法: [removed] function getUrl(){ $('form').attr('action','new_url'); } [removed] 或者用单纯的...

    Action bar 操作栏

    在Android应用开发中,Action Bar(操作栏)是界面设计中的一个重要组成部分,它为用户提供了一种统一且高效的交互方式。这个部分将详细讲解Action Bar的基本概念、功能、设计原则以及如何在代码中实现。 一、...

    Action传递参数的三个方法

    ### Action传递参数的三个方法 在自动化测试领域,特别是使用QTP(Quick Test Professional)工具进行脚本开发时,参数化是一种非常重要的技术。通过参数化可以提高测试脚本的复用性和灵活性,使得测试更加高效。...

    Spring in Action 中文版 第二部分(Spring in Action CN.002)

    Spring in Action CN.001&lt;br&gt;Spring in Action CN.002&lt;br&gt;Spring in Action CN.003&lt;br&gt;Spring in Action CN.004&lt;br&gt;Spring in Action CN.005&lt;br&gt;Spring in Action CN.006&lt;br&gt;Spring in Action ... &lt;br&gt;本书信息:...

    struts2 action跳转action传参数

    ### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...

    Action——Action的配置和作用

    在讨论Struts2框架时,我们经常会遇到一个关键词——Action,它在Struts2中扮演着非常关键的角色。今天我们就来探讨Action的含义、作用以及在Struts2框架中的配置。 首先,Action在Struts2中包含三层含义。第一层,...

    struts2一个action处理多个请求 struts2实例

    在Struts2框架中,Action类是业务逻辑处理的核心组件,它负责接收并处理来自用户的请求。本实例探讨了如何让一个Action类处理多个请求,这在开发中常见于需要集中处理相似请求的情况,可以提高代码复用性和结构的...

Global site tag (gtag.js) - Google Analytics