- 沿用“Spring
JDBC Template
CRUD”样例中“控制器”类的逻辑编写“Action”类
tfw.integration_demo._05_struts_web_mvc._02_spring_crud.action._01_UserMgrAction
:
……
public class _01_UserMgrAction
{
private _01_UserMgrService userMgrSvc;
……
public void setUserMgrSvc(_01_UserMgrService userMgrSvc)
{
this.userMgrSvc = userMgrSvc;
}
private String strTitle;
……
public void setPageTitle(String strTitle)
{
this.strTitle = strTitle;
}
……
public String work() throws SQLException
{
HttpServletRequest request = ServletActionContext.getRequest();
// HttpServletResponse response = ServletActionContext.getResponse();
String strCmd = WebToolE.getParameter(request, "cmd", null);
String strTarget = "result";
if ("do_add".equals(strCmd))
{
……
}
else if ("show_detail".equals(strCmd))
{
……
strTarget = "detail";
}
else if ("do_edit".equals(strCmd))
{
……
}
else if ("discard".equals(strCmd))
{
……
}
else if ("to_login".equals(strCmd))
{
strTarget = "login";
}
else if ("do_login".equals(strCmd))
{
……
}
else
{
……
strTarget = "list";
}
request.setAttribute("page_title", strTitle);
return strTarget;
}
}
- 编写 ApplicationContext
分项配置文件
src/main/resources/tfw/integration_demo/_04_spring_web_mvc/sub_files/06_spring_4_struts.xml
,向 Spring
注册上述“Action”对象,并向其注入任意一个在先前样例中已注册的业务层对象:
<?xml version="1.0" encoding="UTF-8"?>
<beans ……>
<bean id="struts.spring_crud.userMgrAction"
class="tfw.integration_demo._05_struts_web_mvc._02_spring_crud.action._01_UserMgrAction">
<property name="userMgrSvc" ref="crud.hibernate.advanced.userMgrSvc"/>
<property name="pageTitle"
value="Integration&nbsp;Demo / 05&nbsp;Struts&nbsp;Web&nbsp;MVC / 02&nbsp;Spring&nbsp;integrated&nbsp;Create,&nbsp;Read,&nbsp;Update&nbsp;&&nbsp;Discard / 01&nbsp;User&nbsp;Management - "/>
</bean>
</beans>
- 修改 ApplicationContext
主配置文件
src/main/resources/tfw/integration_demo/_04_spring_web_mvc/applicationContext.xml
,添加上述分项:
<?xml version="1.0" encoding="UTF-8"?>
<beans ……>
……
<import resource="sub_files/05_hibernate_crud.xml"/>
<import resource="sub_files/06_spring_4_struts.xml"/>
</beans>
- 修改 Struts 分项配置文件
src/main/resources/tfw/integration_demo/_05_struts_web_mvc/struts.xml
,向 Struts
注册上述“Action”对象:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE ……>
<struts>
……
<!-- [########################################] -->
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring"
class="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
<constant name="struts.objectFactory" value="spring"/>
<package name="integration_demo.struts.spring_crud" extends="struts-default"
namespace="/tfw/integration_demo/05_struts_web_mvc/02_spring_crud">
<action name="01_user_mgr" class="struts.spring_crud.userMgrAction"
method="work">
<result name="result">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/result.jsp</result>
<result name="detail">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/detail.jsp</result>
<result name="login">/WEB-INF/pages/tfw/integration_demo/05_struts_web_mvc/02_spring_crud/01_user_mgr/login.html</result>
<result name="list">/WEB-INF/pages/tfw/integration_demo/04_spring_web_mvc/02_crud/01_basic_jdbc_crud/01_user_mgr/list.jsp</result>
</action>
</package>
</struts>
说明 /
注意事项:
- “class="struts.spring_crud.userMgrAction"”:
启用 Spring
集成支持后,“class”属性的值首先被
Struts 用作 ID 从 Spring
ApplicationContext
提取对象;
如果 Spring
ApplicationContext
中没有相应的对象,Struts
才将此值用作类名。
- 修改 或/及
新增相关的索引页,添加指向此控制器的
URI ,确认控制器配置正确。
- 编写本样例的专用页面
src/main/webapp/WEB-INF/pages/tfw/integration_demo/05_struts_web_mvc/02_spring_crud/01_user_mgr/login.html
。
- 测试本样例的“登录”和增删改查功能。