最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Java EE实验报告

来源:动视网 责编:小OO 时间:2025-10-03 09:55:59
文档

Java EE实验报告

院系:计算机科学学院专业:软件工程年级:09级课程名称:JavaEE编程技术指导教师:xx组号:22学号:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx姓名:xxxxxxxxxxx2012年6月10日年级 09专业软件工程班级X实验名称  JavaEE程序设计实验分项内容分项内容1、利用Servlet技术完成一个网上购物系统2、利用JSP编程完成一个聊天室3、开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法4、实现一个可以自由讨论的论坛小组成员姓名学号组内分
推荐度:
导读院系:计算机科学学院专业:软件工程年级:09级课程名称:JavaEE编程技术指导教师:xx组号:22学号:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx姓名:xxxxxxxxxxx2012年6月10日年级 09专业软件工程班级X实验名称  JavaEE程序设计实验分项内容分项内容1、利用Servlet技术完成一个网上购物系统2、利用JSP编程完成一个聊天室3、开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法4、实现一个可以自由讨论的论坛小组成员姓名学号组内分
院    系:  计算机科学学院   

专    业:    软件工程     

年    级:    09级         

课程名称:  Java EE编程技术  

指导教师:       xx         

组    号:      22           

学    号:xxxxxxxx   xxxxxxxx   xxxxxxxx   xxxxxxxx

姓    名:   xxx        xxx        xxx        xx   

     2012年 6月 10 日

年级 09专  业

软件工程班级X
实验

名称

  Java EE程序设计

分项内容
1、利用Servlet技术完成一个网上购物系统

2、利用JSP编程完成一个聊天室

3、开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法

4、实现一个可以自由讨论的论坛

小   组   成   员

姓名学号组内分工自我评分教师评分
XxxXxxxxxxx主要完成了实验四,与其他组员合作完成实验二 
XxxXxxxxxxx完成实验一、二 
XxxXxxxxxxx与其他组员合作完成实验四、三 
XxXxxxxxxx完成实验三 

教师签名:

                                         

  年      月       日

实验分项1

 利用Servlet技术完成一个网上购物系统

 

实验目的     1、学会在Netbeans中创建Servlet 

    2、学会在web.xml中配置Servlet 

    3、学会使用Servlet处理页面的跳转 

    4、学会使用Servlet处理GET/POST请求。

实验要求"

具体题目

    利用Servlet技术完成一个网上购物系统,实现以下功能: 

    1、用户登录(用自己的学号和姓名登录系统)

    2、利用分发器,登录成功进入购物页面,登录失败进入失败页面,提示用户重新登录(无需跳转页面)

    3、购物页面内容自拟,页面参照课本3.6.4章节例子,用购物车方式实现 

    4、在购物车页面增加“确认购买”按钮,点击将当前时间、学号、姓名、购买物品及数量写入文件,文件路径写入web.xml配置文件 

    5、(可选加分功能)在用户登录成功后提示“您上次购买的物品包括:XXX 5件、YYY 6件……,欢迎继续购买”,再次确认购买后将数量相加存入文件。

系统平台

Netbeans 7.1.2

jdk1.7.0_04

Java EE 6.0

实验原理及步骤本实验主要用到Servlet技术。

1,index.html文件负责用户的登录;

2,Servlet文件LoginDeal.java负责对用户的验证。本程序中的用户名和密码被固定死了,均是09065060.

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        //String file_path = myconfig.getInitParameter("FileP");

        if (request.getParameter("username").equals("09065060")

                && request.getParameter("password").equals("09065060")) {

            request.getSession().setAttribute("username", request.getParameter("username"));

            RequestDispatcher dispatcher = request.getRequestDispatcher("Main");

            dispatcher.forward(request, response);

        } else {

            RequestDispatcher dispatcher = 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,负责把购物记录写到文件。

        String file_name = "E:\\\estOnlineShop3\\\\"

                + request.getSession().getAttribute("username") + ".txt";

        String shopping_user = "购物者:" + request.getSession().getAttribute("username") + ".\\r\\n";

        String shopping_time = "购物确认时间:" + year + "年" + month + "月" + day + "日"

                + hour + "时" + min + "分." + "\\r\\n";

        String shopping_content = "购物明细:" + "苹果" + apple_amount + ";香蕉" + banana_amount

                + ";葡萄" + grape_amount + ".";

        String file_content = shopping_user + shopping_time + shopping_content;

        writeFile(file_name, file_content);

实验结果及分析1,登录系统

2,登录后我们会看到这样的界面

实验结果及分析3,查看以往的购物记录

4,把物品放入购物车,购物车算出物品总数量

5,“确认购买”后,把购物记录写到文件。

实验结果及分析6,查看购物后的文件

心得体会本学期之前我没有接触过Java EE的东西。这学期我们开了Java EE这门课,我觉得我似乎对它很感兴趣。做这次实验之前我读且运行了教科书中的示例程序。本实验主要是把教科书中的一些示例程序拼凑起来,再加上自己写的一些东西,没有碰到什么大的麻烦。本实验中我觉得最重要的部分要算web.xml这个文件了。在这个文件里可以指定打开工程的默认页面,还可以为一些Servlet配置初始化参数。本实验中我主要学会运用request来传递页面发给Servlet的参数。本实验中RequestDispatcher dispatcher = request.getRequestDispatcher("Main");dispatcher.forward(request, response);这两句代码也给我留下了深刻的印象。

实验分项2

利用JSP编程完成一个聊天室

实验目的     1、学会在Netbeans中创建JSP文件,编写JSP代码 

    2、学位使用JSP脚本元素嵌入HTML编程 

    3、学会使用JSP指令设置页面属性 

    4、学会使用JSP动作组件进行页面之间的交互 

    5、学会使用内置对象,了解内置对象的工作原理 

    6、了解表达式语言和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。

            String send_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怎样能使发送消息和接收消息的两个框在一个页面中,解决方法:让接收消息的页面包含(既)发送消息;3,怎样让所有的用户看到聊天室内的聊天内容,解决方法:把聊天内容设为application范围内对象。本次实验遇到的最大困难是困难2不知道可不可以让一个文本域接收到同一网页中另一个文本域的文本怎么做。

实验分项3

开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法
实验目的     1、学会在Netbeans中创建自定义简单标记 

    2、学会创建包含属性的自定义简单标记 

    3、学会创建包含体内容的自定义标记 

    4、学会使用嵌套自定义标记 

    5、了解自定义标记库的发布

实验要求1、开发一个自定义标记库并发布为JAR 

2、编写测试工程引用发布的自定义标记库并编写测试HTML和JSP验证 

3、HTML输入数字、JSP进行数字验证并调用标记库实现转换并显示 

4、数字输入错误给予提示 

例如:10003à壹万零叁圆、2345.78à贰仟叁佰肆拾伍圆柒角捌分 

亿万仟佰拾圆角分     零壹贰叁肆伍陆柒捌玖拾

实验原理及步骤1,标记处理器NumberToCNY.java

    public String changeNumberToCNY() {

        //如果传入""即为"空值"

        if ("".equals(number)) {

            return "空值,请重新输入!";

        }

        //非数字型

        double dNumber;

        try {

            dNumber = Math.abs(Double.parseDouble(number));

        } catch (NumberFormatException e) {

            return "输入错误,请重新输入!";

        }

        // 将这个数转换成 double类型,并对其取绝对值后进行四舍五入操作

        dNumber = (dNumber * 100);

        dNumber = Math.round(dNumber);

        dNumber = dNumber / 100.0;

        // 将 dNumber进行格式化 否则会以科学计数型输出

        number = new java.text.DecimalFormat("##0.00").format(dNumber);

        //规定数值的最大长度只能到萬億单位,否则返回 "溢出"

        int index = number.indexOf(".");

if (number.substring(0, index).length() > 13) {

            return "数据溢出,请重新输入!";

        }

        return clearZero(splitNumber(number));

}

实验原理及步骤2,标记描述文件NumberToCNY.tld

numbertocny

com.tag.NumberToCNY

empty

number

true

true

3,在处理数字转换为大写转换的页面show.jsp中引用标签

……

<%@taglib uri="/WEB-INF/tlds/NumberToCNY.tld" prefix="mytag"%>

……

……

实验结果及分析1,输入数字:

2,转换成银行中的大写表示法:

实验结果及分析3,其他的正确输入与正确转换

4,一些错误输入与对应的处理

心得体会本次实验没遇到什么大的困难。本来想自己写一个把数字转换成银行大写的标记处理器,但是写得不够完善,后来借鉴了网上的一段代码。因为这次实验的重点不是写标记处理器,而是写标记处理器内的doAfterBody方法和doEndTag方法、写标记描述文件、写标记描述库文件,以及怎样把标记库发布。而遗憾的是标记库的发布并没有成功。所以,这次不算是一次成功的实验。

实验分项4

实现一个可以自由讨论的论坛
实验目的     1、学会在Netbeans中连接MySQL数据库 

    2、学会在JSP中执行SQL语句并处理结果集 

    3、了解数据源和连接池的概念 

    4、学会创建和使用数据源 

    5、学会处理分页技术

实验要求1、用户可以用列表的方式查看帖子(列出题目、作者、时间等信息)

2、论坛的帖子采用分页显示的方式

3、数据存储在数据库中 

4、(可选功能)用户登录、注册、取回密码等。

要求提交建表语句!!

实验原理及步骤1,本程序用到的数据库:Mysql

2,表的设计

表1,用户表user_info

列名

数据类型描述备注
IdInt用户唯一编号Primary key,自增

UsernameVarchar(16)用户名
PasswordVarchar(16)密码
RegisterDatetimeDatetime注册时间
表2,帖子容器表postContainer

列名数据类型描述备注
IdInt帖子容器唯一编号Primary key,自增

viewCountInt被查看次数
PostCountInt拥有帖子的数目
PostCNameVarchar()帖子容器名称
PosterNameVarchar(16)发帖者名称
postCBDTDatetime发帖时间
lastfollowerNameVarchar(16)最后跟帖者名称
lastfollowDatetimeDatetime最后跟帖时间
表3,帖子表post

列名数据类型描述备注
IdInt帖子唯一编号Primary key,自增

followerNameVarchar(16)帖子作者
postDatetimeDatetime帖子发表时间
postContainerIDInt帖子所属的帖子容器Foreign key,参考postContainer.id

contentVarchar(1024)帖子的内容
实验原理及步骤3,发帖:

    public boolean savePC(PostContainer pc) {

        String sql = "insert into postcontainer (viewCount,postCount,postCName,posterName,postCBDT,lastfollowerName,lastfollowDatetime) values("

                + pc.getViewCount() + 

                + pc.getLastfollowerName() + "','" + pc.getLastfollowDatetime() + "');";

        try {

            conn = new DatabaseConn().getConnection();

        } catch (SQLException e) {

            e.printStackTrace();

        } catch (NamingException e) {

            e.printStackTrace();

        }

        try {

            stmt = (Statement) conn.createStatement();

        } catch (SQLException ex) {

            Logger.getLogger(UserService.class.getName()).log(Level.SEVERE, null, ex);

        }

        System.out.println(sql);

        try {

            stmt.execute(sql);

        } catch (SQLException ex) {

            Logger.getLogger(PostService.class.getName()).log(Level.SEVERE, null, ex);

        }

        try {

            conn.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }

        return false;

    }

实验原理及步骤4,跟帖:

    public boolean savePost(Post post) {

        String sql = null;

        try {

            conn = new DatabaseConn().getConnection();

        } catch (SQLException ex) {

            Logger.getLogger(UserService.class.getName()).log(Level.SEVERE, null, ex);

        } catch (NamingException ex) {

            Logger.getLogger(UserService.class.getName()).log(Level.SEVERE, null, ex);

        }

        try {

            stmt = (Statement) conn.createStatement();

        } catch (SQLException ex) {

            Logger.getLogger(UserService.class.getName()).log(Level.SEVERE, null, ex);

        }

        Calendar calendar = Calendar.getInstance();

        int year = calendar.get(Calendar.YEAR);

        int month = calendar.get(Calendar.MONTH) + 1;

        int day = calendar.get(Calendar.DAY_OF_MONTH);

        int hour = calendar.get(Calendar.HOUR_OF_DAY);

        int min = calendar.get(Calendar.MINUTE);

        int second = calendar.get(Calendar.SECOND);

        String registerDatetime = "" + year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + second;

        post.setPostDatetime(registerDatetime);

        sql = "insert into post  (followerName,postDatetime,postContainerID,content) " + "values('"

                + post.getFollowerName() + "','" + post.getPostDatetime() + "'," + post.getPostContainerID()+",'"

                + post.getContent()+"');";

        try {

            stmt.execute(sql);

        } catch (SQLException ex) {

            Logger.getLogger(PostService.class.getName()).log(Level.SEVERE, null, ex);

        }

        try {

            conn.close();

        } catch (SQLException e) {

            e.printStackTrace();

        }

        return false;

    }

实验原理及步骤5,更新帖子容器的状态

        String sql1 = "select max(id) from post where postContainerID=" + pcID + ";";

        String sql2 = "select followername from post where id=" + maxid + ";";

        String sql3 = "update postContainer set lastfollowerName='" + followername + "' where id=" + pcID + ";";

        String sql4 = "select postCount from postContainer where id=" + pcID + ";";

        String sql5 = "update postContainer set postCount=" + postcount + " where  id=" + pcID + ";";

        String sql6 = "select postDatetime from post where id=" + maxid + ";";

        String sql7 = "update postContainer set lastfollowDatetime= '" + lastfollowerdatetime + "' where id=" + pcID + ";";

实验结果及分析1,用户注册:

2,用户登录:

实验结果及分析3,显示所有帖子容器

4,去往一个帖子容器并跟帖:

5,查看帖子容器的变化情况:

可以看到刚开始时24号帖的postCount是1,跟了一次帖后,现在postCount变为了2.

6,如果想要查看不存在的帖子容器:

实验结果及分析

7,发帖:

8,查看帖子容器总目录:

结果中会多出这么一条:

心得体会本次实验的代码规模还是蛮大的。实验中遇到的困难有:1,怎样使帖子被看过一次后,viewCount,即“查看次数”能够加1,解决方法:没有解决;2,怎样在跟帖之后,把帖子容器的状态,如最后跟帖者、最后跟帖时间、贴子数量等更新,解决方法:详见“实验原理及步骤”的第5项内容,里面的7条sql语句是重点;3,怎样显示所有的帖子容器,达到类似百度贴吧中打开某个贴吧后看到的哪种效果,解决方法:借鉴教科书p218的程序8-2,基本解决,只是没能把帖子容器的名称弄成超链接,最后只好增加了一个文本框,在里面添想要去的帖子容器的id号,以此来实现查看某个帖子容器的目的;4,其他。

文档

Java EE实验报告

院系:计算机科学学院专业:软件工程年级:09级课程名称:JavaEE编程技术指导教师:xx组号:22学号:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx姓名:xxxxxxxxxxx2012年6月10日年级 09专业软件工程班级X实验名称  JavaEE程序设计实验分项内容分项内容1、利用Servlet技术完成一个网上购物系统2、利用JSP编程完成一个聊天室3、开发一个包含自定义标记来实现将阿拉伯数字转换为银行领域的数字表示法4、实现一个可以自由讨论的论坛小组成员姓名学号组内分
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top