在前面已经讲解了通过在action中直接通过jsp的参数和ModelDiver的方式获得浏览器传递的参数,下面我们介绍第三种方式,也是在项目开发中推荐的方式
action不需要在实现ModelDriver接口
我们来看下程序的代码
建立Bean对象
package com.weiyuan.test; 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; } }
然后在我们的action对象中提供一个bean对象的实体,需要实现bean对象的get和set方法
代码如下
package com.weiyuan.test; import com.opensymphony.xwork2.ModelDriven; /** * struct2的action可以不继承任何框架的接口 * 1、默认调用的是execute()方法 * */ public class LoginAction { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute() throws Exception{ System.out.println("execute is called"); if("admin".equals(user.getUsername())&&"admin".equals(user.getPassword())){ return "success"; }else{ return "error"; } } }
接下来还需要修改jsp对象的代码
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="login.action"> 用户:<input type="text" name= "user.username"><br> 密码 :<input type="text" name="user.password"><br> <input type="submit" value=" 登陆"> </form> </body> </html>
其中: name= "user.username">中的user必须和action中的 private User user一一对应,username必须和实体对象User中的属性一一对应起来