(一)项目介绍

项目名称

使用知识点

项目效果

Lab 16

JavaBean、上下文对象、会话对象

①PrivateSum:生成一个私有累加器,将结果存在session中。

②PublicSum:生成一个公共累加器,将结果存在context中。

用户通过页面进行累加,页面会限制只能输入数字

Lab 17

过滤器、JavaBean、Servlet传递数据的多种方式、文件的读取、EL表达式、JSTL

①FilterUTF8:将项目统一UTF-8编码

②RecordsServlet专题:使用上下文对象储存聊天信息,建立一个简易聊天室,用户A与用户B的信息能合理读取、显示。(效果图见文档尾部)

③ServletDataPass专题:使用jsp进行交互(输入信息,查看Servlet传递信息的细节、查看Servlet的输出信息);建立4个Servlet,各自以不同的方式进行信息沟通(静态变量、sendRedirect、getRequestDispatch、getSession、setAttribute)

④ShoppingServlet专题:通过txt文件读入产品信息,添加店铺和库存信息,若商品售光则不予显示。购物车能合并相同商品的不同订单,购物车按照店铺>产品分组显示。将不合理的订单或其他错误信息显示给客户。更正了原项目刷新导致表单重复提交的错误。

Lab 18

JavaBean、Servlet的信息传递

①JAVABEAN:Product类存储商品信息、CartProduct类存储购买信息、ShopCart类对购物车的修改请求进行具体操作。

②ShowProductServlet:显示商品详细信息,提供用户将具体数目的商品加入购物车的功能。限制商品的可加入购物车的数目不大于库存数目,不小于0。

③ShoppingServlet:获取用户在产品页提交的加入购物的详细信息,将其加入购物车中。合并相同产品的订单。将部分违法操作进行相应提示。

④ShowCartServlet:获取购物车的详细信息,并提供修改购物车中商品的数目功能(由此可以删除商品)。计算购物车中商品的总额。

Lab 19

Junit的使用、pom.xml的基本内容

编写了一个计算器,并使用Junit进行进行加减单元测试

Lab 20

Junit、maven

LeapYear类判断输入年份是否为闰年。

LeapYearTest测试LeapYear功能是正确、完善。

Lab 21

MVC框架、filter、servlet

①EncodingUTF8:统一UTF-8编码

②Record类:赋予消息体结构(发送人、时间、发送信息)。

③login.jsp:简单的登录页面,帮助用户转向Servlet,从而进入WEB-INF下的网页。

④RecordsServlet:帮助登陆成功的用户进入聊天室。处理聊天室收到的消息,放入消息记录中。

⑤chat.jsp:聊天室,同时实现两个用户的聊天窗口,模仿QQ显示双方的信息。

Lab 22

MVCController

在Lab21的基础上

①使用DispatherServlet接收所有处理请求,充当路由器功能,将登录请求发送给LoginController、聊天室请求发送给RecordsController。

Lab 23

MVCValidator

在Lab22的基础上

①LoginValidator:获取User对象,判断用户名、密码是否为空,返回错误信息。

②在LoginController处添加判断登录信息是否合法,并进行相应反馈的操作。

 

Lab 24

SpringMVC

在Lab23的基础上

删除了自己编写DispatherServlet,使用了库中的DispatherServlet,在xml中配好此Servlet,在springmvc-servlet.xml中配好相应链接应该转到的Controller,重现聊天室之前功能与效果。

 

(二)问题描述

问题1描述:Caused by: java.lang.IllegalArgumentException: The servlets named [myServlets.Servlet01] and [myServlets.Servlet03] are both mapped to the url-pattern [/Servlet01] which is not permitted at ….

问题分析:看原因应该是xml或者注解重复了,导致编译时找不到具体的Servlet。

问题解决:查看Servlet注解,发现自己由于是复制产生的多份Servlet,它们名字改了但是注解相同。

 

问题2描述:

JAVA EE 实训目的 javaee实验报告心得体会_JAVA EE 实训目的

问题分析:应该是jsp对应行的语法问题。

问题解决:发现自己在语句 ”<input value=”xx“>” 使用了四个双引号,将其中一对双引号变成单引号。

 

问题3描述:

JAVA EE 实训目的 javaee实验报告心得体会_JAVAEE_02

问题分析:500一般是编译不通过,查看相关代码。发现删掉如下红框,就能成功运行。

JAVA EE 实训目的 javaee实验报告心得体会_问题分析_03

问题解决:发现是<input>中的max出错,但是逻辑上自己要求获取max=剩余库存数目,所以尝试了下删掉max红框处,将min=0,改为min=”0”,发现不影响运行,故将max=int,也改成了max=”string类型”,代码如上。成功解决问题。

 

问题4描述:如图:

JAVA EE 实训目的 javaee实验报告心得体会_MVC_04

问题分析:这问题没经历过,先看英文后百度。无果,休息会。

问题解决:休息的时候关掉了Eclipse,再打开又能运行成功了。

 

问题5描述:出现乱码如下:

JAVA EE 实训目的 javaee实验报告心得体会_聊天室_05

问题分析:应该是编码问题,一直看filter里面这句话不顺眼。

JAVA EE 实训目的 javaee实验报告心得体会_MVC_06

问题解决:删掉此类。因为我直接都是UTF-8编码,如果再另一种编码读取再编码一次,反而产生乱码。

 

问题6描述:出现404错误、即使运行单独的页面,也会失去CSS效果。

问题分析:先查路径,再查细节。

问题解决:发现项目的名字错了,去掉.war。

JAVA EE 实训目的 javaee实验报告心得体会_MVC_07

 

 

(三)知识点总结

1.Servlet的生命周期  

概述为:Servlet 加载--->实例化--->服务--->销毁。

init():负责初始化Servlet对象,只执行一次。

service():对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。

destroy():在服务器端停止且卸载Servlet时执行该方法,只执行一次。

 

2.Java包命名规范

前缀

介绍

包的命名

indi

个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。

indi.发起者名.项目名.模块名.……

pers

个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人

pers.个人名.项目名.模块名.……

priv

私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright属于个人。

priv.个人名.项目名.模块名.……

onem

与“indi”相同,推荐使用“indi”。

onem.发起者名.项目名.模块名.……

team

团队项目,指由团队发起,并由该团队开发的项目,copyright属于该团队所有。

team.团队名.项目名.模块名.……

com

公司项目,copyright由项目发起的公司所有。

com.公司名.项目名.模块名.……

 

3.具体的命名规范

xxx:代表公司名称yyy:代表项目名称

  • com.xxx.yyy.dao      dao层接口
  • com.xxx.yyy.dao.impl    dao层实现
  • com.xxx.yyy.service    service层接口
  • com.xxx.yyy.service.impl  service层实现      
  • com.xxx.yyy.web      web层
  • com.xxx.yyy.util      工具包
  • com.xxx.yyy.domain    javabean

 

 

4.Java开发Web Application有几种符合MVC设计模式的开发方式。

  • Jsp+Servlet+JavaBean(EJB)
  • Jsp+JavaBean(Controller)+JavaBean(EJB)(Model)
  • TDK(Turbine,Velocity...)
  • Xsp
  • Jsp+Struts+JavaBean(EJB)

 

(四)心得

       此次实验最大的思考是课程结束后,我能否给自己安排类似的实验?能否在无外界压力的情况下,有逻辑地去写博客?想了想,如果要达成心愿,我应该:①对领域知识有框架式的了解。②利用反馈带来的正向引导,适当给自己反馈,但不要迷失自己的重心、目标。③一定的时间限制。

       在javaee实验文档中,我学会了先搜集素材,再集中整理的文档技巧,但是提醒自己的一点是,尽量自己打文档,慎用复制粘贴(如果保证理解了就可以复制粘贴)。

       MVC的框架很神奇,总的概括的,View层是界面,Model层是业务逻辑,Controller层用来调度View层和Model层,将用户界面和业务逻辑合理的组织在一起,起粘合剂的效果。所以Controller中的内容能少则少,这样才能提供最大的灵活性。

       有一句行话“少用继承,多有组合”,如果被继承的类中有继承的类用不到的方法或者属性时,就不要去实现这个继承。设计模式中,有时候用继承只是为了时上层使用的时候,不需要考虑到下面是怎么做的而已(参考策略模式)。博客上讲:MVC,View层,单独实现了组合模式,Model层和View层,实现了观察者模式,View层和Controller层,实现了策咯模式。

 

 

(五)项目效果图(捡关键的)

JAVA EE 实训目的 javaee实验报告心得体会_问题分析_08

JAVA EE 实训目的 javaee实验报告心得体会_JAVA EE 实训目的_09

JAVA EE 实训目的 javaee实验报告心得体会_聊天室_10

部分知识点从其他博客上了解