首先需要注意的是Struts2的struts.xml,必须要遵循一个规范,那就是 约定优于配置.
在Struts2中,为了减少配置量,而使用了通配符的配置.
<?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> <constant name="struts.devMode" value="true" /> <package name="actions" extends="struts-default" namespace="/actions"> <action name="Student*" class="org.credo.action.StudentAction" method="{1}"> <result>/Student{1}_success.jsp</result> </action> <action name="*_*" class="org.credo.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result> <!-- {0}_success.jsp --> </action> </package> </struts>
UI页面:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <% String context = request.getContextPath(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <body> 使用通配符,将配置量降到最低<br /> <a href="<%=context %>/actions/Studentadd">添加学生</a> <a href="<%=context %>/actions/Studentdelete">删除学生</a> <br /> 不过,一定要遵守"约定优于配置"的原则 <br /> <a href="<%=context %>/actions/Teacher_add">添加老师</a> <a href="<%=context %>/actions/Teacher_delete">删除老师</a> <a href="<%=context %>/actions/Course_add">添加课程</a> <a href="<%=context %>/actions/Course_delete">删除课程</a> </body> </html>
可以看到,第一个action配置,对应UI中的2个学生.
如果点击第一个"添加学生",那么 第一个action配置中的*就是 add.
那么配制中的method也就是 add方法体.进入方法体将会执行add方法. 删除学生就是执行delete方法.
这个是通配符的简易应用.
现在再看第二个配置.就是下面这些配置:
<action name="*_*" class="org.credo.action.{1}Action" method="{2}"> <result>/{1}_{2}_success.jsp</result> <!-- {0}_success.jsp --> </action>
如果成功了,那么就跳转到result=success中的页面 /{1}_{2}_success.jsp==>Teacher_add_success.jsp.
所以你可以发现,使用通配符后,你新建的action,UI页面,完全可以按照这个配置的规则.而不需要在struts.xml中写新的配置.
所以使用通配符,必须要在小组内约定好规则.写一份详细的文档,不费多少时间的,但能给整个项目的开发带来效率.文档宁可让人觉得罗嗦,别让人觉得搞不清楚细节.