Action的生命周期及调用非execute方法

来源:互联网 发布:蛀牙漱口水推荐 知乎 编辑:程序博客网 时间:2024/06/05 06:52

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>  
0 0