Struts2---action-基于注解

package com.tjcyjd.web.action;

import org.apache.struts2.convention.annotation.Action;

import org.apache.struts2.convention.annotation.ExceptionMapping;

import org.apache.struts2.convention.annotation.ExceptionMappings;

import org.apache.struts2.convention.annotation.Namespace;

import org.apache.struts2.convention.annotation.ParentPackage;

import org.apache.struts2.convention.annotation.Result;

import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Struts2基于注解的Action配置 接下来看这个类和里边的注解的逻辑
 * action必须在package中定义,所以action之前定义了package相关,每一个的含义自己参悟,如果不理解说明你对基于xml的配置还不是很熟悉
 * 类之前还定义了result和exception
 * ,这表示的是全局的result和exception,作用于指定包之下的所有action,并且也可以发现在类之中定义了多个action
 * 
 * action为什么定义在了对应的方法上呢?action定义在哪个方法之上那么这个方法就是这个action调用的方法,
 * xml中在定义action的时候默认是调用execute方法,
 * 但也提供了指定执行方法的属性,这里定义在对应的方法上就是这个作用;在login这个action中没有定义result
 * ,因为在类之前定义了全局result,所以这里可以不定义
 * 
 * 也可以在类之前定义action,这样的话如果在注解中不指定调用方法的话就需要在类中重写execute方法,原因自己脑补。
 */

@ParentPackage("struts-default")
@Namespace("/annotation_test")
@Results({ @Result(name = "success", location = "/main.jsp"),
		@Result(name = "error", location = "/error.jsp") })
@ExceptionMappings({ @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") })
public class LoginAction extends ActionSupport {
	private static final long serialVersionUID = 2730268055700929183L;
	private String loginName;
	private String password;

	@Action("login")
	// 或者写成 @Action(value = "login")
	public String login() throws Exception {
		if ("yjd".equals(loginName) && "yjd".equals(password)) {
			return SUCCESS;
		} else {
			return ERROR;
		}
	}

	@Action(value = "add", results = { @Result(name = "success", location = "/index.jsp") })
	public String add() throws Exception {
		return SUCCESS;
	}

	public String getLoginName() {
		return loginName;
	}

	public void setLoginName(String loginName) {
		this.loginName = loginName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}
/*
 * Namespace:指定命名空间。
 * 
 * ParentPackage:指定父包。
 * 
 * Result:提供了Action结果的映射。(一个结果的映射)
 * 
 * Results:“Result”注解列表
 * 
 * ResultPath:指定结果页面的基路径。
 * 
 * Action:指定Action的访问URL。
 * 
 * Actions:“Action”注解列表。
 * 
 * ExceptionMapping:指定异常映射。(映射一个声明异常)
 * 
 * ExceptionMappings:一级声明异常的数组。
 * 
 * InterceptorRef:拦截器引用。
 * 
 * InterceptorRefs:拦截器引用组。
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值