Struts2简单理解Action

导读:本篇文章讲解 Struts2简单理解Action,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

认识Action对象

   Action对象是Struts2框架的重要对象,主要用于对HTTP请求进行处理。在Struts2API中,Action对象是一个接口,主要位于xwork2包中(2.5版本以后并入到Struts2-core包中)

在Action接口中,包含5个静态的成员变量,它们是Struts2API为处结果定义的静态变量

  SUCCESS:代表Action执行成功的返回值,如果Action执行成功,需要返回到成功页面,就可以将返回值设置为SUCCESS。

  NONE:代表Action执行成功返回值,但不需要返回到成功页面。

  ERROR:代表Action执行失败返回值。

  INPUT:代表需要返回到某个输入信息页面的返回值。如验证错误以后需要返回错误信息在页面就可以设置为INPUT

  LOGIN:代表需要用户登录的返回值。

 

动态Action

想达到动态调用的目的方法有三种:

  1. actionName!methodName
  2. 指定method属性
  3. 使用通配符

actionName!methodName使用

如在配置文件中配置RegistAction,则action请求其中的add(方法的格式如下)

    <form action="RegistAction!add">
    	用户名:<input type="text" name="username"><br>
    	密码  :<input type="password" name="pwd"><br>
        <input type="submit" value="注册">
    </form>

 

重点学会*通配符使用   注意:在struts2的2.5版本以上使用*通配符需要加上

<gloal-allowed-methods>regex:.*</global-allowedd-methods>

也就是使用*号来代替一个或多个匹配字符串,然后在class,method以及result中使用{n}来代表匹配字符(n表示第n个匹配的字符串)

使用*动态设置method

<action name="*_Action" class="com.demo.{1}Action" method="{1}">
    <result>{1}_success.jsp</result>
</action>

当请求为login_Action的时候,如上的{1}就等于“login”,也就是说调用com.demo.loginAction类中的login方法

请求成功的话跳转为login_success.jsp页面

 

Struts2接收参数的四种方式

  1. 使用action的属性
package com.cszy.action;

import org.apache.commons.lang3.StringUtils;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
	//1.接收用户名和密码
	private String username;
	private String pwd;
	
	
	
	public String getUsername() {
		return username;
	}



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



	public String getPwd() {
		return pwd;
	}



	public void setPwd(String pwd) {
		this.pwd = pwd;
	}



	public String login() throws Exception {
		System.out.println(username + "-->" + pwd);
		return NONE;
	}

}

     2. 使用DomainModel(域模型)

     3. 使用ModelDriver接口【实现接口,手动初始化new实体类对象,调用getModel()方法,方法返回值:return 实体类对象】

package com.lanou.Action;

import java.util.Map;

import com.lanou.entity.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class UserAction extends ActionSupport implements ModelDriven<User>{
//	解耦方式
//	Map<String, Object> request = (Map)ActionContext.getContext().get("request");
	
	//自动注入
	private String username;	//用户名
	private String password;	//密码
	private String age;			//年龄
	private User user = new User();
	
	@Override
	public User getModel() {	//使用驱动模型ModelDriven
		return this.user;
	}
	
	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 getAge() {
		return age;
	}
	
	public void setAge(String age) {
		this.age = age;
	}
	
	public User getUser() {
		return user;
	}

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

	public String jsp_reg(){
		System.out.println("我是注册页面");
		return "jsp_reg";
	}
	
	public String jsp_login(){
		System.out.println("我是登录页面");
		return "jsp_login";
	}
	
	public String user_login(){
		System.out.println("*************************\n" + "用户名:" + user.getUsername());
		System.out.println("密码:" + user.getPassword() + "\n*************************");
		System.out.println("登录成功");
		return "login_success";
	}
	
	public String user_reg(){
		System.out.println(user.toString());
		System.out.println("*************************\n" + "用户名:" + user.getUsername());
		System.out.println("密码:" + user.getPassword());
		System.out.println("年龄:" + user.getAge() + "\n*************************");
		System.out.println("注册成功");
		return "reg_success";
	}

}

     4. 使用常规的getParameter(与ServletAPI耦合,不提倡)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15244.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!