如果使用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>
输入:
提交:
得到正确的结果