`
Mr_Chunlei
  • 浏览: 28734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

struts.xml属性配置,action属性,通配符,action接受参数(二)

 
阅读更多

尊重原创,文章出处:http://blog.csdn.net/chunlei_zhang/article/details/16369439

一、如果我们在Struts.xml中配置了studentadd和studentdelete等多个前面都是student后面是动作的action,并且各自调用动作名的方法,我们就可以使用通配符来配置action,如Struts.xml的配置如下:

<package name="default" extends="struts-default" namespace="/">
		<action name="studentadd" class="com.thridProject.action.StudentAddAction" method ="add">
			<result type="dispatcher" name="success">/studentadd.jsp</result>
		</action>
		<action name ="studentdelete" class="com.thridProject.action.StudentDeleteAction" method="delete">
			<result name="success">/studentdelete.jsp</result>
		</action>
	</package>

等价于:

<package name="default" extends="struts-default" namespace="/">
		<action name="student*" class="com.thridProject.action.StudentAction" method ="{1}">
			<result type="dispatcher" name="success">/student{1}.jsp</result>
		</action>
	</package>
其中StudentAction类中含有add和delete方法。后面的{1}代表前面第几个*号,同样的action也可以使用
class="com.thridProject.action.Student{1}Action"

二、在action中接受参数有三种方式

1)第一种方式:如:url:http://localhost:8080/ThridProject/hello?username=zhang&password=123

或者使用form表单进行提交:

这个时候的Struts.xml的配置为:

<package name="default" extends="struts-default" namespace="/">
		<action name="hello" class="com.thridProject.action.HelloAction" method="add">
			<result type="dispatcher" name="success">/hello.jsp</result>
		</action>
	</package>
	

HelloAction的类的第一种实现代码如下:

package com.thridProject.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport {
	
	/**
	 * author 张春蕾 2013-11-17
	 */
	private static final long serialVersionUID = 1L;
	
    private String username;
    private String password;
    
    public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	
	public String add(){
		System.out.println("username = "+username);
		System.out.println("password = "+password);
		return "success";
	}
}
输出结果为:

username = zhang
password = 123
2)第二种方式使用ThemainModel的形式,因为提交的参数肯定会封装成一个对象,然后对数据库进行访问。

url:http://localhost:8080/ThridProject/hello?user.username=zhang&user.password=123(注意变化的地方)

这种方法,model可以自己new出来,也可以通过传参来被struts自己实现,但是如果是通过传参,必须保证model有空的构造方法,否则会传参失败。(注意点)

这个时候struts.xml的配置不变,而java的后台实现需要加入model层,从action层方位model层的代码:

HelloAction的实现源码:

package com.thridProject.action;

import com.opensymphony.xwork2.ActionSupport;
import com.thridProject.model.User;

public class HelloAction extends ActionSupport {
	
	/**
	 * author 张春蕾 2013-11-17
	 */
	private static final long serialVersionUID = 1L;
	
	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String add(){
		System.out.println("username = "+user.getUsername());
		System.out.println("password = "+user.getPassword());
		return "success";
	}
}
model层的实现源码:

package com.thridProject.model;
/**
 * author 张春蕾 2013年11-17
 */
public class User {
	
	private String username;
	private String password;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
}

3)第三种方式是使用modelDriven的形式。通过继承ModelDriven的接口实现ModelDriven的getModel方法。而且不用使用set和get方法,可以自己进行new出来。


一般最常用的是使用第二种,使用DTO的形式。

三、include来包含其他的xml配置,可以实现多个人开发,开发完成后将struts.xml的配置包含进来即可。

<include file="XX.xml"/>

四、default-action-ref的配置

<package name="default" extends="struts-default" namespace="/">
	   <default-action-ref name="hello"></default-action-ref>
		<action name="hello" class="com.thridProject.action.HelloAction">
			<result name="success">/hello.jsp</result>
		</action>
	</package>

这是默认action引用,如果别人访问这个namespace的时候,如果找不到action,则会使用默认的action。

但是default-action-ref存在bug,不会执行后面的class,这个时候我们可以使用web.xml的配置完成这个bug

分享到:
评论

相关推荐

    struts2+spring+hibernate整合示例

    b 在struts.xml中添加action,使用通配符的方式 , 注意这里和单独struts2不同的地方: class属性指向的是bean 的 id ,这里我们配置bean采用spring ioc注解的方式, 所以默认的bean的id 为 类名(首字母小写) ...

    struts2利用通配符调用同一个Action里面不同的方法

    struts2利用通配符调用同一个Action里面不同的方法,在struts.xml配置文件中将请求方法的不相同部分抽象成“*".

    Struts2入门教程(全新完整版)

    4.二级联动 42 5.其它表单标签 44 6.其它常用标签的使用(代码参名为“补充”的文件夹下的tag.jsp) 45 七、国际化 47 1.action级别下的国际化 47 2.配置package的资源文件 48 3.app级别的资源文件 48 4.使用资源...

    struts2 详解文档

    基于XML配置方式实现对action的所有方法进行校验 基于XML配置方式实现对指定action方法校验 配置国际化全局资源文件、输出国际化信息 输出带有占位符的国际化信息 配置包范围国际化资源文件 配置Action范围国际...

    Struts2_入门篇_基本配置_通配符_参数注入_内置对象获取等。。。

    此文件可直接导入测试使用,供初学struts2的朋友借鉴,包含struts2类中获得内置对象,注入form表单参数,struts2的基本XML配置等等...

    Struts2 in action中文版

    10.2.1 使用ActionClass-validations.xml声明验证元数据 223 10.2.2 研究内建的验证器 226 10.3 编写自定义验证器 227 10.3.1 检查密码强度的自定义验证器 227 10.3.2 使用自定义数据验证器 229 10.4 验证框架的高级...

    java命名规范 开发规范

    b. 配置struts-moduleName.xml; 直接跳转示例; 调用Service示例; c. 开发对应的{EntityName}Action类; 该类必须继承com.hikvision.swdf.xx.BaseAction&lt;{EntityName}&gt;,该Action类有一个关键属性entity,即泛型...

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

    WEB-INF下的applicationContext.xml为Spring的配置文件,struts-config.xml为Struts的配置文件,file-upload.jsp为文件上传页面,file-list.jsp为文件列表页面。  本文后面的章节将从数据持久层->业务层->Web层的...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 2.5.1 部署描述文件和Struts配置文件 27 2.5.2 动作类 28 2.5.3 运行app02a程序 29 2.6 依赖注入 29 2.6.1 概述 29 2.6.2 依赖...

    深入浅出Struts2(附源码)

    2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 2.5.1 部署描述文件和Struts配置文件 27 2.5.2 动作类 28 2.5.3 运行app02a程序 29 2.6 依赖注入 29 2.6.1 概述 29 ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密Struts2高级技术 9.1 本章学习任务 9.1.1 本章知识体系 9.1.2 实例开发任务 9.2 OGNL表达式语言 9.2.1 认识OGNL 9.2.2 Struts2框架中的OGNL ...

    J2EE应用开发详解

    118 8.3.5 Struts2配置文件 119 8.4 Action的配置方式 121 8.4.1 动态方法调用 121 8.4.2 设置action元素的method属性 122 8.4.3 使用通配符配置action 122 8.4.4 默认action 123 8.5 拦截器Interceptor 123 8.5.1 ...

Global site tag (gtag.js) - Google Analytics