Struts2属性驱动与模型驱动

 

  • 属性驱动

使用属性来封装来回请求参数和处理结果,即在jsp页面的每一个form中的name都对应在action中有一个属性与之对属性驱动的action类中需要写对应的set和get方法应。

      

 

Web.Xml略

创建实体类

package com.entity;

 

public class User {

   private String id;

   private String name;

   private String sex;

   private String email;

 

get  set方法略

 

Action类

public class RegiterAction {

   private User user;

   public String register()

   {

      System.out.println(user);

      return "success";

   }

   public void setUser(User user) {

      this.user = user;

   }

   public User getUser() {

      return user;

   }

}

Struts.xml配置

<struts>

   <package name="registerdemo" namespace="/" extends="struts-default">

  

      <action name="register" class="com.action.RegiterAction" method="register">

         <result name="success">/show.jsp</result>

      </action>

   </package>

</struts>

Jsp页面

<form action="register.action" method="post">

      用户名:<input type="text" name="user.id"><br/>

      :<input type="text" name="user.name" ><br/>

      :<input type="radio" name="user.sex" value="" >&nbsp;&nbsp;&nbsp;

      <input type="radio" name="user.sex" value="" ><br/>

      :<input type="email" name="user.email" ><br/>

      <input type="submit"  value="注册">

   </form>

Show.jsp略。

 

写到这里就完成了。

运行tomcat的是时候出现了一个错误

13:21:23.451 [localhost-startStop-1] ERROR org.apache.struts2.dispatcher.Dispatcher - Dispatcher initialization failed

com.opensymphony.xwork2.config.ConfigurationException: Unable to load configuration.

 

配置文件没有加载,查了好久发现是<action>里面的class的包名+类名写多了一个s导致找不到action对应的java类。Extends写错也会出现这样的错误。为了防止这样的错误最好不要去手写,直接找到对应java类复制类名,把路径的/换成 . 就OK了

这样操作就不会有写错的情况了。

改正后tomcat正常启动测试结果也正常

  • 模型驱动

模型驱动:使用的Action对象需要实现ModelDriven接口并给定所需要的类型.而在Action中我们只需要定义一个封装所有数据信息的javabean

Action类

//使用模型驱动的action必须要实现modeldriven接口

public class RegiterModelAction implements ModelDriven<User>{

   //创建封装请求参数的模型

   private User user=new User();

   //处理用户请求的方法

   public String register() {

     

      return "success";

   }

   //实现ModelDriven接口必须要实现的方法

   public User getModel() {

     

      return user;

   }

  

   public User getUser() {

      return user;

   }

   public void setUser(User user) {

      this.user = user;

   }

  

}

Struts配置

<action name="registerModel" class="com.action.RegiterModelAction" method="register">

            <result name="success">/show.jsp</result>

      </action>

测试结果同上

猜你喜欢

转载自blog.csdn.net/u012777599/article/details/88846607