样例:
输入表单:
<html>
<head><title>欢迎来到望星空</title></head>
<body>
<form action="input_bean.jsp" method="post">
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
</body>
</html>
接收内容1:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="blog.csdn.joywy.SimpleBean"%>
<html>
<head><title>欢迎来到望星空</title></head>
<body>
<%
request.setCharacterEncoding("GBK");
SimpleBean simple = new SimpleBean();
simple.setName(request.getParameter("name"));
simple.setAge(Integer.parseInt(request.getParameter("age")));
%>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>
接收内容2:
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>欢迎来到望星空</title></head>
<body>
<% request.setCharacterEncoding("GBK"); %>
<jsp:useBean id="simple" scope="page" class="blog.csdn.joywy.SimpleBean"/>
<jsp:setProperty name="simple" property="*"/>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>
比起分别设置属性的内容方便多了,而且可以自动将String类型的数据变为int类型的数据,并自动设置到age属性中。
<jsp:setProperty>标签表示为JavaBean中的属性设置内容,其中一共有两个属性。
1.name:对应着<jsp:useBean>中声明的id属性,表示使用指定的JavaBean。
2.property:表示要操作的属性,“*”表示自动匹配
在进行自动匹配时,实际上匹配的是参数名称(这里的参数名称是通过表单控件指定的)是否与属性的名称相符合,如果符合则会自动调用对应的setter进行内容的设置。在编写简单Java类的时候,类中的属性必须封装,封装之后的属性需要按照指定的格式编写对应的setter、getter方法。
注:
1.以上还是通过反射完成的操作。在反射机制中可以通过getMethod()方法取得一个指定名称方法的Method对象,在这里传入的是属性的名称,可以根据属性名称找到对应的setter()方法,完成属性内容的设置。
2.age的内容必须是数字,由于<jsp:setProperty>的操作中可以自动将输入的字符串变为int型的数据,所以此时输入的数据必须全部由数字组成,否则将出现"NumberFormatException"。