JavaBean--JavaBean与表单

SimpleBean.java:

package cn.mldn.lxh.demo ;
public class SimpleBean {
    private String name ;
    private int age ;
    /*
    public SimpleBean(){
        System.out.println("============ 一个新的实例化对象产生 ===========") ;
    }
    */
    public void setName(String name){
        System.out.println("----------------------") ;
        this.name = name ;
    }
    public void setAge(int age){
        System.out.println("**********************8") ;
        this.age = age ;
    }
    public String getName(){
        return this.name ;
    }
    public int getAge(){
        return this.age ;
    }
}

input_bean.html:

name,age和JavaBean里的名字一样

<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</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>

input_bean.jsp:

第一种方法:

原始方式手工定义JavaBean的对象,之后用request接收所有的参数

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="cn.mldn.lxh.demo.SimpleBean"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</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>

第二种方法,用标签完成

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%    request.setCharacterEncoding("GBK") ;    %>
<jsp:useBean id="simple" scope="page" class="cn.mldn.lxh.demo.SimpleBean"/>
<jsp:setProperty name="simple" property="*"/>
<h3>姓名:<%=simple.getName()%></h3>
<h3>年龄:<%=simple.getAge()%></h3>
</body>
</html>

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

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

name:表示使用JavaBean中的id的定义

property:表示设置里面的属性内容,如 *, 表示与表单相匹配。

如果把input_bean.htm里的name改成name1,则name将不能被自动设置。

如果想让表单的参数可以设置到JavaBean中的话,需要让参数的名称与属性一致,但是还有一个概念。

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

使用这种操作,最终调用的是JavaBean中的setter方法,setter方法有严格的命名要求,所以要求参数名称与属性名称一致。

这种操作原理依然是反射机制,在java开发经典中一直强调通过反射,将指定属性名称的setter方法进行调用。

这种操作有个问题,如果要输入的内容是int型的话,则必须输入数字,否则会出现问题。

总结:

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

2. 完成的原理依靠的是反射机制

原文地址:https://www.cnblogs.com/wujixing/p/4953848.html