如何创建表单

用HTML定义一些有代表性的表单做成一个JSP文件,然后用JSP标签在表单和服务器端对象(通常都用Bean)传递数据。

一般情况下是这么干的:

1、 写JSP原文件,创建一些HTML的表单并命名。

2、 在Java文件里写Bean,定义属性,GET或者SET方法来配合已经被你指定好名字的表单。

3、 回到JSP原文件中,增加<jsp:useBean>标签来创建一个或者调用一个现成的Bean。

4、 增加<jsp:setProperty>标签设置HTML表单中需要SET方法的Bean的属性。

5、 增加<jsp:getProperty>标签设置HTML表单中需要GET方法的Bean的属性。

6、 如果需要处理更多的用户数据,用request对象。


<!--EndFragment-->


============================================================== 

dukebanner.html

<table border="0" width="400" cellspacing="0" cellpadding="0">

<tr>

   <td height="150" width="150">   </td>

   <td width="250">   </td>

</tr>

<tr>

    <td width="150">   </td>

    <td align="right" width="250"> <img src="duke.waving.gif">  </td>

</tr>

</table>

<br>

主JSP文件:hellouser.jsp

<%@ page import="hello.NameHandler" %>

<jsp:useBean id="mybean" scope="page" class="hello.NameHandler" />

<jsp:setProperty name="mybean" property="*" />

<html>

<head><title>Hello, User</title></head>

<body bgcolor="#ffffff" background="background.gif">

<%@ include file="dukebanner.html" %>

<table border="0" width="700">

<tr>

   <td width="150">   </td>

   <td width="550">   <h1>My name is Duke. What's yours?</h1> </td>

</tr>

<tr>

    <td width="150"   </td>

    <td width="550"> 

                   <form method="get"> 

                              <input type="text" name="username" size="25"> <br>

                              <input type="submit" value="Submit">

                              <input type="reset" value="Reset">

</form>

      </td>

</tr>

</table>

<%  

If ( request.getParameter("username") != null )

         {

%>

<% @ include file="response.jsp" %>

<%    }  %>

</body>

</html>

<!--EndFragment-->

 

回应文件:response.jsp

<table border="0" width="700">

<tr>  

<td width="150">   </td>

<td width="550">

<h1>Hello, <jsp:getProperty name="mybean" property="username" />!</h1>

</td>

</tr>

</table>

 

处理数据的Bean:(namehandler.java)

package hello;

public class NameHandler
{
private String username;
public NameHandler() {
username = null;
}
public void setUsername( String name ) {
username = name;
}
public String getUsername() {
return username;
}
}


<!--EndFragment-->

建立HTML表单

一个HTML的窗分为三个部分:

<form>标签,

输入方法,

提交按钮发数据到服务器。

一般的HTML页面里,是这么写的<form method=get action=someurl>,在其他的页面里的action属性可能是其他特殊的CGI程序或者其他能处理数据的程序,那么在JSP里边是怎么用的呢,

如果你想把数据发到Bean里的话那么你可以省略action里边的东西了,直接写<jsp:useBean>标签或者其他特定的JSP文件了。

接下来的那些表单和普通的HTML差不多了,<input>的方法,然后加一个提交按钮,可能还有一个Reset按钮,对了,别忘了,还得给每一个input表单加一个名字。这么写:<input type="text" name="username">


<!--EndFragment-->

 

使用GET和POST方法

用GET和POST方法可以发数据到服务器,在JSP程序中GET和POST方法可以发数据到Bean、servlet、或者其他服务器端的组件。

理论上说,

GET是从服务器上请求数据,

POST是发送数据到服务器。

事实上,

GET方法是把数据参数队列(query string)加到一个URL上,值和表单是一一对应的。

比如说,name=John。

在队列里,值和表单用一个&符号分开,空格用+号替换,特殊的符号转换成十六进制的代码。

因为这一队列在URL里边,这样队列的参数就能看得到,可以被记录下来,或更改。

通常GET方法还限制字符的大小。

事实上POST方法可以没有时间限制的传递数据到服务器,用户在浏览器端是看不到这一过程的,

所以POST方法比较适合用于发送一个保密的(比如信用卡号)或者比较大量的数据到服务器。

 

 

 

写Bean

如果JSP程序用到了Bean,你就得按照JavaBeans API的说明设计你的Bean。

记住下面两个关键部分。

如果JSP程序里用<jsp:getProperty>标签,那你就得在Bean里边配合的GET方法。

如果JSP程序进而用 <jsp:setProperty>标签,那你就得在Bean里边配合的Set方法。

设置参数到Bean或者从里边取参数将在以后的部分详细介绍。

传数据到Bean

<!--EndFragment-->


 

把HTML表单的数据传到Bean里需要两个工作: 

• 用<jsp:useBean>标签创建或者定位到Bean

• 在Bean里面用<jsp:serProperty>设置属性值 

第一步用<jsp:useBean>标签创建或者定位到Bean一定要用在<jsp:setProperty>之前,

<jsp:useBean>首先按照你指定的名字查找Bean,

如果没找到,会给你指定一个。

允许在一个JSP文件中创建一个Bean,然后再另一个文件中调用,这就给了Bean一个很广泛的运行空间。

 

第二步在Bean里面用<jsp:setProperty>设置属性值。最简单的方法是把值定义成与表单名相配合。举个例子,如果你把表单名定义成“username”那么,你就在Bean里定义属性“username”然后用方法getUsername和setUsername。

 

Request对象 

用户输入的数据用来存放在Request对象里,用javax.servlet.HttpServletRequest来执行(你也可以用其他不同的工具来执行,但他们其实都是javax.servlet.HttpServletRequest的子集)

 


<!--EndFragment--><!--EndFragment--> <!--EndFragment-->

执行结果

 

getRequest

Javax.servlet.jsp.PageContext

返回当前Request对象

 

getParameterNames

javax.servlet.ServletRequest 

返回当前Request对象参数名

 

getParameterValues

javax.servlet.ServletRequest 

返回当前Request对象参数值

你将会发现其他方法包括ServletRequest,HttpServletRequest或者其他任何ServletRequest的子集。

JSP引擎经常在scenes之后使用Request对象,即使你没有明确地在JSP文件中调用。

 

从Bean中调数据到JSP页面

一旦用户的数据被传到Bean,你就想重新得到数据,然后在JSP面页中显示出来。想达到这一步,你就得用到<jsp:getProperty>标签。

传Bean名和属性名:

<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!

<jsp:useBean>, <jsp:setProperty>, 和 <jsp:getProperty>标签必须相配

举个例子:

hellouser.jsp:

<jsp:useBean id="mybean" scope="session" class="hello.NameHandler" />

<jsp:setProperty name="mybean" property="*" />

response.jsp:

<h1>Hello, <jsp:getProperty name="mybean" property="username"/>!

在这个例子里,标签被放在两个文件中,但是指定的名字都是相同的,如果不同的话,那么系统会返回一个错误信息。

 


<!--EndFragment-->

 


<!--EndFragment-->