首页 > 代码库 > Struts 2 之配置文件
Struts 2 之配置文件
Struts 1使用ActionServlet作为分发器,而Struts 2使用Filter作为分发器。如果有多个Filter,要把Struts 2的分发器Filter放在最后
web.xml<filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Struts 2的默认后缀为".action",配置<url-pattern>时最好配置为"/*"而不要只配置成"/*.action",因为Struts 2集成了一些Javascript、CSS资源,而这些资源都不以"/*.action"为后缀
struts.properties配置了Struts 2的一些默认参数,每个可配置的参数都有一个默认值,该文件不是必须的,如果无需修改任何参数值,可以不用添加该文件
Struts 2的默认属性位于struts2-core.jar包org/apache/sturts2下面的default.properties里,用户可以在项目的/WEB-INF/classes下添加struts.properties覆盖默认的配置
常用属性如下#上传文件的工作目录与文件的最大尺寸 struts2.multipart.saveDir = struts2.multipart.maxSize = #Struts 2的默认后缀 struts.action.extension = #是否为开发模式 struts.devMode = false or ture #默认的主题、模板、模板文件后缀 struts.ui.theme = xhtml struts.ui.templateDir = struts.ui.templateSuffix = ftl #Struts 2的默认配置文件 struts.configuration.files = struts-default.xml,struts-plugin.xml,struts.xml
struts.xml<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 该属性指定需要Struts2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts2处理。如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。 --> <constant name="struts.action.extension" value=http://www.mamicode.com/"do" />>
自定义Action一般直接继承自ActionSupport类,并覆盖execute()方法,Struts 2没有Struts 1中的ActionForm之类的容器,此类容器由Action兼任,变量的值会被Struts 2通过setter方法自动赋值import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport{ private String account; private String account; public String execute(){ //主方法 if(……) return LOGIN; } return SUCCESS; } //setter、getter方法略 }
ActionSupport实现了Action接口,而Action接口中定义了几个常用的result名称,编程中尽量使用这些预置的result名称public interface Action{ public static final String SUCCESS = "success"; public static final String NONE = "none"; public static final String ERROR = "error"; public static final String INPUT = "input"; public static final String LOGIN = "login"; public abstract String execute() throws Exception; }
Struts 2的Action不一定非要实现Action接口,任何POJO都可以用作Action,只要这个Action具有public String execute()方法,Struts 2会通过反射调用execute()方法,如public class LoginAction { private String account; private String account; public String execute(){ if(……) return LOGIN; } return SUCCESS; } //setter、getter方法略 }
不实现Action的好处是不与Struts 2发生耦合,代码不依赖Struts 2的类库
execute()是Action的默认方法,Struts 2还可以执行其他方法,只要这些方法没有参数,并返回String类型,throws声明可有可无,如public class LoginAction extends ActionSupport{ private String account; private String account; //setter、getter方法略 public String execute(){ //主方法 if(……) return LOGIN; } return SUCCESS; } public String login() throws Exception{ //自定义方法 return LOGIN; } public String logout() throws Exception{ //自定义方法 return "logout"; } }
可以通过/login!login.action访问login()方法,同理,通过/login!logout.action访问logout()方法
此外,也可以把方法配置到Action当中<action name="login" class="com.clf.LoginAction" method="login"> <result name="login">/login.jsp</result> <result name="logout">/logout.jsp</result> </action> <action name="logout" class="com.clf.LoginAction" method="logout"> <result name="login">/login.jsp</result> <result name="logout">/logout.jsp</result> </action>
缺点是需要配置多次
Struts 1在使用POJO时,必须显示的new一个对象,而Struts 2不需要,如果没有对象,会在运行时通过反射实例化一个对象
Struts 2 之配置文件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。