华北电力大学科技学院
实 验 报 告
实验名称 基于J2EE架构的小型应用系统的设计与实现 课程名称 J2EE开发平及程序设计
学生姓名: 号: 成 绩:
指导教师:陈晴 实验日期:2011-10
| |
| |
专业班级: 学
华 北 电 力 大 学 实 验 报 告
一、 实验目的及要求 学生在了解Java语言的基础上了解并掌握J2EE的构架及相关技术,重点掌握核心技术中最基本的Servlet、JSP、Javabean、JDBC,初步具有基于J2EE平台的软件开发能力、设计并实现小型应用系统 1.设计并实现简单的聊天室:1)要求使用JSP或者servlet,使用session控制2)至少3个页面3)使用application对象或者servletcontext保存聊天信息4)能进行用户登录验证5)能显示在线用户名及数量6)供多个用户同时聊天 2. 实现购物车 1)使用servlet、JSP实现购物车,要求使用java的集合对象、session控制,购物车在结算前能进行购买数量的反复修改。 2)使用javaBean对购物车进行重新整合实现,实现表示层和业务逻辑层的分离。 3)选作:使用数据库保存货物和购物订单 二、所用仪器、设备 PC机,基于window xp 或者windows server 平台,使用JDK+Netbeans+MySQL为开发工具 三实验原理 对于聊天室: 1先做一个登录界面网页Login.html; 使用javascript进行账号和密码是否为空的检查,而不用jsp来检查,实现了客户端和服务器端脚本的分离 2登陆验证LoginCheck.jsp; 开启会话页面:本页用于获得login.html输入的用户名和密码 3主谈天页面ChatRoom.jsp; form表单用于输入提交处理谈天信息 4谈天信息处理Say.jsp; 放到application中,供主谈天页面ChatRoom.jsp预示谈天内容 5退出处理Out.jsp; 6防止重复登录,也就是错误处理logcheck.jsp 也就是将数据写入session,以后用户列表使用java的集合类型ArrayList存储 对于购物车用:会话实现购物车! 2个Servlet: 1) 水果订购的订单——catalog.java 退出应用前,可以多次订购,购物车(内的商品数量)保存在session中可以累计商品数量, 2) 购物车结算——cart.java 第 页 共 页
华 北 电 力 大 学 实 验 报 告
1.呈现订单页面 接受用户的输入,使用session控制,使之与购物车结算页面为一个session内 session.getAttribute(“cart”) 2.首次调用该页面时,购物车cart不存在, 创建购物车,并存入session 用hash表存储购物车cart cart=new HashMap(); 并置几种商品均为0 cart.put(“apple”,0); 在session对象新建cart属性,用于存储购物车 Session.setAttibute(“cart”,cart); 3.更新购物车 若cart存在,则从requset中获得订单页面录入 的商品的数量累加,并更新购物车 用javabean实现网页是计数,在聊天室里,用javabean来实现在线人数和历史访问人数的记录,可以类比cookie。 第 页 共 页
华 北 电 力 大 学 实 验 报 告
四、 实验方法与步骤 聊天室关键代码: 登录页面Login.jsp,就是进步前辈行一下初始化,之后重定向到主页面ChatRoom.jsp,代码如下: <%@page import=\"java.util.*\"%> <% ArrayList al_say=new ArrayList(); //始于ArrayList数组www.itstudy.cn application.setAttribute(\"say\ response.sendRedirect(\"ChatRoom.jsp\"); %> 主谈天页面ChatRoom.jsp有两部门:form表单用于输入提交处理谈天信息;另外一部门用于预示谈天内容。 <%@page contentType=\"text/html;charset=GBK\"%> <%@page import=\"java.util.*\"%>
<% ArrayList al_say=new ArrayList(); al_say=(ArrayList)application.getAttribute(\"say\"); for (int says=0;says
华 北 电 力 大 学 实 验 报 告{ %> <%=al_say.get(says)%>
<% } %> 谈天信息处理页面say.jsp 实现接收提交处理的谈天信息,放到application中,供主谈天页面ChatRoom.jsp预示谈天内容 <%@page contentType=\"text/html;charset=GBK\"%> <%@page import=\"java.util.*\"%> <% String say=new String (request.getParameter(\"say\").getBytes(\"iso-8859-1\" )); ArrayList al_say=new ArrayList(); al_say=(ArrayList)application.getAttribute(\"say\"); al_say.add(say); response.sendRedirect(\"ChatRoom.jsp\"); %> <%--防止用户重复登录logcheck.jsp--%> <%@ page language=\"java\" import=\"java.util.*\" contentType=\"text/html;charset=GB2312\"%>
<% String promt=new String(); request.setCharacterEncoding(\"gb2312\"); String Name=request.getParameter(\"UserName\"); boolean hasLog=false; ArrayList names=(ArrayList)session.getAttribute(\"lognames\"); if(names==null){ names=new ArrayList(); names.add(Name); session.setAttribute(\"lognames\ promt=\"欢迎\"+Name+\"登录!你的名字已经写入session!\"; hasLog=true; } else{ for(int i=0;i CartServlet.java HttpSession session=request.getSession(); HashMap cart=(HashMap)session.getAttribute(\"cart\"); if(cart==null){ cart=new HashMap(); cart.put(\"apple\ cart.put(\"banana\ cart.put(\"grape\ session.setAttribute(\"cart\ } request.setCharacterEncoding(\"GB2312\"); String apple_amount=request.getParameter(\"apple_amount\"); int new_apple_amount=Integer.parseInt((String)cart.get(\"apple\"))+Integer.parseInt(apple_amount); cart.put(\"apple\ session.setAttribute(\"cart\ //显示购物车内容 out.println(new_apple_amount+\"斤苹果\"+new_banana_amount+\"斤香蕉\"+new_grape_amount+\"斤葡萄\"); out.println(\"
\"); out.println(\"回到水果店\"); catalog.jsp <%@page contentType=\"text/html\" pageEncoding=\"GB2312\"%> <%@page import=\"javax.servlet.*,java.util.HashMap\"%> <% int itemCount=0; HashMap cart=(HashMap)session.getAttribute(\"cart\"); if(cart!=null) itemCount=cart.size(); //物品的种类 %> 简单购物车 第 页 共 页华 北 电 力 大 学 实 验 报 告
五、 实验结果与数据处理 聊天室: 第 页 共 页华 北 电 力 大 学 实 验 报 告
第 页 共 页
华 北 电 力 大 学 实 验 报 告
购物车: 第 页 共 页
华 北 电 力 大 学 实 验 报 告
六、结论 由于对一些语句和语法的了解没有那么透彻,老师给的两个实验,虽然都不是非常难的,但是写出来的东西也是好多错误,再加上最终还是没能把实验给做好,尽管实验时间已经过去了,但是学习永无止步,我还是要继续钻研,争取把课本上的这些东西都搞懂了,对各个页面的跳转关系,还有每条语句之间的联系都搞懂了,不要最后一事无成。 通过对J2EE的实验,我得出了以下结论: 1, 自身java语言的功底太薄弱,使得在写网页时事倍功半,浪费了好多时间。 2, 对J2EE本身的原理了解的不是非常透彻,在做实验时,要是没有老师讲过的实例,我是根本做不出来的。 3, 还有就是对课程本身的理解还是不够的,在做实验时也充分说明了这个。 总结来,以下是我认为走上JavaEE道路必备的技能: 1)做一俩个好项目,比去一个好公司更重要。 2)认识一些有经验的人,可以寻求他们帮助。 3)真正对软件有兴趣。 4)经常看书是,能看英语书籍最好,这样能先睹为快。 5)还有一个我不太确认是否正确的就是“多花些时间看看官方文档,了解正统的JavaEE知识。
第 页 共 页