Struts2学习笔记之参数的传递与获取(四)

Struts2学习笔记之参数的传递与获取(四)

 基于上一篇博客做了一下的修改。

 

Struts2中传递参数和方法

 

      基本属性:

     

package com.mscncn.struts.ch01.web;

import com.mscncn.struts.ch01.entity.User;

public class HelloWorldAction {
	private String realName;
	private User user;
	public String execute(){
		System.out.println("realName:"+realName+","+user);
		return "ok";
	}
	public String getRealName() {
		System.out.println("获取realName");
		return realName;
	}
	public void setRealName(String realName) {
		System.out.println("注入realName");
		this.realName = realName;
	}
	public User getUser() {
		System.out.println("获取User");
		return user;
	}
	public void setUser(User user) {
		System.out.println("注入User");
		this.user = user;
	}
}

 

  上面代码中得realName 是HelloWorldAction中的一个普通属性,传入参数,就需要我们为realName提供一个setter方法:

public void setUser(User user) {
		System.out.println("注入User");
		this.user = user;
}

 那么realName 可以直接接收页面表单元素name=realName 的value值。

 

 域类型:

 上面代码的user就是一个域模型,那么 我们想要给与模型传入值,也需要对应的setter方法

 注意: 传入值需要setter方法,获取值需要getter方法

package com.mscncn.struts.ch01.entity;

public class User {
	private String userName;
	private String password;
	public String getUserName() {
		System.out.println("获取user.userName");
		return userName;
	}
	public void setUserName(String userName) {
		System.out.println("设置user.userName");
		this.userName = userName;
	}
	public String getPassword() {
		System.out.println("获取user.password");
		return password;
	}
	public void setPassword(String password) {
		System.out.println("设置user.password");
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [userName=" + userName + ", password=" + password + "]";
	}
}

 

   如果传递给user模型,那么我们需要在form中的表单元素name=user.属性名  给user模型对应的属性设置值(在action中给user模型提供getter,setter方法)

 

 

 

 测试: 

   1. 发送请求: http://localhost:8080/struts-ch01/

   2. 进入index.jsp

<%@page contentType="text/html; charset=UTF-8"
	 pageEncoding="UTF-8" isELIgnored="false" %>
<!DOCTYPE>
<html>
<body>
	<form action="${pageContext.request.contextPath }/hello/sayHello" method="post">
		真实姓名:<input name="realName" /></br>
		账号:<input name="user.userName" /></br>
		密码<input type="password" name="user.password" /></br>
		<input type="submit"/>
	</form>
</body>
</html>

  3. 填写表达,提交表单

  4. 提交给action

package com.mscncn.struts.ch01.web;

import com.mscncn.struts.ch01.entity.User;

public class HelloWorldAction {
	private String realName;
	private User user;
	public String execute(){
		System.out.println("realName:"+realName+","+user);
		return "ok";
	}
	public String getRealName() {
		System.out.println("获取realName");
		return realName;
	}
	public void setRealName(String realName) {
		System.out.println("注入realName");
		this.realName = realName;
	}
	public User getUser() {
		System.out.println("获取User");
		return user;
	}
	public void setUser(User user) {
		System.out.println("注入User");
		this.user = user;
	}
}

 

  struts.xml配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<!-- 
		配置需要体现2点内容
		1. 请求对应哪个Action类及其方法
		2. 请求转发到哪个页面
	 -->
	<package name="ch01" namespace="/hello" extends="struts-default">
		<!-- 请求的url与 两个配置参数相关
			1. package 的namespace的参数
			2. action 的name
			以此为例 http://localhost:8080/struts-ch01/hello/sayHello
			package的namespace 是项目后面的路径
			
		 -->
		<action name="sayHello" 
			class="com.mscncn.struts.ch01.web.HelloWorldAction"
			method="execute">
				<result name="ok">
					/hello.jsp
				</result>
		</action>
	</package>
</struts>

 

5. 处理结束后,转发给result对应的视图hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<h1>Hello Struts2</h1>
		真实姓名:${realName }<br/>
		账号:${user.userName }<br/>
		密码:${user.password }<br/>
</body>
</html>

 

   注意,在Action中得属性我们可以直接在页面是使用,如果属性是基本类型可以直接使用el表达式 ${realName}来获取Action中realName的值,如果想要获取user中的属性

  可以使用${user.属性名}来获取user模型对象对应的属性值。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值