1、action的生命周期:Struts2中的Action在每一次web请求的时候都要新建一个实例。
2、调用非execute方法
1:配置方式调用
首先要在Action中实现要被调用的方法,这些方法的签名要求除了名字和execute不一样外,其他均应一样,也就是说,这些方法的定义要满足如下要求:
可见性为public
不需要传入参数
返回一个字符串,其实就是指示的下一个页面的result。
可以抛出Exception,当然也可以不抛例外
假设现在要实现新增的功能,可以在Action中定义一个create方法,示例如下:
public String create() throws Exception{
System.out.println("现在执行create的处理");
return "toWelcome";
然后修改struts.xml中的配置,在< action>定义里面,添加一个method属性的配置,method属性是用来指示一个Action中的方法,这个方法会在执行Action的时候执行,也就是说,你配置了method属性,Action运行的时候会执行这个方法而不是execute方法,示例代码如下:
<action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction" method="create">
<result name="toWelcome">/s2impl/welcome.jsp</result>
<result name="input">/s2impl/login.jsp</result>
</action>
2:在请求的URL中直接指定的方式
还可以直接在请求的URL中指定要访问的方法,使用这种方法,在Action中还是要按照上面的方式来添加需要被访问的方法,但是struts.xml配置中,就不需要为< action>元素配置method属性了。
在访问的URL上,在action名后直接加上感叹号!和方法名,例如:
<form action="/helloworld/helloworldAction!create.action" method="post">
<input type="hidden" name="submitFlag" value="login"/>
账号:<input type="text" name="account"><br>
密码:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>