JavaBean与表单

在JavaBean语法中,实际上最大的特点就在于与表单的交互上,读者可以回顾一下:如果按照之前的做法,有一个表单提交了内容给JSP,JSP中如果要是想进行接收的话,则需要通过request,分别进行接收,并设置到JavaBean对应的属性里。

方法一:【input_bean1.jsp的内容如下:】

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="com.skewrain.demo.*"%>
<html>
<head><title>javabean</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>
 
【input_bean.htm的内容如下:】
<html>
<head><title>javabean</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>

执行此代码的结果如下:

java 提交表单双击 javabean与表单交互_JavaBean与表单

“提交”之后的结果为:

java 提交表单双击 javabean与表单交互_JavaBean与表单_02

此时,按照最原始的手工方式定义javabean的对象,之后使用request接收所有的参数。

这是第一种做法,全部由用户手工完成,但是现在也可以有第二种做法,通过标签完成。

Input_bean.htm内容不变。【input_bean2.jsp内容如下:】
<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>javabean</title></head>
<body>
<%   request.setCharacterEncoding("GBK");  %>
    <jsp:useBean id="simple" scope="page"
    class="com.skewrain.demo.SimpleBean"/>
    <jsp:setProperty name="simple" property="*"/>
    <h3>姓名:<%=simple.getName()%></h3>
    <h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

执行此程序的结果如下:

java 提交表单双击 javabean与表单交互_JavaBean与表单_03

“提交”之后的结果为:

java 提交表单双击 javabean与表单交互_表单_04

    通过一个<jsp:setProperty>标签就可以完成所有请求参数的自动配置,而且可以自动将输入的String型变为int型的数据,这个标签的语法如下:

<jsp:setProperty>:表示操作指定JavaBean中的属性,里面定义了两个属性:

        1):name:表示的是使用JavaBean中的id的定义;

如果为“*”则表示自动匹配,与表单相匹配。

如果要想让表单的参数可以自动设置到JavaBean之中的话,那么就需要让参数的名称与属性一致,但是这种说法并不明确,因为在这之中还包含了一个概念。

在编写简单Java类的时候一直强调,类中的属性必须封装,封装之后的属性需要按照指定的格式编写对应的setter、getter方法。

使用这种操作,实际上最终调用的是JavaBean中的setter方法,而setter方法又有严格的命名要求,所以可以简单的理解为要想设置,则参数名称必须与属性名称一致,否则无法完成设置。

当然,这种操作的原理依然是反射机制,通过反射,可以将指定属性名称的setter方法进行调用。

但是,这种操作本身存在一个问题,即:如果要输入的内容是int型的话,则必须输入的是数字,否则会出现问题。

JavaBean的优点必须结合表单才可以体现出来。

小结:

1):通过JavaBean可以自动完成参数的设置问题;

2):完成的原理依靠的是反射机制。