zoukankan      html  css  js  c++  java
  • struts Action设置数据的方法

    一.属性驱动

           注:示例中的实体类没有相应展示出来

      1.基本数据类型的属性

            基本数据类型的属性指每一个前台提交的属性在后台对应的Action类中都有相应的属性与之相对应

           例如:前台表单:       

    <form action="login" method="post">
    	<table>
    			<tr>
    				<td>用户名:</td>
    				<td><input type="text"  name="userName"></td>
    			</tr>
    			<tr>
    				<td>密码:</td>
    				<td><input type="password"  name="password"></td>
    			</tr>
    			<tr>
    				<td><input type="submit" value="登录"></td>
    			</tr>
    	</table>
    </form>
    

                   后台Action中设置对应参数:

           

    public class UserAction extends ActionSupport{
    	
    	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;
    	}
    
    	@Override
    	public String execute() throws Exception {
    		User user=new User();
    		UserService userService=new UserService();
    		user.setUserName(userName);
    		user.setPassword(password);
    		if(userService.login(user)){
    			return SUCCESS;
    		}
    		else return ERROR;		
    	}
    }
    

           这样前台的参数就能由strut2传到相应后台

      这种方式缺点:如果参数太多后台代码太繁琐

         2.javabean属性

       相对基本数据类型而言,javabean的前台表单只需要在name前面加上对象点,例如user.name,user.password

       例如:

    <form action="login" method="post">
    	<table>
    			<tr>
    				<td>用户名:</td>
    				<td><input type="text"  name="user.userName"></td>
    			</tr>
    			<tr>
    				<td>密码:</td>
    				<td><input type="password"  name="user.password"></td>
    			</tr>
    			<tr>
    				<td><input type="submit" value="登录"></td>
    			</tr>
    	</table>
    </form>
    

        这样在后台只需要提供一个bean的生成方式:

        Action中:

        

    public class UserAction2 extends ActionSupport{
    
    	private static final long serialVersionUID = 1L;
    	
    	private User user;
    	public User getUser() {
    		return user;
    	}
    	public void setUser(User user) {
    		this.user = user;
    	}
    	@Override
    	public String execute() throws Exception {
    		UserService userService=new UserService();
    		if(userService.login(user)){
    			return SUCCESS;
    		}
    		else return ERROR;
    	}
    }
    

        只需写一个User对象,后台就能自动获取

     看法:代码比较简洁明了,可以传入多个javabean的对象,只是前台写的时候需要注意对象名+点,如:user.password

    二.模型驱动

       模型驱动前面的表单属性就直接填name,但是要注意与实体中的属性相对应

    <form action="login" method="post">
    	<table>
    			<tr>
    				<td>用户名:</td>
    				<td><input type="text"  name="userName"></td>
    			</tr>
    			<tr>
    				<td>密码:</td>
    				<td><input type="password"  name="password"></td>
    			</tr>
    			<tr>
    				<td><input type="submit" value="登录"></td>
    			</tr>
    	</table>
    </form>
    

       后台的Action中必须继承ModelDriver<T>,T填具体的bean 

     

    public class UserAction3 extends ActionSupport implements ModelDriven<User>{
    	
    	private static final long serialVersionUID = 1L;
    	
    	private User user=new User();	
    
    	@Override
    	public String execute() throws Exception {
    		UserService userService=new UserService();		
    		if(userService.login(user)){
    			return SUCCESS;
    		}
    		else return ERROR;		
    	}
    	@Override
    	public User getModel() {
    		return user;
    	}
    }
    

           注意:这种模型驱动方式不会自动给你实例化bean,需要自己创建new  User();不然会报空指针异常

      观点: 模型驱动方式代码简介,前台也不用像javabean方式那样

          但是当前台传入不是单个bean的时候,不适合用模型驱动,

          因为必须继承ModelDriver<T>,泛型只有一种类型

         

        

             

  • 相关阅读:
    枚举进程中打开的句柄
    DuplicateHandle进程间句柄复制
    64位CreateProcess逆向:(二)0环下参数的整合即创建进程的整体流程
    通过SOCKS代理渗透整个内网
    为什么NtReadVirtualMemory 硬件断点无法下断
    在EXE和DLL中,FindResource的区别
    (转) MyBatis(1)——快速入门
    C# if为false仍然进入方法体,==和qeual结果不一致
    InstallShield卸载不彻底,残留大量dll文件
    WPF System.InvalidCastException: 无法将类型为“System.Windows.Media.Color”的对象强制转换为类型“System.Windows.Media.Brush”。
  • 原文地址:https://www.cnblogs.com/goxcheer/p/7403165.html
Copyright © 2011-2022 走看看