1.struts2 步骤
1.创建web项目
2.添加struts2的必须jar包
3.添加支持(配置web.xml文件)
4.创建界面和相应的action
5.配置struts.xml文件
6.部署运行项目
2.struts2的工作流程
1. 浏览器发送一个请求。
2. 核心控制器FilterDispatcher根据请求决定调用合适的Action。
3. 拦截器(Intercepter)自动对请求应用通用功能,如验证等。
4. 回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。
5. Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。
3.struts2的配置文件
1.web.xml
2.struts.xml(核心 管理Action映射) 自己配置的
3.struts-default.xml 是struts2框架默认加载的配置文件。它定义struts2一些核心的bean和拦截器。这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类。
4.struts.properties(核心 管理属性) 自己配置的
5.default.properties(核心 管理属性)
4.<struts>标签下的子标签配置
1.<bean type="com.opensymphony.xwork2.ObjectFactory" name="struts" class="org.apache.struts2.impl.StrutsObjectFactory" />
2.<include file="struts1.xml"></include>
3.<constant name=“key” value=“value” />
4.<package></package>
5.package标签下的配置
1.<action name="loginAction" class="com.action.loginAction">
<result name="success">/welcome.jsp</result>
<result name="error">/index.jsp</result>
</action>
2.<global-results>
<result></result>
</global-results>
3.<global-exception-mappings>
<exception-mapping result="error" exception="java.long.Exception"></exception-mapping>
</global-exception-mappings>
……………………………………
6.action类实现Action接口和继承ActionSupport
7.通过ActionContext类获得context(request),再通过context获得session和application
context.put("key","value");
session.put("key","value");
session.put("key","value");
public class ServletActionContext (org.apache.struts2)
public static PageContext getPageContext()
public static HttpServletRequest getRequest()
public static HttpServletResponse getResponse()
public static ServletContext getServletContext()
8.在action中直接使用一个对象,两种方式:
1.在提交表单时name属性为:对象.xxxx
2.实现ModelDriven<类类型>接口和其方法。
9.拦截器的实现
1.编写拦截器类 如:public class AuthorityInterceptor extends AbstractInterceptor
2.重写public String intercept(ActionInvocation invocation) throws Exception方法
获得session:ActionContext ctx = invocation.getInvocationContext();
Map session = ctx.getSession();
3.在struts.xml中<package>标签下定义拦截器
<interceptors>
<interceptorname="authority"
class="com.ascent.action.AuthorityInterceptor"/>
</interceptors>
4.在struts.xml中<action>标签下引用拦截器
<interceptor-ref name="defaultStack"/>
//在配了其他拦截器后,一定要再配上默认的拦截器栈
<interceptor-ref name="authority"/>
10.国际化
1.配置BaseName
(1)在struts.xml中通过常量标签来配置 如: <constant name="struts.custom.i18n.resources" value="properties/message"/>这里message即为Basename
(2)在struts.properties 如:struts.custom.i18n.resources= properties.message
这里message即为Basename
2.在形如message_zh_CN.properties或message_en_US.properties等等的文件中配置相关的key-value键值对。
3.
(1)在jsp页面中涉及语言的内容用下面方式输出:Struts2的<s:text…/>标签,该标签 可以指定一个name 属性,该属性指定了国际化资源文件中的key.
(2)为了在Action类中访问国际化消息,可以使用ActionSupport类的getText方法,该方法可以接受一个name 参数,该参数指定了国际化资源文件中的key .
(3)为了在该表单元 Label里输出国际化信息,可以为该表单标签指定一个key属性, 该key指定了国际化资源文件中的key.