Struts2的简单使用(二)页面向action传值

来源:互联网 发布:网络教育取消学籍 编辑:程序博客网 时间:2024/05/16 11:08

在这里我要写一下在action中如何接受页面传过来的参数~

有三种方式:

1.同名参数

例如:
     通过页面要把id=1 name=tom age=20这三个参数传给action
     1.action里面定义三个成员变量id name age,这个三个变量的名字一定要和所传变量的名字一致.
     2.提供get/set方法
     3.将来页面把这三个参数传过来的时候,struts2框架会自动的帮我们把这个三个参数值放action中的三个属性里面.(同时还做了类型的转换)

代码如下:

UserAction类:

public class UserAction {private String name;private String password;private Integer age;private Boolean gender;public String toRegister(){System.out.println("跳转到注册页面");return "register";}public String register(){System.out.println("name:"+name+" "+"password:"+password+" "+"age:"+age+" "+"gender:"+gender);return "login";}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Boolean getGender() {return gender;}public void setGender(Boolean gender) {this.gender = gender;}}
配置文件struts.xml:

<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="true" />    <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">        <!-- user!toLogin.action --><action name="user"    class="com.xu.struts2.web.action.UserAction">    <result name="login">/WEB-INF/jsp/login.jsp</result><result name="register">/WEB-INF/jsp/register.jsp</result><result name="index">/WEB-INF/jsp/index.jsp</result></action>    </package>    <!-- <include file="example.xml"/> --></struts>
register.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=UTF-8"><title>注册页面</title></head><body>     <h3>注册页面</h3>     <hr>   <form action="user!register.action">            用户名:<input type="text" name="name"/><br>            密码:<input type="password" name="password"/><br>            确认密码:<input type="password" name="repassword"/><br>            性别:<input type="radio" name="gender" value="true" checked="checked">男            <input type="radio" name="gender" value="false">女            <br>            年龄:<select name="age">              <option value="">请选择</option><%for(int i=10;i<=30;i++){%><option value="<%=i %>"><%=i %>周岁</option><%}%>            </select>            <br>            <input type="submit" value="注册">     </form>  </body></html>
login.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=UTF-8"><title>登录页面</title></head><body>     <h3>登录页面</h3>     <hr>     <form action="LoginServlet">        用户名:<input type="text" name="name"/><br>        密码:<input type="password" name="password"/><br>        <input type="submit" value="登录">     </form></body></html>
效果图:



2.域模型

在接收到页面传值的时候,还可以让struts2框架直接帮我们把这些接收到的值封装到一个javabean对象里面.

    1.action中定义一个User类型的变量user,User类中有三属性值,id name age,同时User类中还有get/set方法
     2.action中给这个user属性提供get/set方法
     将来接收到这个参数值以后,struts2框架会帮我们去创建一个User对象,并且把所传参数的三个值封装到对象的三个属性里面,最后把这个封装好的对象放到action的user属性中

只需要改变一下UserAction类的代码:

public class UserAction {//域模型private User user;public String toRegister(){System.out.println("跳转到注册页面");return "register";}public String register(){//接收参数User user=new User(null, name, age, gender, password);System.out.println(user);return "login";}public User getUser() {return user;}public void setUser(User user) {this.user = user;}}
别的都不要改变~

效果图如下:



3.模型驱动

1.所属的Action需要实现ModelDriven接口,并且给定类型和实现接口中的getModel方法

2.需要一个封装所有属性的javabean(对应 1.中的给给定类型)

重新建了个类TestAction:

public class TestAction extends ActionSupport implements ModelDriven<User>{private static final long serialVersionUID = 1L;        private User user=new User();//这里一定要实例化,否则会为空@Overridepublic String execute(){// TODO Auto-generated method stubreturn "register";}public String register(){System.out.println("register:"+user);return "login";}//获取数据模型--modle--MVC@Overridepublic User getModel() {// TODO Auto-generated method stubreturn user;}}
struts.xml:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="true" />    <constant name="struts.devMode" value="true" />    <package name="default" namespace="/" extends="struts-default">        <!-- user!toLogin.action --><action name="user"    class="com.xu.struts2.web.action.UserAction">    <result name="login">/WEB-INF/jsp/login.jsp</result><result name="register">/WEB-INF/jsp/register.jsp</result><result name="index">/WEB-INF/jsp/index.jsp</result></action><!-- test.action --><action name="test"    class="com.xu.struts2.web.action.TestAction">    <result name="success">/WEB-INF/jsp/index.jsp</result>    <result name="login">/WEB-INF/jsp/login.jsp</result><result name="register">/WEB-INF/jsp/register.jsp</result></action>    </package>    <!-- <include file="example.xml"/> --></struts>
效果图如下:





0 0
原创粉丝点击