`
milk_nenu
  • 浏览: 13529 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2学习日志---3 Path Action 通配符

 
阅读更多

 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--3.Action及相关-1”中,我们将深入探讨Struts2的核心组件——Action类及其相关概念。Action类在Struts2中扮演着业务逻辑处理者的角色,它负责接收用户的请求,执行相应的业务操作,并返回结果...

    struts2通配符的使用详解

    在Struts2框架中,通配符主要用于Action的配置,其核心思想是“约定优于配置”。通过预设一定的命名规则,可以利用通配符来匹配一系列类似的Action名称,从而避免对每一个具体的Action都进行显式配置。 #### 三、...

    struts2学习

    在Struts2配置文件中,可以使用通配符(*)来简化Action的配置。例如,在给定的部分内容中,使用了通配符来配置一个名为`carAction`的包,其中的Action名称为`*`,表示该包下的所有Action都遵循同样的配置规则,具体...

    Struts In Action

    ### Struts In Action #### 知识点概览 1. **Struts 框架简介** - 定义与历史 - 特点与优势 - 应用场景 2. **Struts 架构探索** - MVC 设计模式 - Struts 的核心组件 - 控制器、模型与视图的交互机制 3. *...

    struts2.5+框架使用通配符与动态方法常见问题小结

    * There is no Action mapped for namespace [/] and action name [test-update] associated with context path [/Struts2_01]. 这些错误提示通常是由于映射问题引起的。解决这些问题的步骤是: 1. 先排查访问的...

    struts 2 笔记 struts2 基础

    1. **DMI(Dynamic Method Invocation)**:允许动态调用Action方法,例如使用通配符配置`*{1}{2}a )*_*`。 2. **数据验证**:Struts 2提供简单的数据验证机制,`addFieldError`方法用于添加错误信息,但通常会配合...

    struts试题

    Struts2 动作执行结果类型有 action、redirect、redirectAction、dispatcher 等,但 a 不是其中之一。 14. Struts.xml 文件中的 namespace 配置: 如果在 Struts.xml 文件中没有配置 namespace,则 Struts2 会自动...

    struts2中实现URL重写

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括MVC设计模式的实现、请求处理、视图渲染等。在某些情况下,我们可能需要对URL进行重写,以便提升用户体验,例如隐藏实际的参数,使得URL更加美观...

    自己整理2011实用JAVA面试题.doc

    - 为了防止Struts配置文件`struts-config.xml`变得过于庞大,可以通过在`web.xml`中添加多个配置文件路径,或者在`struts-config.xml`中使用通配符来批量配置Action。 - `action`元素的必要属性包括`path`(定义...

    ssha 最新 最完整 配置信息

    本文档旨在提供一套详细的配置指南,用于整合Struts1.x、Spring2.x、Hibernate3.x以及DWR2.x等技术栈。通过本指南,开发者可以更好地理解如何将这些框架有效结合,以构建稳定、高效的Java Web应用。 #### 文档约定 ...

    SSH整合关键步骤

    &lt;action path="/login" type="org.springframework.web.struts.DelegatingActionProxy" parameter="method"&gt; &lt;forward name="succ" path="/succ.jsp"/&gt; &lt;forward name="error" path="/login.jsp" redirect="false...

    spring框架登录初始化数据与struct2权限设置等相关知识

    - **映射动态配置**:使用通配符(*)和占位符({})来定义请求映射规则,使得Struts2能够更加灵活地处理各种URL请求。 **4. 传值的获取表达式** - **EL表达式**:用于存取数据,支持`.`和`[]`两种运算符。当属性名...

    ssh(structs,spring,hibernate)框架中的上传下载

     需要指定的是Spring 1.2.5提供了两套Hibernate的支持包,其中Hibernate 2相关的封装类位于org.springframework.orm.hibernate2.*包中,而Hibernate 3.0的封装类位于org.springframework.orm.hibernate3.*包中,...

Global site tag (gtag.js) - Google Analytics