将struts项目部署到tomcat下,运行时,会首先找到struts.xml文件,匹配namespace,然后匹配action的name,调用执行对应的动作,如果动作是一个类的话,类一般要继承ActionSupport类,里面定义返回值为String的方法。动作执行时,可以指定要执行的方法,指定方式是:method="方法名",也可以动态指定,则是不通过method指定方法,而是在访问时在路径中写明方法,“!方法名“,注意,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" /><!-- 开发模式 -->
<package name="user" namespace="/user" extends="struts-default">
<action name="userAdd" class="com.you.learn.UserAction" method="add">
<result>
/user_add_success.jsp
</result>
</action>
<action name="user" class="com.you.learn.UserAction">
<result>/user_add_success.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
访问路径为:http://localhost:8080/learnStruts2_02/user/user!add
方法调用也可以通过通配符匹配的方式,通过输入的name中的*匹配,第一个*内容和下面指定的{1}相匹
配额,第二个*则和下面指定的{2}匹配,这样的话动作中的方法名必须按提前约定好的来,体现出了“
约定优于配置”。代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true" /><!-- 开发模式 -->
<package name="actions" namespace="/actions" extends="struts-default">
<action name="Student*" class="com.you.learn.StudentAction" method="{1}">
<result>
/Student{1}_success.jsp
</result>
</action>
<action name="*_*" class="com.you.learn.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
其中jsp名称分别为:Studentadd_success.jsp、Studentdelete_success.jsp、Teacher_add_success.jsp、Teacher_delete_success.jsp