JavaBean的第二种用法,是接收form组件的请求赋值。

一、修改person类。因为这一次是两个网页之间的数据传输,受中文乱码问题的影响,所以在person类中添加一个用于转码的函数,并且在每一个String类型的set方法中调用。这样才可以确保最后的中文显示正常。

 1 package com.kaly.bean;
 2 
 3 import java.io.UnsupportedEncodingException;
 4 
 5 public class person {
 6     String name;
 7     String sex;
 8     int age;
 9     String info;
10     
11     public person() {
12         super();
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name=DecodeStr(name);
19     }
20     public String getSex() {
21         return sex;
22     }
23     public void setSex(String sex) {
24         this.sex = DecodeStr(sex);
25     }
26     public int getAge() {
27         return age;
28     }
29     public void setAge(int age) {
30         //数字不需要转解码
31         this.age=age;
32     }
33     public String getInfo() {
34         return info;
35     }
36     public void setInfo(String info) {
37         this.info = DecodeStr(info);
38     }
39     /**
40      * 专门用来转换中文乱码的函数
41      * @param srcString 待转换的字符串
42      * @return 转换后的字符串
43      */
44     private String DecodeStr(String srcString){
45         String objString="";
46         try {
47             objString = new String(srcString.getBytes("ISO-8859-1"),"utf-8");
48         } catch (UnsupportedEncodingException e) {
49             e.printStackTrace();
50         }
51         
52         return objString;
53     }
54 }
View Code

二、建立indexbean.jsp,用于显示表单,输入请求。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 7     <title>我的JSP 'indexbean.jsp'开始页面</title>
 8     <meta http-equiv="pragma" content="no-cache">
 9     <meta http-equiv="cache-control" content="no-cache">
10     <meta http-equiv="expires" content="0">    
11     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
12     <meta http-equiv="description" content="This is my page">
13   </head>
14   
15   <body>
16     <center>
17         <form action="dspbean.jsp" method="get">
18             姓名:<input type="text" name="name" value="张道陵"><br>
19             性别:<input type="text" name="sex" value="男"><br>
20             年龄:<input type="text" name="age" value="100"><br>
21             信息:<input type="text" name="info" value="五斗米道创始人"><br>
22             <input type="submit" value="提交">
23         </form>
24     </center>
25   </body>
26 </html>
View Code

三、建立dspbean.jsp,用于接收请求,并且将表单提交的值全部赋给person实例p2,最后通过调用显示出来。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
 7     <title>我的JSP 'dspbean.jsp'开始页面</title>
 8     <meta http-equiv="pragma" content="no-cache">
 9     <meta http-equiv="cache-control" content="no-cache">
10     <meta http-equiv="expires" content="0">    
11     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
12     <meta http-equiv="description" content="This is my page">
13   </head>
14   
15   <body>
16     <!-- 下面这句是对Javabean类person的引用,引用的实例是p2 -->
17     <jsp:useBean id="p2" class="com.kaly.bean.person"></jsp:useBean>
18     <!-- 下面这一行是对p1各个成员赋值,这里使用"*"表示将请求表单的值全部赋给person引用p2,前提是form中的所有name必须和person中的成员名对应 -->
19     <jsp:setProperty property="*" name="p2"/>
20     <!-- 下面这几行是取用p2中各个成员的值,实际上调用的是get方法 -->
21   姓名:<jsp:getProperty property="name" name="p2"/><br>
22   性别:<jsp:getProperty property="sex" name="p2"/><br>
23   年龄:<jsp:getProperty property="age" name="p2"/><br>
24   信息:<jsp:getProperty property="info" name="p2"/>
25   </body>
26 </html>
View Code

如果表单中的name和person中的对应成员名称不一样,就要用<jsp:setProperty name="实例" property="person中的成员名称" param="表单中对应name"/>的方式赋值。

运行结果:

点击提交之后。