首先我们有一个Action——UserAction
public class UserAction
extends ActionSupport
{
public String add()
{
return "add";
}
public String modify()
{
return "modify";
}
}
1 指定method
<package name="user" namespace="/userPath" extends="struts-default">
<action name="userAdd" class="com.xy.UserAction"
method="add">
<result name="add">add.jsp</result>
</action>
<action name="userModify" class="com.xy.UserAction" method="modify">
<result name="modify">modify.jsp</result>
</action>
</package>
路径:
userPath/userAdd
userPath/userModify
特点:
不灵活,CRUD四个操作就要配4个action。
2 动态方法调用DMI(Dynamic Method Invocation)
<package name="user" namespace="/userPath" extends="struts-default">
<action name="user" class="com.xy.UserAction">
<result name="add">add.jsp</result>
<result name="modify">modify.jsp</result>
</action>
</package>
路径:
userPath/user!add
userPath/user!modify
特点:
灵活。只要指定不同的方法就可以做不同的操作。
3 通配符
<package name="all" namespace="/" extends="struts-default">
<action name="*_*" class="com.xy.{1}Action" method="{2}">
<result name="add">{1}_add.jsp</result>
<result name="modify">{1}_modify.jsp</result>
</action>
</package>
路径:
User_add
User_modify
特点:
更加灵活。整个项目甚至只要配一个总的action。是指定方法的一个特殊的用法。不过我觉得用DMI可以将每个模块分的清楚。
4 总结
在配置的时候要记住一句话:约定优于配置。
在一个项目中,配置前,我们需要对action名,网页名等等有严格的约定,才能做好配置。
分享到:
相关推荐
通过在`<action>`标签中使用`method`属性,我们可以指定要执行的动作类的具体方法。例如: ```xml <struts> <package name="demo" extends="struts-default"> <action name="test" class="action.MyAction"> <!-...
总之,`struts_xml`中的Action配置是Struts2应用的基石,通过它可以灵活地定义请求与业务逻辑的映射关系,以及后续的页面跳转和拦截器链,从而构建出高效、可维护的Web应用。深入了解和熟练掌握这部分知识对于提升...
这里,`Login_*`将匹配所有以`Login_`开头的请求,`{1}`是OGNL表达式,用于获取Action名称中的第二个部分,作为Action方法名。 9. **DevMode**: `<constant name="struts.devMode" value="false" />`设置Struts2...
10. struts.enable.DynamicMethodInvocation:这是一个布尔值,用于确定是否允许动态方法调用。如果设置为true,Struts2将允许动态方法调用。 11. struts.freemarker.manager.classname:这是一个FreemarkerManager...
拦截器是Struts2中的一种机制,它们在Action执行前后执行特定的任务,如日志记录、性能统计等。`<interceptor>`定义单个拦截器,通过`name`指定名称,`class`指定实现类。 6. **interceptor-stack标签**: `...
struts.action.extension The URL extension to use to determine if the request is meant for a Struts action 用URL扩展名来确定是否这个请求是被用作Struts action,其实也就是设置 action的后缀,例如login....
- `<result>` 在Action中定义特定的返回结果,`name`与Action中的返回值匹配,`type`指定了结果类型,如果不指定则使用父包的默认类型,`action`是对应的结果页面或资源。 Struts 2的配置文件通过这种方式灵活地...
<constant name="struts.enable.DynamicMethodInvocation" value="true"/> <constant name="struts.convention.action.mapallmatches" value="true"/> 这两行请不要加在外边。<struts>“加在这里”</struts>
在 Struts2 中,我们可以使用不同的方式来动态调用 Action 的指定方法,例如使用表单提交、struts.xml 配置、通配符方法等方式。此外,我们还可以配置默认的 Action 和全局结果,以便更好地管理我们的应用程序。
这个问题搞了一个晚上。(希望对初学的朋友有帮助) 发现不能运行的原因 1、login.jsp的form表格里的...4、struts.xml中的<result name="Sucess">/loginsucess.jsp</result> name要与LoginAction.java的返回结果相对应.
在Struts2的配置文件(通常为struts.xml或struts.properties)中,我们定义Action的映射规则,包括请求路径、方法调用以及结果视图等。默认情况下,一个Action类对应一个请求URL,但通过特定配置,可以让一个Action...
本文主要讨论了Struts 2 Action中的几种执行方法,包括默认的execute方法、通过struts.xml配置method属性、动态方法调用(DMI)、使用通配符映射以及利用提交按钮指定提交方法。这些方法使得开发者可以根据不同的...
解析: constant元素: 配置常量,可以改变Struts 2框架的一些行为 name属性表示常量名称,value属性表示常量值 package元素: ...method:方法名,默认使用的execute()方法 result元素: name属性:默认为succ
- `method`属性定义了Action类中要执行的方法。 - `result`子元素配置了Action执行后的返回页面或视图。 4. **拦截器配置** - `interceptors`元素定义了自定义拦截器或拦截器栈。 - `default-interceptor-ref`...
该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理.如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开. struts.serve.static 该属性设置是否...
在Java Web开发中,Struts1.x框架是一个广泛使用的MVC(Model-View-Controller)框架,它提供了处理用户请求、业务逻辑和视图展示的能力。在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的...
2. **指定方法名调用**:如果需要调用特定方法,可以在`struts.xml`中配置,并在JSP中使用`action`标签的`method`属性指定。 3. **重复Action配置**:对于同一个Action类的不同方法,需要在`struts.xml`中配置多个`...
动态方法调用(Dynamic Method Invocation, DMI)是Struts2提供的一种简化配置的方式。通过DMI,我们可以在URL中直接指定要调用的方法,而无需为每个方法创建单独的Action配置。配置示例如下: ```xml <action name...
Struts2支持动态方法调用,这意味着无需在配置文件中显式指定Action方法,而是直接使用请求URL中的方法名作为Action方法。但这需要确保Action类的公共方法符合一定的命名规范,并且返回值类型为String。 综上所述,...
通配符配置允许为一组相似的Action定义一个通用配置,比如`*.{method}`可以匹配所有以method结尾的Action。 **九、Action的属性接收参数** 1. 在Action类中添加成员属性,Struts2会自动将请求参数绑定到这些属性上...