struts.xml 文件配置及 Action 接受参数的方式
 本次记录一下 struts.xml 文件在多种模块下的配置方法以及 Action 在接受 view 种参数的方式
struts.xml 配置
 在有需要多种模块配置要求下的 struts.xml 文件有两种配置方法
多模块配置 struts.xml
        使用 
| 1 | <!-- 用户模块 --> | 
多文件配置 struts.xml
        使用多个 struts.xml 文件进行配置,在主 struts.xml 文件中添加 
| 1 | <include name="struts-order.xml"></include> | 
Action 接受 View 种值的几种方式
通过 Serlvlet 来获取
register.jsp:
| 1 | <form action="${pageContext.request.contextPath}/login/register.action"> | 
UserAction:
| 1 | HttpServletRequest req = ServletActionContext.getRequest(); | 
struts.xml:
| 1 | <package name="user" extends="struts-default" name="/user"> | 
通过 Action 的属性的 set 方法注入
 struts 会通过表单字段的名称,调用 set 方法,比如 username 字段会调用 setUsername
UserAction:
| 1 | private String username; | 
通过 Action 的属性的 set 模型的形式注入
User:(模型,提供属性的 get/set 方法)
| 1 | package com.web.model; | 
UserAction:(把参数封装到一个 User 模型中,在 Action 中提供模型的 get/set 方法)
| 1 | private User user; | 
register.jsp:
| 1 | <form action="${pageContext.request.contextPath}/login/register.action"> | 
通过 Action 模型驱动封装参数
register.jsp:
| 1 | <form action="${pageContext.request.contextPath}/login/register.action"> | 
UserAction:
| 1 | package com.lmh.action; | 
参数注入原理
 参数会自动注入是因为 struts-default.xml 中有两个拦截器在工作
| 1 | <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/> | 
 1.struts 的默认拦截器是由 defaultStack 决定的
 2.如果在 package 中不写拦截器,就是 struts-default 中的defaultStack 的拦截器在工作
 3.一旦在 package 中写了拦截器,struts-default 中的 defaultStack 的任何拦截器就都不工作了