2023年11月28日发(作者:)
安徽农业大学《Web开发技术》JSP版课程配套教材
《Web开发技术》实验指导书
(JSP版)
刘 波 编写
安徽农业大学信息与计算机学院
通信工程
2008年2月
目 录
实验一 搭建JSP运行的实验环境 .................................................................. 1
实验二 JSP页面 ............................................................................................... 3
实验三 显示不同大小的“你好JSP” .............................................................. 7
实验四 JSP指令和动作 ................................................................................. 10
实验五 Tag文件的代码复用 ......................................................................... 12
实验六 中文显示服务器端日期 .................................................................... 14
实验七 JSP内置对象 ..................................................................................... 19
实验八 session对象 ........................................................................................ 23
实验九 简易留言板 ........................................................................................ 28
实验十 JSP中使用Java Bean ........................................................................ 31
实验十一 JSP中的文件操作 ......................................................................... 41
实验十二 JSP中使用数据库 ......................................................................... 48
实验十三 Java Servlet ..................................................................................... 66
实验十四 网上书店 ........................................................................................ 71
实验报告………………………………………………………………………..76
2
实验一 搭建JSP运行的实验环境
一、实验目的
(1)掌握JSP运行环境的安装与配置
(2)理解JSP与Servlet的关系
(3)运行简单的JSP页面,理解JSP的运行原理
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载
(2)编辑工具-记事本
(3)Tomcat服务器,也可以从网上免费下载
三、实验步骤
(1)按教材中演示安装JDK
(2)按教材中演示安装Tomcat
(3)启动Tomcat服务器,在浏览器中输入:localhost:8080,观察主页内容
(4)观察Tomcat安装目录下的各个子目录的内容
(5)打开记事本,输入下列源代码并保存为。将此文件复制到Tomcat安装目
录下的webappsROOT目录下,运行该页面,观察其对应的Servlet源代码。
的代码:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="" %>
<%! Date date; // 数据声明
int sum;
public int add(int m,int n) // 方法声明
{ return m+n;
}
%>
—html标记 --> 程序片创建Date对象: <% Date date=new Date(); //java程序片 n(" sum=add(12,34); %> <%= sum+100 %> 1 (6)将文件复制到Tomcat安装目录下的webappsexamples目录下,运行该页 面,观察其对应的Servlet源代码。 (7)将文件复制到Tomcat安装目录下的webappswebdav目录下,运行该页 面,观察其对应的Servlet源代码。 四、实验思考题 (1)JDK安装完毕后,需要添加哪些环境变量? (2)在Tomcat安装目录下的webapps文件夹中,新建一文件夹myapp,将文 件复制到Tomcat安装目录下的webappsmyapp目录下,运行该页面 (localhost:8080/myapp/ ),结果如何? 若在d:盘根目录建立一个文件夹myweb,将文件复制到d:myweb目录下, 运 行该页面(localhost:8080/myweb/ ),结果如何? 2 若要正确显示该页面,还应做如何处理?提示:修改conf目录下的文件。 (3)Tomcat默认端口号为8080,如何更改端口号? (4)编写一个JSP页面,用于显示1~100的整数和。 五、实验报告要求 (1)分析JSP的工作原理,说明JSP文件和Servlet的关系 (2)根据实验运行情况,对实验步骤和运行结果进行阐述 (3)完成实验思考题的解答 实验二 JSP页面 一、实验目的 (1)熟悉典型JSP页面的组成元素,掌握HTML标记和JSP标记的不同 (2)掌握在HTML页面中插入JSP脚本(java代码)的方法 (2)编写简单的JSP页面,初步掌握JSP网页的设计原理 3 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验步骤 (1)打开记事本,输入以下代码,保存为exer2_,观察其运行结果 exer2_: <%@ page contentType="text/html;Charset=GB2312" %> <%! int count=0; //被客户共享的count synchronized void setCount() //synchronized修饰的方法 { count++; } %> <% setCount(); n("您是第"+count+"个访问本站的客户"); %> (2)JSP中声明类(比较教材P15-P16页的声明变量和声明方法)是JSP页面对应的 Servlet类的内部类,页面上所有脚本元素都可以创建该类的对象。下面的实例定义一个 square类,当客户访问该页面时,服务器创建该类的对象,只要客户给出正方形的边长, 就可以求出该正方形的周长和面积,创建并运行exer2_,观察运行结果 exer2_: <%@ page contentType="text/html; charset=gb2312" %> 请输入正方形边长 <%! public class square { double r; square(double r) {this.r=r;} double getarea() {return r*r;} double getlength() {return r*4;} 4 } %> <% String s=ameter("cat"); double r; if (s!=null) {r=f(s).doubleValue();} else {r=1;} %> 方的面积是:<%=a() %> 方的周长是:<%=gth() %> square cc=new square(r);//创建对象 (3)编写exer2_,熟悉在“<%=”和“%>”之间插入表达式,用于输出表达式计 算结果的方法 exer2_: <%@ page contentType="text/html;charset=GB2312" %> bgcolor=cyan> Sin(0.9) <%=(0.90)/3%> 3 <%=(3,2)%> 12345679 <%=12345679*72%> 5 <%=(5)%> 99 <%=99>100%> (4)在Dreamweaver或FrontPage中利用可视化方法,编写和。 : <%@ page contentType="text/html;Charset=GB2312" %> 请输入下列信息: 5 女 张歌手 李歌手 刘歌手 王歌手 : <%@ page contentType="text/html;Charset=GB2312" %> <% String yourName=ameter("name"); // 获取text提交的值 String yourSex=ameter("R"); //获取radio提交的值 String secretMess=ameter("secret"); //获取hidden提交的值 String personName[]=ameterValues("superstar"); //获取checkbox提交的值 n(" n("
"+date);
在下一行输出和:
输入您的姓名:
选择性别:男
选择您喜欢的歌手:
n("
if(personName==null)
{ ("一个都不喜欢");
}
else
{ for(int k=0;k<;k++)
{ n(" "+personName[k]);
}
}
n(" hidden
%>
四、设计性实验环节
(1)编写一个jiecheng类,当客户在浏览器中给出指定的正整数N,能计算N的阶乘。
创建能实现此功能的jsp文件,观察运行结果(参考exer2_)
(2)编写程序,学会在声明中定义类student,初始化该类(学号、姓名、
成绩),用表格形式输出“班号(学号的前4位)、学号、姓名、成绩”。(选做)
6
五、实验报告要求
(1)分析JSP的脚本元素,说明JSP标记和html标记的不同
(2)根据实验运行情况,对实验步骤和运行结果进行阐述
(3)完成实验设计题的解答
实验三 显示不同大小的“你好JSP”(选做)
一、实验目的
(1)掌握控制字体显示大小的方法
(2)掌握For语句,显示变量值
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载
(2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003
(3)Tomcat服务器,也可以从网上免费下载
三、实验原理和内容
本程序运行后,在浏览器页面上显示不同字体大小的“你好Jsp”,如图3-1所示,
程序的流程图如图3-2所示。
1、 程序知识点
显示变量值
在JSP中,获取变量值可使用“<%=valname%>”来实现,valname可以是一个整型
字符型的变量。
图3-1 浏览器显示不同字体大小
For语句
For语句的格式如下
for (initialization Statement; conditional Expression; increment Statement)
7
{ loopBody
}
为了执行For语句,首先执行初始化语句,然后再对条件表达式求值,如果值为
TRUE,则执行循环体,随后执行递增语句。表达式的求值和循环体与递增语句的执行
不断重复,直到条件表达式的值变为false。多个初始化和增量语句可以用逗号隔开。
For循环的初始化部分可以声明局部循环变量,循环变量的范围在循环体内部。这
些循环变量遵循在块内有效的一般规则,即用大括号作为程序块,变量在块内声明,不
能与范围外边的变量同名,也不能在循环外引用。
图3-2 程序流程图
控制字体大小
在HTML语言中,控制文字大小可使用“
环语句来控制n的变化。然后,使用
2、程序代码()
<%@ page contentType="text/html; charset=gb2312" language="java" %>
8
<%
//利用For循环控制字体由大到小
for(int i=1;i<6;i++)
{
%>
<%
}
//利用For循环控制字体由小到大
for( ; ; ) //完成空格中的内容
{
%>
<%
}
%>
3、观察运行结果
四、综合设计实验环节
综合思考:结合实验二和实验三,编写和,根据变量和for循环
生成表格的行和列,结果如下图3-3和图3-4所示:
图3-3 执行结果 图3-4执行“确定”后结果
五、实验报告要求
(1)根据实验运行情况,对实验步骤和运行结果进行阐述
(2)完成综合设计环节的解答
9
实验四 JSP指令和动作
一、实验目的
(1)综合掌握在JSP中使用指令标记
(2)综合掌握在JSP中使用动作标记
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载
(2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003
(3)Tomcat服务器,也可以从网上免费下载
三、实验步骤
1、Page指令的使用
(1)打开记事本,输入以下文档,并保存为。
<%@ page contentType="text/html; charset=gb2312" language="java" import=".*,.*"
session="true" buffer="12kb" autoFlush="true" info="my page directory jsp" errorPage="false"
isThreadSafe="false" %>
Done
This program example how to use page Directive
(2)将复制到Tomcate安装目录下的webappsROOT。
(3)在IE地址栏输入localhost:8080/
2、page指令import属性的使用
(1)打开记事本,输入以下文档,并保存为。
<%-- get Year --%>
<%@ page import=".*" %>
CurrentYear=<%=tance().get() %>
(2)将复制到Tomcate安装目录下的webappsROOT。
(3)在IE地址栏输入localhost:8080/
10
3、include指令的使用
(1)打开记事本,输入以下文档,并保存为。
<%!String companyName="SSI Consulting"; %>
©2002 <%=companyName%>
Any unauthorized use of these materials will be prosecuted to the fullest extent of the law
(2)打开记事本,输入以下文档,并保存为。
<%@ page contentType="text/html; charset=gb2312" language="java" %>
This page is unde contruction
<%@ include file="" %>
Last updated:March 2008
> (3)将和复制到Tomcate安装目录下的webappsROOT (4)在IE地址栏输入localhost:8080/ 四、设计性实验环节 (1)、编写JSP页面,用“*”显示一个7×7方阵的边框和对角线,结果如图4-1所示。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 图4-1 练习1运行结果 (2)、编写JSP页面,判断字符串是否为回文,并用表格显示出来,结果如图4-2所示。 提示:使用StringBuffer类的reverse()颠倒某字符串的顺序,若字符串与颠倒后的字符串 相等,则该串为回文。(选做) 11 图4-2 练习2的运行结果 (3)、张三手头分别有800美元和1860美元,编写一个JSP页面,把他的美元换成人民 币,并用表格显示出来。假设当前美元兑换人民币的汇率是7.82。(选做) (4)、编写JSP页面分别显示1~10之间的各数字的阶乘。 实验五 Tag文件的代码复用 一、实验目的 (1)Tag文件的编写、保存以及Tag标记的使用 (2)编写JSP页面,使用Tag标记实现代码的复用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验步骤 (1)Tag文件是扩展名为.tag的文本文件,其结构几乎和JSP文件相同,只是扩展名不 同而已。也就是说,一个Tag文件中可以有普通的HTML标记符、某些特殊的指令标记、 成员变量和方法、Java程序片和Java表达式等。在记事本中编写如下一个Tag文件 : 这是一个Tag文件,负责计算三角形的面积: <%@ attribute name="sideA" required="true" %> <%@ attribute name="sideB" required="true" %> <%@ attribute name="sideC" required="true" %> <%! public String getArea(double a,double b,double c) { if(a+b>c&&a+c>b&&c+b>a) { double p=(a+b+c)/2.0; double area=(p*(p-a)*(p-b)*(p-c)) ; return " 12 } else { return(" } } %> <% n(" double a=ouble(sideA); double b=ouble(sideB); double c=ouble(sideC); n(getArea(a,b,c)); %> (2)将保存在..ROOTWEB-INF目录下 (3)在ROOT目录下编写exer5_文件,代码如下: <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="computer"%> 请选择三角形的三条边
三角形的面积:"+area;
"+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
jsp页面传递过来的三边:"+sideA+","+sideB+","+sideC);
SIDE A:
SIDE B:
SIDE B:
13
<% String sideaa=ameter("select1");
String sidebb=ameter("select2");
String sidecc=ameter("select3");
%>
<%if (sideaa==null){sideaa="3";}
if (sidebb==null){sidebb="4";}
if (sidecc==null){sidecc="5";}
%>
以下是调用Tag文件的效果:
(4)在IE地址栏输入localhost:8080/exer5_
四、综合设计实验环节
编写两个Tag文件和。负责计算矩形的面积,
负责计算圆的面积。编写一个JSP页面,该JSP页面使用Tag标记调用和
。调用时,向其传递矩形的两个边的长度;调用时,向其传
递圆的半径。
实验六 中文显示服务器端日期(选做)
一、实验目的
(1)掌握在JSP中Switch语句的使用
(2)掌握Date类使用。
(3)熟悉int和String的区别
(4)通过实例编程,综合掌握实用网页编程技巧
二、实验工具
(1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载
(2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003
(3)Tomcat服务器,也可以从网上免费下载
三、实验原理和内容
本实例运行后.将在浏览器上用中文显示当前服务端的日期,如图6-1所示。
14
图6-1 服务器端的日期
1、程序知识点
Date类及其引用
Date是在jdk中java。util这个包下的一个类,它支持日历和时间,并且包含了
getYear()、getMonth()、getDate()、getDay()几个方法,分别为获取系统年份、系统月份、
系统日期、系统星期,并且返回的都是整型。其标准用法为:
dt=new ();
int year=r();
当然也可先用import语句使包中定义的类和接口,可以只用类名而不用全名来引用
用法为(import语句一定要放在程序开头):
import .*;
Date dt=new Date();
int year=r();
以上例句Date dt=new Date()中用new语句生成一个新对象dt对Date类进行引用,
而Date()是类Date的构造函数。然后可以对Date类中的getYear()方法进行调用。但得
到的返回值要加1900才是现在年份。同样用getMonth()得到的返回值也要加1才是现在
的月份。
int和String的区别
在Java中它们是两个完全不同的概念。int是一个类型,而String是一个类。所以
在转换上是不能进行简单的强制型转换(int num=(int)string)。在此需要采用String类中的
一个方法,一般用法如下:
String str_year=f(year)
Switch语句
switch语句能够根据表达式的值决定执行多个操作中的一个或者几个。switch的一
般格式为:
switch (expression)
{
case value1:statement1;break;
……
case valueN:statemendN;break;
[default:default_Statement;]
}
15
expression可以返回任一简单类型的值,case子句中的值valueI必须是常量,而且所
有case子句中的值应是不同的。多分支语句把表达式返回的值与每个case 子句中的值
相比,如果匹配成功,则执行该case子句后的语句序列,否则执行default中的语句;如
果没有default,则不进行任何操作。而case字句中的break用于跳出switch,如果没有
break,则switch会顺序执行下个case中的语句,直至遇到break语句或者执行完所有的
case或者default语句。
switch语句中使用的表达式必须为整型表达式或不丢失便可显式地转换为整型的表
达式。不丢失便可显式地转换为整型的数据类型包括字节、字符和短型数。对于长型数、
浮点数和双精度数等数据类型,需明确地转换。case值必须能够求值或编译时能隐含地
转换为整型的常量表达式。
图6-2 程序流程图
程序实现过程
可以先获取系统的日期,然后将月份和日期统一成二位整型的格式,再将获取的系
统时间拼成字符串,最后利用For循环和swtich语句获取中文时间信息并显示。图6-2
显示程序流程图
2、部分程序关键源码()
<%@ page contentType="text/html; charset=gb2312" import=".*" %>
<% Date dtt=new Date();
int year=r();
year+=1900;
//获取月份
int month=th();
month+=1;
//获取日期
int date=e();
//获取星期
16
int day=();
//将int型转换为String
String str_year=f(year);
String str_month=f(month);
String str_date=f(date);
String str_day=f(day);
//将月份和日期统一成二位整型
if(str_()==1)
{
str_month="0"+str_month;
}
if(str_()==1)
{
str_date="0"+str_date;
}
//将获取的系统时间拼成字符串
String str_i=str_year+str_month+str_date+str_day;
String chi_num="";
String chi_num_total="";
char cha_i=' ';
String chi_year=null;
String chi_month=null;
String chi_date=null;
String chi_day=null;
//用for循环和switch语句获取中文时间信息
for(int j=0;j { cha_i=str_(j); switch(cha_i) { chi_month=chi_num_total; chi_num_total=""; } if(j==7) { chi_date=chi_num_total; chi_num_total=""; } if(j==8) { if(cha_i=='0') {chi_num_total="日";} chi_day=chi_num_total; } } //得到最终结果 String chi_dt="今天是"+chi_year+"年"+chi_month+"月"+chi_date+"日 "+"星期"+chi_day; %> <%=chi_dt%> 四、实验思考 上述中,for循环体中有这样一段语句: if(j==4||j==6) { if((cha_i=='1')||(cha_i=='0')) {chi_num_total="";} if(cha_i!='0') {chi_num_total+="十";} } 试问:如果将语句改成: if(j==4||j==6) { if(cha_i=='0') {chi_num_total="";} else {chi_num_total+="十";} } 这样修改能不能正确显示,为什么? 五、综合实验 判断服务端时间并显示中文问候 编写JSP程序,运行后,程序将根据服务端的不同时间段,在浏览器上显示“早上好”、 “中午好”、“下午好”和“晚上好”,如图6-3所示。 18 图6-3 显示结果 提示:利用Date类的getHours()函数可得到24小时制的服务器端时间,并根据当前时间 来判断是何段时间: 5~11点:早上;11~14点:中午 14~18点:下午;18点~5点:晚上 实验七 JSP内置对象(4课时) 一、实验目的 (1)掌握JSP中内置request对象的使用 (2)掌握response对象的使用,并熟悉setContentType方法 (3)掌握out对象的使用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验内容与步骤 1、request对象的使用(获取表单中提交的信息) 在jsp中,当用户通过浏览器请求一个页面时,浏览器将请求发送给服务器。按照 HTTP协议,浏览器发送的请求具有一定的结构,请求包括一个请求行、头域和表单提 交的信息体。使用request对象,可以获取用户浏览器提交的请求信息。request对象常 用的方法是getParameter(String s),该方法获取表单提交的信息。 1)在ROOT目录下编写如下源码:exer7_ <%@ page contentType="text/html;Charset=GB2312" %> <%@ taglib tagdir="/WEB-INF/tags" prefix="com"%> <% String textContent=ameter("number"); if(textContent==null) { n("请在文本框中输入数字,按提交按钮"); } else { %> <% } %> 2)在ROOTtags目录下编写如下源码: <%@ attribute name="number" %> <% try{ double n=ouble(number); if(n>=0) { double r=(n) ; (" (" } else { (" } } catch(NumberFormatException e) { (" } %> 3)在浏览器输入:localhost:8080/exer7_,观察其运行结果 4)将Form提交请求的方法改成get,观察其运行结果,体会get方法和post方法的不 同。 2、response对象的使用 (1)利用response对象的setContentType方法,改变显示方式。将下列源码保存为 exer7_,运行后观察其结果: <%@ page contentType="text/html;Charset=GB2312" %> 在学习response对象的setContentType方法 20 将当前页面用MS-Word显示吗? 将当前页面用MS-Powerpoint显示吗? <% String str=ameter("submit"); if(str==null) { str=""; } if(("MS-Word显示")) { tentType("application/msword"); } else if(("MS-Powerpoint显示")) { tentType("application/-powerpoint"); } %> (2)利用response对象实现页面重定向。将下列源码保存为exer7_和,运 行exer7_后观察其结果: exer7_: <%@ page contentType="text/html;charset=GB2312" %> 填写姓名: : <%@ page contentType="text/html;Charset=GB2312" %> <% String str=null; str=ameter("boy"); if(()==0) { direct("exer7_"); } else { ("欢迎您来到本网页!"); 21 (str); } %> 3、out对象的使用 out对象是一个输出流,该对象调用相应的方法可以将数据发送到客户端浏览器的 缓存中。其中println()和print()是常用的两个方法,其区别是:println()会向缓存区写入 一个换行,而print()不写入换行。但是浏览器的显示区域目前不识别println()写入的换行, 如果希望浏览器显示换行,应当向浏览器写入 下面的实例exer7_4使用out对象向客户输出包括表格等内容的信息,运行该实例并 观察结果。 Exer7_: <%@ page contentType="text/html;charset=GB2312" %> <%@ page import=".*" %> <% int a=2200;long b=3456;boolean c=true; n(a); n(b); (" n(c); %> <% ("隶书 size=2 >"); n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" n(" 22 n(" (" %> 四、设计性实验环节 1、编写两个页面和,用户可以使用 提供的表单输入一个数字,并提交给页面。该页面通过内置对象 获取页面提交的数字,计算并显示该数的平方和立方,并用out对象输 出结果。若页面提交的不是数字,页面应能重定 向到页面。 (必做) 2、编写程序和,做一个用户注册的界面,要求对用户填写的部 分进行合法性检验,然后提交到进行注册检验,若用户名为user开头的,就 提示“该用户名已被注册”,若用户名为admin,就提示“欢迎您,管理员”,否则,就 显示“注册成功”。 (必做) 实验八 session对象(4课时) 一、实验目的 掌握JSP中内置session对象的使用 二、实验工具 (1)JDK1.4、JDK1.5或JDK1.6,可以从SUN公司的网站免费下载 (2)编辑工具:记事本或Dreamweaver MX 2004、FrontPage 2003 (3)Tomcat服务器,也可以从网上免费下载 三、实验原理与内容 1、利用session对象存储数据。本实例利用session对象模拟购物车,存储客户的姓名和 购买的商品,三个JSP页面分别是:;;。代码如下,分析下列 代码,完成实验练习(1) <%@ page contentType="text/html;Charset=GB2312" %> 欢迎来到本页面,请输入您的姓名 23 <% String name=ameter("name"); if(name==null) { name=""; } else { ribute("customerName",name); } %> <% if(()>0) { %> <% } %> : <%@ page contentType="text/html;charset=GB2312" %> 点击超链接,连接到的页面,去修改姓名。 这里是食品柜台,请选择您要购买的食品: 香肠 苹果 酱油 饮料 <% String foodName[]=ameterValues("choice"); if(foodName!=null) { for(int k=0;k<;k++) { ribute(foodName[k],foodName[k]); } } %> 点击超链接,连接到的页面,去查看购物车中的商品。 24 : <%@ page contentType="text/html;Charset=GB2312" %> <%@ page import=".*" %> 这里是结帐处,您的姓名以及选择的商品: <% String personName=(String)ribute("customerName"); n(" Enumeration enumGoods=ributeNames(); n(" while(eElements()) { String key=(String)ement(); String goods=(String)ribute(key); if(!((personName))) n(goods+" } %> 点击超链接,连接到的页面,购买食品。 点击超链接,连接到的页面,去修改姓名。
"+n+"的平方根:");
"+r);
"+"请输入一个正数");
"+"请输入数字字符");
实现换行。
"); ");
"); "); "); "+"姓名"+" "); "+"性别"+" "); "+"出生日期"+" "); "); "); "+"张三"+" "); "+"男"+" "); "+"1988年5月"+" "); "); "); "+"李四"+" "); "+"男"+" "); "+"1987年10月"+" ");
您的姓名:"+personName);
购物车中的商品:
");
");
