JSP中JavaBean设置通过表单设置bean相应属性的值(setProperty)的注意事项

如果使用HTTP表单的参数的值来设置bean中相对应的属性的值可以使用如下setProperty标记:

<jsp: setProperty name = "bean的id" property="*"/>

使用上述标记设置bean的属性值,要求bean的"属性名"和表单中所对应的"参数名"相同(注意:大小写也要相同),该标记不再具体指定beans属性的值对应表单中哪个参数指定的值,系统会自动根据名字进行匹配对应。

下面以身试法:

JSP页面通过表单输入三角形的三边的长度并提交给页面,表单提交后,JSP页面将计算三角形面积的任务交给一个bean去完成

1.三角形bean

Triangle.java

package tom;


public class Triangle {
		double sideA,sideB,sideC;//注意是三边是小写s开头
		double area;
		boolean isTriangle;



		public double getSideA() {
			return sideA;
		}
		public void setSideA(double newSideA) {
			sideA = newSideA;
		}
		public double getSideB() {
			return sideB;
		}
		public void setSideB(double newSideB) {
			sideB = newSideB;
		}
		public double getSideC() {
			return sideC;
		}
		public void setSideC(double newSideC) {
			sideC = newSideC;
		}
		public double getArea() {
			double p = (sideA+sideB+sideC)/2.0;
			area = Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));
			return area;
		}
		public boolean isTriangle() {
			if(sideA<sideB+sideC&&sideB<sideA+sideC&&sideC<sideB+sideA)
				isTriangle = true;
			else
				isTriangle = false;
				
			return isTriangle;
		}
		
}

JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <jsp:useBean id="triangle" class = "tom.Triangle" scope = "page"></jsp:useBean>
<!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>Insert title here</title>
</head>
<body>
		<form action="" method = "post">
		<p>输入三角形的边A:<input type = "text" name = "SideA" > <!-- 注意这里的参数名开头都是大写S,而bean中三边属性是小写s -->
			<p>输入三角形的边B:<input type = "text" name = "SideB" > 
				<p>输入三角形的边C:<input type = "text" name = "SideC"> 
		<input type = submit value = "提交">
		</form>
		<p>你给出的三边是:
		<jsp:setProperty property="*" name="triangle"/>
		<br>边A是:<jsp:getProperty property="sideA" name="triangle"/>
		<br>边B是:<jsp:getProperty property="sideB" name="triangle"/>
		<br>边C是:<jsp:getProperty property="sideC" name="triangle"/>
		<P>这三边能构成一个三角形吗?
		<jsp:getProperty property="triangle" name="triangle"/>
		<p>面积是:<jsp:getProperty property="area" name="triangle"/>
</body>
</html>

运行结果截图:

输入数据:


提交:

提交后可以看到下图结果,jsp页面没有取到bean中属性的值,这是因为上述使用表单中三边的参数名是SideA,SideB,SideC,而bean中三边属性是sideA,sideB,sideC。


修改jsp页面中表单中三边的参数名,使其与bean中大小写一致,即:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <jsp:useBean id="triangle" class = "tom.Triangle" scope = "page"></jsp:useBean>
<!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>Insert title here</title>
</head>
<body>
		<form action="" method = "post">
		<p>输入三角形的边A:<input type = "text" name = "sideA" > <!-- 表单中三边的参数名,使其与bean中大小写一致 -->
			<p>输入三角形的边B:<input type = "text" name = "sideB" > 
				<p>输入三角形的边C:<input type = "text" name = "sideC"> 
		<input type = submit value = "提交">
		</form>
		<p>你给出的三边是:
		<jsp:setProperty property="*" name="triangle"/>
		<br>边A是:<jsp:getProperty property="sideA" name="triangle"/>
		<br>边B是:<jsp:getProperty property="sideB" name="triangle"/>
		<br>边C是:<jsp:getProperty property="sideC" name="triangle"/>
		<P>这三边能构成一个三角形吗?
		<jsp:getProperty property="triangle" name="triangle"/>
		<p>面积是:<jsp:getProperty property="area" name="triangle"/>
</body>
</html>
输入:


提交:

得到正确的结果



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值