首页 > 开发 > JSP > 正文

JSP中Beans 与 Forms处理机制

2020-02-05 13:45:44
字体:
来源:转载
供稿:网友

   表单(forms)是在网站交互的一个很普通的方法。jsp使表单处理更加简单。在jsp中处理表单的标准方法是定义一个“bean”。这个“bean”不是一个完全的java bean。你只需在定义一个类使它有个区域,这个区域跟表单中的每一个区域相对应。这个类区域必须有“setters”来匹配表单区域的名字。举个例子,让我们修改一下前面教程的getname.html并且收集email地址和用户的年龄。具体代码修改如下:

<html>

<body>
<form method=post action="savename.jsp">

what's your name? <input type=text name=username size=20><br>

what's your e-mail address? <input type=text name=email size=20><br>

what's your age? <input type=text name=age size=4>

<p><input type=submit>

</form>

</body>

</html>

  为了收集数据,我们要定义一个java类,使它有“username”、“email”、“age”的区域,并且我们要提供“setter”方法“setusername”、“setemail”和“setage”。这个“setter”方法只是一个以“set”开始其后是区域名的一种方法。区域名字的第一个字母要用大写的。所以如果区域为“email”,它的“setter”方法就为“setemail”。同样的,“getter”方法也类似定义,它只不过是用“get”来代替“set”而已。并且要使得setters和getters必须为公共的(public)。例如:

public class userdata {

string username;

string email;

int age;

public void setusername( string value )

{

username = value;

}

public void setemail( string value )

{

email = value;

}

public void setage( int value )

{

age = value;

}

public string getusername() { return username; }

public string getemail() { return email; }

public int getage() { return age; }

}

  一旦你定义了这个类,再编译它,并且将它放置于网络服务器的类路径中。这个服务器同样要定义一个特殊的目录来放置bean类。如果你是使用blazix你可以将它们放置到“classes”目录中。如果你必须改变类路径并且服务器正在运行,那么网络服务器就必须停止并重新启动。

  下面我们来修改一下“savename.jsp”以使用bean来收集数据:

<jsp:usebean id="user" class="userdata" scope="session"/>


<jsp:setproperty name="user" property="*"/>

<html>

<body>

<a href="nextpage.jsp">continue</a>

</body>

</html>

  这里所有我们需要作的事情是增加一个jsp:usebean标志以及jsp:setproperty标志。这个usebean标志是在session中查找“userdata”的实例。如果实例被找到了,它就将更新旧的实例;如果实例没有被找到,它就将创建一个userdata新的实例(userdata的实例被称为bean),然后将它放置于session中。而setproperty标志会自动收集输入的数据,并匹配bean方法的名字,在将数据放置于bean中。

  下面修改nextpage.jsp以从bean取出数据:

<jsp:usebean id="user" class="userdata" scope="session"/>

<html>

<body>

you entered<br>

name: <%= user.getusername() %><br>

email: <%= user.getemail() %><br>
age: <%= user.getage() %><br>
</body>
</html>

  这里要注意usebean标签被重复使用了。这个bean是作为类“userdata”的变量的。由用户键入的数据都被收集在bean中。我们可以不需要“savename.jsp”,“getname.html”的目标就是“nextpage.jsp”,并且只要我们增加一个jsp:setproperty 标志数据同样有效。在下一个教程中,我们要使用savename.jsp作为一个错误处理并自动连接到nextpage.jsp上,换句话说,它叫用户校正错误的数据。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表