Java EE实验报告.docx
- 文档编号:30625802
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:28
- 大小:984.51KB
Java EE实验报告.docx
《Java EE实验报告.docx》由会员分享,可在线阅读,更多相关《Java EE实验报告.docx(28页珍藏版)》请在冰豆网上搜索。
JavaEE实验报告
院系:
计算机科学学院
专业:
软件工程
年级:
09级
课程名称:
JavaEE编程技术
指导教师:
xx
组号:
22
学号:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
姓名:
xxxxxxxxxxx
2012年6月10日
年级
09
专业
软件工程
班级
X
实验
名称
JavaEE程序设计
实
验
分
项
内
容
分项内容
1、利用Servlet技术完成一个网上购物系统
2、利用JSP编程完成一个聊天室
3、开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法
4、实现一个可以自由讨论的论坛
小组成员
姓名
学号
组内分工
自我评分
教师评分
Xxx
Xxxxxxxx
主要完成了实验四,与其他组员合作完成实验二
Xxx
Xxxxxxxx
完成实验一、二
Xxx
Xxxxxxxx
与其他组员合作完成实验四、三
Xx
Xxxxxxxx
完成实验三
小
组
成
绩
评
定
教师签名:
年月日
实验分项1
利用Servlet技术完成一个网上购物系统
实验目的
n1、学会在Netbeans中创建Servlet
n2、学会在web.xml中配置Servlet
n3、学会使用Servlet处理页面的跳转
n4、学会使用Servlet处理GET/POST请求。
实验要求
具体题目
n利用Servlet技术完成一个网上购物系统,实现以下功能:
n1、用户登录(用自己的学号和姓名登录系统)
n2、利用分发器,登录成功进入购物页面,登录失败进入失败页面,提示用户重新登录(无需跳转页面)
n3、购物页面内容自拟,页面参照课本3.6.4章节例子,用购物车方式实现
n4、在购物车页面增加“确认购买”按钮,点击将当前时间、学号、姓名、购买物品及数量写入文件,文件路径写入web.xml配置文件
n5、(可选加分功能)在用户登录成功后提示“您上次购买的物品包括:
XXX5件、YYY6件……,欢迎继续购买”,再次确认购买后将数量相加存入文件。
系统平台
Netbeans7.1.2
jdk1.7.0_04
JavaEE6.0
实验原理及步骤
本实验主要用到Servlet技术。
1,index.html文件负责用户的登录;
2,Servlet文件LoginDeal.java负责对用户的验证。
本程序中的用户名和密码被固定死了,均是09065060.
protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriterout=response.getWriter();
//Stringfile_path=myconfig.getInitParameter("FileP");
if(request.getParameter("username").equals("09065060")
&&request.getParameter("password").equals("09065060")){
request.getSession().setAttribute("username",request.getParameter("username"));
RequestDispatcherdispatcher=request.getRequestDispatcher("Main");
dispatcher.forward(request,response);
}else{
RequestDispatcherdispatcher=request.getRequestDispatcher("LoginFail");
dispatcher.forward(request,response);
}
}
如果验证成功,页面会跳转到Main.java。
验证失败,页面跳转到LoginFail.java。
3,Main.java,负责从用户的购物文件中读出用户的以往购物记录,并提供给用户购物的界面。
4,Cart.java,负责把用户新买的物品叠加到用户以往购买之上。
out.println("
你的购物车里有
"+new_apple_amount+"斤苹果"+new_banana_amount+"斤香蕉"
+new_grape_amount+"斤葡萄");
5,Sure.java,负责把购物记录写到文件。
Stringfile_name="E:
\\testOnlineShop3\\"
+request.getSession().getAttribute("username")+".txt";
Stringshopping_user="购物者:
"+request.getSession().getAttribute("username")+".\r\n";
Stringshopping_time="购物确认时间:
"+year+"年"+month+"月"+day+"日"
+hour+"时"+min+"分."+"\r\n";
Stringshopping_content="购物明细:
"+"苹果"+apple_amount+";香蕉"+banana_amount
+";葡萄"+grape_amount+".";
Stringfile_content=shopping_user+shopping_time+shopping_content;
writeFile(file_name,file_content);
实验结果及分析
1,登录系统
2,登录后我们会看到这样的界面
实验结果及分析
3,查看以往的购物记录
4,把物品放入购物车,购物车算出物品总数量
5,“确认购买”后,把购物记录写到文件。
实验结果及分析
6,查看购物后的文件
心得体会
本学期之前我没有接触过JavaEE的东西。
这学期我们开了JavaEE这门课,我觉得我似乎对它很感兴趣。
做这次实验之前我读且运行了教科书中的示例程序。
本实验主要是把教科书中的一些示例程序拼凑起来,再加上自己写的一些东西,没有碰到什么大的麻烦。
本实验中我觉得最重要的部分要算web.xml这个文件了。
在这个文件里可以指定打开工程的默认页面,还可以为一些Servlet配置初始化参数。
本实验中我主要学会运用request来传递页面发给Servlet的参数。
本实验中RequestDispatcherdispatcher=request.getRequestDispatcher("Main");dispatcher.forward(request,response);这两句代码也给我留下了深刻的印象。
实验分项2
利用JSP编程完成一个聊天室
实验目的
n1、学会在Netbeans中创建JSP文件,编写JSP代码
n2、学位使用JSP脚本元素嵌入HTML编程
n3、学会使用JSP指令设置页面属性
n4、学会使用JSP动作组件进行页面之间的交互
n5、学会使用内置对象,了解内置对象的工作原理
n6、了解表达式语言和JSP隐式对象
实验要求
1、用户登录(用自己的学号和姓名登录系统)
2、将姓名写入上下文,显示在聊天室页面
3、实现类似QQ群的聊天功能
实验原理及步骤
本实验主要用到jsp的知识。
1,登录界面的login.jsp:
用户名:
密码:
在这里注意在jsp文件中文本框、密码框、提交按钮的代码形式。
本程序中只要用户名和密码相同就可以进入聊天室。
2,登陆处理的loginDeal.jsp:
在这里主要创建application范围内的对象user,使得在不同客户端上的所有的登录用户都可以相互看到其他人;创建session范围内对象user_temporary_ID、username,使得用户在他/她登录的客户端上发言时可以带上自己身份的标志;并且统计一共有多少人登录到聊天室。
3,聊天室Cart.jsp:
本页面包含sendMessage.jsp,sendMessage.jsp负责发送消息到Cart.jsp。
Stringsend_msg=request.getParameter("textarea2");
send_content="\r\n"+session.getAttribute("user_name")+""+send_time+"\r\n"+""+send_msg+"\r\n";
if(send_msg==null||send_msg.equals("")){
send_content="";
}
talks=application.getAttribute("talks").toString();
talks+=send_content;
application.setAttribute("talks",talks);
发言后,系统会把发言的前面加上发言者的身份、发言时间,并把这个整体续接到application范围内的对象talks。
这样,所有人都可以看到talks的变化,也就相当于所有人都收到了发言者的信息。
4,在某个用户退出系统时,会把此用户的信息从application中删除。
实验结果及分析
1,登录
实验结果及分析
2,登录成功的话,就来到了聊天室。
3,依照相同方式可以再登录多个用户
实验结果及分析
4,实现了谈话的功能。
心得体会
本次实验遇到的困难有:
1,怎么样在用户发言时加上用户自己的用户名,解决办法:
把用户名设为session范围内对象;2怎样能使发送消息和接收消息的两个框在一个页面中,解决方法:
让接收消息的页面包含(既 include>)发送消息;3,怎样让所有的用户看到聊天室内的聊天内容,解决方法: 把聊天内容设为application范围内对象。 本次实验遇到的最大困难是困难2不知道可不可以让一个文本域接收到同一网页中另一个文本域的文本怎么做。 实验分项3 开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法 实验目的 n1、学会在Netbeans中创建自定义简单标记 n2、学会创建包含属性的自定义简单标记 n3、学会创建包含体内容的自定义标记 n4、学会使用嵌套自定义标记 n5、了解自定义标记库的发布 实验要求 1、开发一个自定义标记库并发布为JAR 2、编写测试工程引用发布的自定义标记库并编写测试HTML和JSP验证 3、HTML输入数字、JSP进行数字验证并调用标记库实现转换并显示 4、数字输入错误给予提示 例如: 10003à壹万零叁圆、2345.78à贰仟叁佰肆拾伍圆柒角捌分 亿万仟佰拾圆角分零壹贰叁肆伍陆柒捌玖拾 实验原理及步骤 1,标记处理器NumberToCNY.java publicStringchangeNumberToCNY(){ //如果传入""即为"空值" if("".equals(number)){ return"空值,请重新输入! "; } //非数字型 doubledNumber; try{ dNumber=Math.abs(Double.parseDouble(number)); }catch(NumberFormatExceptione){ return"输入错误,请重新输入! "; } //将这个数转换成double类型,并对其取绝对值后进行四舍五入操作 dNumber=(dNumber*100); dNumber=Math.round(dNumber); dNumber=dNumber/100.0; //将dNumber进行格式化否则会以科学计数型输出 number=newjava.text.DecimalFormat("##0.00").format(dNumber); //规定数值的最大长度只能到萬億单位,否则返回"溢出" intindex=number.indexOf("."); if(number.substring(0,index).length()>13){ return"数据溢出,请重新输入! "; } returnclearZero(splitNumber(number)); } 实验原理及步骤 2,标记描述文件NumberToCNY.tld 3,在处理数字转换为大写转换的页面show.jsp中引用标签 …… <%@tagliburi="/WEB-INF/tlds/NumberToCNY.tld"prefix="mytag"%> …… numbertocnynumber="<%=Arabic_number%>"> numbertocny> …… 实验结果及分析 1,输入数字: 2,转换成银行中的大写表示法: 实验结果及分析 3,其他的正确输入与正确转换 4,一些错误输入与对应的处理 心得体会 本次实验没遇到什么大的困难。 本来想自己写一个把数字转换成银行大写的标记处理器,但是写得不够完善,后来借鉴了网上的一段代码。 因为这次实验的重点不是写标记处理器,而是写标记处理器内的doAfterBody方法和doEndTag方法、写标记描述文件、写标记描述库文件,以及怎样把标记库发布。 而遗憾的是标记库的发布并没有成功。 所以,这次不算是一次成功的实验。 实验分项4 实现一个可以自由讨论的论坛 实验目的 n1、学会在Netbeans中连接MySQL数据库 n2、学会在JSP中执行SQL语句并处理结果集 n3、了解数据源和连接池的概念 n4、学会创建和使用数据源 n5、学会处理分页技术 实验要求 1、用户可以用列表的方式查看帖子(列出题目、作者、时间等信息) 2、论坛的帖子采用分页显示的方式 3、数据存储在数据库中 4、(可选功能)用户登录、注册、取回密码等。 要求提交建表语句! ! 实验原理及步骤 1,本程序用到的数据库: Mysql 2,表的设计 表1,用户表user_info 列名 数据类型 描述 备注 Id Int 用户唯一编号 Primarykey,自增 Username Varchar(16) 用户名 Password Varchar(16) 密码 RegisterDatetime Datetime 注册时间 表2,帖子容器表postContainer 列名 数据类型 描述 备注 Id Int 帖子容器唯一编号 Primarykey,自增 viewCount Int 被查看次数 PostCount Int 拥有帖子的数目 PostCName Varchar(64) 帖子容器名称 PosterName Varchar(16) 发帖者名称 postCBDT Datetime 发帖时间 lastfollowerName Varchar(16) 最后跟帖者名称 lastfollowDatetime Datetime 最后跟帖时间 表3,帖子表post 列名 数据类型 描述 备注 Id Int 帖子唯一编号 Primarykey,自增 followerName Varchar(16) 帖子作者 postDatetime Datetime 帖子发表时间 postContainerID Int 帖子所属的帖子容器 Foreignkey,参考postContainer.id content Varchar(1024) 帖子的内容 实验原理及步骤 3,发帖: publicbooleansavePC(PostContainerpc){ Stringsql="insertintopostcontainer(viewCount,postCount,postCName,posterName,postCBDT,lastfollowerName,lastfollowDatetime)values(" +pc.getViewCount()+","+pc.getPostCount()+",'"+pc.getPostCName()+"','"+pc.getPosterName()+"','"+pc.getPostCBDT()+"','" +pc.getLastfollowerName()+"','"+pc.getLastfollowDatetime()+"');"; try{ conn=newDatabaseConn().getConnection(); }catch(SQLExceptione){ e.printStackTrace(); }catch(NamingExceptione){ e.printStackTrace(); } try{ stmt=(Statement)conn.createStatement(); }catch(SQLExceptionex){ Logger.getLogger(UserService.class.getName()).log(Level.SEVERE,null,ex); } System.out.println(sql); try{ stmt.execute(sql); }catch(SQLExceptionex){ Logger.getLogger(PostService.class.getName()).log(Level.SEVERE,null,ex); } try{ conn.close(); }catch(SQLExceptione){ e.printStackTrace(); } returnfalse; } 实验原理及步骤 4,跟帖: publicbooleansavePost(Postpost){ Stringsql=null; try{ conn=newDatabaseConn().getConnection(); }catch(SQLExceptionex){ Logger.getLogger(UserService.class.getName()).log(Level.SEVERE,null,ex); }catch(NamingExceptionex){ Logger.getLogger(UserService.class.getName()).log(Level.SEVERE,null,ex); } try{ stmt=(Statement)conn.createStatement(); }catch(SQLExceptionex){ Logger.getLogger(UserService.class.getName()).log(Level.SEVERE,null,ex); } Calendarcalendar=Calendar.getInstance(); intyear=calendar.get(Calendar.YEAR); intmonth=calendar.get(Calendar.MONTH)+1; intday=calendar.get(Calendar.DAY_OF_MONTH); inthour=calendar.get(Calendar.HOUR_OF_DAY); intmin=calendar.get(Calendar.MINUTE); intsecond=calendar.get(Calendar.SECOND); StringregisterDatetime=""+year+"-"+month+"-"+day+""+hour+": "+min+": "+second; post.setPostDatetime(registerDatetime); sql="insertintopost(followerName,postDatetime,postContainerID,content)"+"values('" +post.getFollowerName()+"','"+post.getPostDatetime()+"',"+post.getPostContainerID()+",'" +post.getContent()+"');"; try{ stmt.execute(sql); }catch(SQLExceptionex){ Logger.getLogger(PostService.class.getName()).log(Level.SEVERE,null,ex); } try{ conn.close(); }catch(SQLEx
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java EE实验报告 EE 实验 报告