1、第一种方式: 创建一个普通的Java类。它就是一个POJO(Plain Old Java Object),原始老的Java对象
public class DemoAction{ public String hello(){ return "success" } }2、第二种方式: 创建一个普通类,实现Action接口,实现接口中的方法
/** *Action接口中的常量 *SUCCESS "success" 当执行成功后,前往指定的位置 *NONE "none" 不返回任何结果视图,相当于return null *ERROR "error" 出现异常时,前往指定页面 *INPUT "input" 用于数据回显 *LOGIN "login" 一般用于返回登录页面 */ public class DemoAction implements Action{ public String execute() throws Exception{ return null; } }3、第三种方式(开发中常用) 创建一个普通类,继承ActionSupport
public class DemoAction extends ActionSupport{ //当我们不写动作方法时,有一个默认的动作方法:execute() }写动作方法要求:方法必须是public类型;必须没有参数;返回值是String类型
public class DemoAction extends ActionSupport{ public String actionMethod(){ return "success" } }1、获取servletAPI的第一种方式
//动作方法 public String actionMethod(){ HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); HttpSession session=request.getSession(); ServletContext application=ServletActionContext.getServletContext(); }2、获取servletAPI的第二种方式(依赖注入)
private HttpServletRequest request; private HttpServletResponse response; private ServletContext application; public void setServletContext(ServletContext context){ application=context; } public void setServletRequest(HttpServletRequest request){ this.request=request; } public void setServletResponse(HttpServletResponse response){ this.response=response; }原因:没有找到对应的dtd文件(或者是电脑没有联网或者没有加配置的约束)。 电脑没有联网时: 解决方法: 找到struts-2.3.dtd解压出来(按图中步骤来)
注意:namespace的默认值是:”“(空字符串),而不是”/”。
<!--转发到同包--> <action name="动作名" class="动作类全名" method="动作方法名"> <result name="返回名" type="chain"></result> </action> <!--重定向到同包--> <action name="动作名" class="动作类全名" method="动作方法名"> <result name="返回名" type="redirectAction"></result> </action> <!--转发到不同的包--> <action name="" class="" method=""> <result name="" type="chain"> <!--使用注入思想--> <param name="namespace">另一个包的namespace的值</param> <param name="actionName">需要转发到的action或者页面</param> </result> </action> <!--重定向到不同的包--> <action name="" class="" method=""> <result name="" type="redirectAction"> <!--使用注入思想--> <param name="namespace">另一个包的namespace的值</param> <param name="actionName">需要转发到的action或者页面</param> </result> </action>