struts2动作类及xml配置

xiaoxiao2021-02-28  22

一、编写动作类的三种方式

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" } }

三、获取servletAPI

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; }

四、struts.xml文件详解

<?xml version="1.0" encoding="UTF-8"?> <!--配置的约束--> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!--设置开发者模式--> <constant name="struts.devMode" value="true"/> <!--package:是指包,内可以写多个动作;name:包名称(唯一) extends:继承struts默认的配置--> <package name="p1" extends="struts-default"> <!--action中 name:动作名称(相当于标识) class:动作类的全名 method:方法名称(执行相应方法的名称)--> <action name="action1" class="com.san.action.Action1" method="actionMethod"> <!--result结果视图(相当于当该方法执行成功,返回success时,跳转到success.jsp页面)--> <result name="success">/success.jsp</result> </action> </package> </struts>

五、关于struts.xml没有提示的问题

    原因:没有找到对应的dtd文件(或者是电脑没有联网或者没有加配置的约束)。 电脑没有联网时:     解决方法: 找到struts-2.3.dtd解压出来(按图中步骤来)

六、struts.xml中结果视图转发和重定向

    注意: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>
转载请注明原文地址: https://www.6miu.com/read-1400022.html

最新回复(0)