struts2—处理结果类型

struts2的处理流程

用户请求→struts2框架→控制器→struts2框架→视图资源

<result>/success.jsp</result>
当result中的name值默认为success。

INPUT   action的执行需要前端获得参数,INPUT代表这个参数传递的页面,对一些参数进行验证,验证不通过时,返回INPUT页面。

验证第一种情况,参数的类型错误。这是一个user类

public class User {
	
	private String username;
	private String password;
	private List<User> userlist;
	private int age;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public List<User> getUserlist() {
		return userlist;
	}
	public void setUserlist(List<User> userlist) {
		this.userlist = userlist;
	}
	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;
	}

}
下面是对user的登入页面
<body>
    <form action="LoginAction.action" method="post">
    姓名:<input type="text" name="username"><s:fielderror name="username"></s:fielderror>
    密码:<input type="password" name="password"> 
     姓名1:<input type="text" name="userlist[0].username">
     姓名2:<input type="text" name="userlist[1].username">
     姓名3:<input type="text" name="userlist[2].username">
     年龄:<input type="text" name="age">
     <input type="submit" value="登入">
    </form>
  </body>
当我们在年龄处输入abc,发现页面发生跳转,依旧跳转到login页面视图。此时当我们查询路径时发现已经是loginaction.action,说明在此处input起了作用隔绝了不符合常规的字符。

第二种我们自定义拦截的规则

jsp页面不变,下面对loginaction.action的修改

public class LoginAction extends ActionSupport implements ModelDriven<User>{
	private User user=new User();//使用ModelDriven时必须初始化实例对象
	public String login(){
		//this.addFieldError(fieldName, errorMessage);当fielname不为空时,返回input
		
		/*if(user.getUsername()==null||"".equals(user.getUsername())){
			this.addFieldError("username", "用户名不能为空");
			return INPUT;
		}*/
//		此处和下面validate()方法重复只需留一个
		
		System.out.println(user.getUsername());
		System.out.println(user.getUserlist().get(0).getUsername());
		System.out.println(user.getUserlist().get(1).getUsername());
		System.out.println(user.getUserlist().get(2).getUsername());
		return SUCCESS;
	}
	
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}

	@Override
	public void validate() {
		if(user.getUsername()==null||"".equals(user.getUsername())){
			this.addFieldError("username", "用户名不能为空");
			
		}
	}
	
   
}
我们对第一个姓名加上自定义限制让它不能为空,为空时跳转input页面。

<result/>标签分局部和全部结果。

局部结果:作为<action/>的一个结果

全部结果:以下

<package name="   ">
    <global-results>
    <result name="   ">...</result>
    </global-results>
   </package>
param属性:
<result name="add">
     <param name="location">/${#request.path}.jsp</param>
     </result>
result中的type属性


比较重要的几个类型:
dispatcher  ——  请求转发到一个页面 (默认),不可以用这种方式转发到一个action
chain           ——  一个action请求转发至另一个 action
redirect       ——  响应重定向到一个页面
redirectAction       —— 一个action响应重定向至另一个 action
stream        ——  文件下载




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值