注意到你的path中有个*号吗?
path="/*PasswordInit"
{1}指的就是那个*号所匹配的内容比如你现在的请求路径是 /AbcPasswordInit
那么*号匹配的就是"Abc",而{1}代表的也是"Abc"
path="/*PasswordInit"
{1}指的就是那个*号所匹配的内容比如你现在的请求路径是 /AbcPasswordInit
那么*号匹配的就是"Abc",而{1}代表的也是"Abc"
解决方案 »
- 动态实现Json数据如何做?
- struts2 + json
- 晕了,java.lang.NoSuchMethodError
- 删除文章时,怎样删除里面的图片....
- URLEncoder向不同服务器提交时的编码问题。
- tomcat发布问题,各位学长请指教
- 请问如何用java对EXECL插入图片
- struts中通过getDataSource(request)无法得到链接但直接连接数据库能成功,返回为null,请问如何解决
- 请问我在weblogic中发布一个server,所指向的jdk是bea\jdk141_05,请问这个自带的是j2eesdk还是j2sesdk?如果用j2eesdk,是不是覆盖了j2sesd
- 在线等解决方案,求大神帮忙新手,别整太深奥的
- j2ee项目登录是怎么做自动登录啊?
- 求助:页面打开excel出现 乱码问题
在不使用通配符的常规做法中,我们要配置很多个ActionMapping,举个不是很恰当的例子,有个信息表,需要ADSM(增加、删除、查询、修改)操作,那么我们要配置4个ActionMapping,类似下面这样:
<action path="/addSubscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
name="subscriptionForm"
scope="request"
validate="false">
<forward name="failure" path="/failure.jsp"/>
<forward name="success" path="/subscriptionaddsuccess.jsp"/>
</action><action path="/editSubscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
name="subscriptionForm"
scope="request"
validate="false">
<forward name="failure" path="/failure.jsp"/>
<forward name="success" path="/subscriptioneditsuccess.jsp"/>
</action>
...... 自struts1.2.0,就可以用通配符,可以写成如下形式:
<action path="/*Subscription"
type="org.apache.struts.webapp.example.EditSubscriptionAction"
name="subscriptionForm"
scope="request"
validate="false">
<forward name="failure" path="/failure.jsp"/>
<forward name="success" path="/subscription{1}success.jsp"/>
</action>
这样,用这段配置,就可以通配(代替)上面冗长配置了。
先简单解释一下,使用通配符这段,关键点有两处,第一:path="/*Subscription",这里使用了*来通配前面的add和edit,第二:<forward name="success" path="/subscription{1}success.jsp"/> ,这里使用{1}来表示*所代表的--也就是说,如果在页面表单里面这样写<form action="/editSubscription.do">,那么forward到success的时候,就是forward到/subscriptioneditsuccess.jsp页面。
现在详细介绍一下通配符的用法。struts配置文件中<action>标签的path属性,可以使用下列三种通配符:
* :可以匹配0个或多个字符,但不能匹配"/"
** :可以匹配0个或多个字符,且可以匹配"/"
\character :用来转译*和\ 通配符所代表的实际的值可以用{N}来引用,其中N可以等于0~9。N的含义是:
{0} 代表整个path代表的所有字符--不包括第一个/,如path=“/*Subscription”中的*是add,那么{0}就是addSubscription。
{1} 代表第一个通配符(包括*, **, \character)所表示的实际内容,如path=“/*Subscription”中的*是add,那么{1}就是add。
{2} 代表第二个通配符(包括*, **, \character)所表示的实际内容,如path=“/*Subscription*”中的第一个*是add而第二个*是test,那么{1}就是add,{2}就是test
{3}~{9} 类似{1}, {2} 可以使用{N}的<action>属性有:
type
name
roles
parameter
attribute
forward
include
input
可以使用{N}的<forward>属性有:
path