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 的任何拦截器就都不工作了