jsp:setProperty用来设置已经实例化的Bean对象的属性
第一种形式:
<jps:setProperty name = "JavaBean实例名" property = "*"/>
该形式是设置Bean 属性的快捷方式.在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。
property = “*”表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
第二种形式:
使用request对象中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean 的属性名,而且Bean 属性和request参数的名字应相同。也就是说,如果在Bean 中有setUserName(String userName)方法,那么,propertyName的值就是”userName”.这种形式灵活性较强,可以有选择的对Bean中的属性赋值
第三种形式:
<jsp:setProperty name = "JavaBean实例名" property = "JavaBean属性名" value = "BeanValue"/>
value用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如“true”)通过Boolean.valueOf转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf转换。
第四种形式:
property = "propertyName" param = "request对象中的参数名"
/>
param指定用哪个请求参数作为Bean属性的值。Bean 属性和request参数的名字可以不同。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
<%@ 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>userBean</title>
</head>
<body>
<form action="">
请输入圆的半径:<input type="text" name="r">
<input type="submit" value="计算">
</form>
<%-- <%
//参数radius是表单中传过来的 表单输入的值都是string类型 转换为double类型 传给Bean类中对应的属性
String radius = request.getParameter("radius");
double r = 0.0;
if (radius != null && radius.length() != 0) {
r = Double.parseDouble(radius);
}
%> --%>
<jsp:useBean id="c" class="com.spring.Circle.Circle" scope="request">
</jsp:useBean>
<jsp:setProperty property="*" name="c"/>
<%-- 值value 是JavaBean中属性的值 将bean中radius属性值设置为输入的值
<jsp:setProperty property="radius" name="c" value="<%=r %>"/> --%>
<%--参数param 是表单请求中传过来的--%>
<%-- <jsp:setProperty property="r" name="c" param="radius" /> --%>
圆的周长:<jsp:getProperty property="length" name="c" />
圆的面积:<jsp:getProperty property="area" name="c" />
</body>
</html>