struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。
虽然可以用redirect方式解决,但redirect方式并非必要。
解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
或者使用myeclipse经常用的,指定basePath
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">
<a href="<%=basePath%>index.jsp">index.jsp</a>
动态方法调用:
Action执行的时候并不一定要执行execute方法
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)
前者会产生太多的action,所以不推荐使用
UserAction.java中
package com.zhangmin.struts.action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
public String add() {
return SUCCESS;
}
}
struts.xml中
<?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="user" extends="struts-default" namespace="/user">
<action name="user" class="com.zhangmin.struts.action.UserAction">
<result>/user_add_success.jsp</result>
</action>
</package>
</struts>
jsp文件中
<a href="<%=path %>/user/user!add">添加用户</a>
通配符
使用通配符,将配置量降到最低
不过,一定要遵守"约定优于配置"的原则
1.src 目录下包括CourseAction.java TeacherAction.java StudentAction.java
package com.zm.struts.action;
import com.opensymphony.xwork2.ActionSupport;
public class CourseAction extends ActionSupport{
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
package com.zm.struts.action;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport{
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
package com.zm.struts.action;
import com.opensymphony.xwork2.ActionSupport;
public class TeacherAction extends ActionSupport{
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
struts.xml文件中:
<?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" namespace="/actions" extends="struts-default">
<action name="Student*" class="com.zm.struts.action.StudentAction" method="{1}">
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="com.zm.struts.action.{1}Action" method="{2}">
<result>/{1}_{2}_success.jsp</result>
</action>
</package>
</struts>
3.webRoot下面的jsp文件,用于显示:
Course_add_success.jsp
Course_delete_success.jsp
Student_add_success.jsp
Student_delete_success.jsp
Teacher_add_success.jsp
Teacher_delete_success.jsp
分享到:
相关推荐
在这个主题“Struts2--3.Action及相关-1”中,我们将深入探讨Struts2的核心组件——Action类及其相关概念。Action类在Struts2中扮演着业务逻辑处理者的角色,它负责接收用户的请求,执行相应的业务操作,并返回结果...
在Struts2框架中,通配符主要用于Action的配置,其核心思想是“约定优于配置”。通过预设一定的命名规则,可以利用通配符来匹配一系列类似的Action名称,从而避免对每一个具体的Action都进行显式配置。 #### 三、...
在Struts2配置文件中,可以使用通配符(*)来简化Action的配置。例如,在给定的部分内容中,使用了通配符来配置一个名为`carAction`的包,其中的Action名称为`*`,表示该包下的所有Action都遵循同样的配置规则,具体...
### Struts In Action #### 知识点概览 1. **Struts 框架简介** - 定义与历史 - 特点与优势 - 应用场景 2. **Struts 架构探索** - MVC 设计模式 - Struts 的核心组件 - 控制器、模型与视图的交互机制 3. *...
* There is no Action mapped for namespace [/] and action name [test-update] associated with context path [/Struts2_01]. 这些错误提示通常是由于映射问题引起的。解决这些问题的步骤是: 1. 先排查访问的...
1. **DMI(Dynamic Method Invocation)**:允许动态调用Action方法,例如使用通配符配置`*{1}{2}a )*_*`。 2. **数据验证**:Struts 2提供简单的数据验证机制,`addFieldError`方法用于添加错误信息,但通常会配合...
Struts2 动作执行结果类型有 action、redirect、redirectAction、dispatcher 等,但 a 不是其中之一。 14. Struts.xml 文件中的 namespace 配置: 如果在 Struts.xml 文件中没有配置 namespace,则 Struts2 会自动...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、请求处理、视图渲染等。在某些情况下,我们可能需要对URL进行重写,以便提升用户体验,例如隐藏实际的参数,使得URL更加美观...
- 为了防止Struts配置文件`struts-config.xml`变得过于庞大,可以通过在`web.xml`中添加多个配置文件路径,或者在`struts-config.xml`中使用通配符来批量配置Action。 - `action`元素的必要属性包括`path`(定义...
本文档旨在提供一套详细的配置指南,用于整合Struts1.x、Spring2.x、Hibernate3.x以及DWR2.x等技术栈。通过本指南,开发者可以更好地理解如何将这些框架有效结合,以构建稳定、高效的Java Web应用。 #### 文档约定 ...
<action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" parameter="method"> <forward name="succ" path="/succ.jsp"/> <forward name="error" path="/login.jsp" redirect="false...
- **映射动态配置**:使用通配符(*)和占位符({})来定义请求映射规则,使得Struts2能够更加灵活地处理各种URL请求。 **4. 传值的获取表达式** - **EL表达式**:用于存取数据,支持`.`和`[]`两种运算符。当属性名...
需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...