关于action的知识
-
<package name="default" namespace="/" extends="struts-default"> -
<action name="hello" > -
<result > -
/hello.jsp -
</result> -
</action> - </package>
l Action中的属性
u Class属性
在上面的action中,属性多了一个class
这样,过滤器会去
Public
Return
}
只要是execute方法返回是字符串。
这个东西就会被当成一个action
当我们没有给action配置class的时候,它默认执行自己的class
该class在xwork的jar包中。
在实际开发中,我们execute对象所在的类,是使用继承ActionSupport
u Method属性
在action属性中还有个method方法,前面说有指定class的时候就会去调用class中的execute方法。而这里,当action中出现method属性的时候,就不会去调用execute方法,而去调用method指定的方法:
但是这种方法不推荐用!因为会产生太多的action
下面看看推荐用的方法,叫动态方法调用(DMI)
是在URL中动态指定方法。
用法:在url的action后面加上“!方法名”
如:,这是调用user
这种方法简单,再多的方法都只要配一个action
Struc2中路径问题
当我们在使用strut2时,在被strut2调出的jsp中写一个连接:
”index.jsp”>
点击这个连接的时候,它跳转的是strut2的连接,而不是jsp所在位置的连接。
Strut2中的路径是根据action的路径来确定,而不是根据当前jsp路径来确定,所以尽量不要使用相对路径,
虽然可以使用redirect方式解决,但不是必要的
解决方法简单,使用统一的绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常使用的,自动生成的指定basepath
Path就是
Basepath就是
Basepath+path+/
或者还可以这样:
- 在jsp的head中加上:<base
href=”<%=basePath%>” /> ,前提是有自动生成的basepath。
这样指定了base后,就可以使用在当前jsp中使用相对路径了:
- <a
href=”index.jsp”> 主页 </a>
这样也是一样的。