- 属性驱动
使用属性来封装来回请求参数和处理结果,即在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="男" >男 <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> |
测试结果同上