JSP Website (maven webapp) using Apache Derby (embedded) Hibernate JPA JUnit Tomcat7

来源:互联网 发布:淘宝店铺banner制作 编辑:程序博客网 时间:2024/06/16 01:58

  • JSPServlet实验总结
    • 使用的技术 Apache Derby 106 Hibernate 3 JPA Test with JUnit with log4j Run on Apache Tomcat 7
      • MediaVault-pantynopants-github
      • 完善想法使用ajaxservlet完成jsp的功能
  • 结构图与开发流程图
  • 代码说明
  • 代码使用
  • TODO
  • 配置说明
  • 难keng点
  • XML读取
  • 对JPA的理解
  • 未解决的问题使用了略麻烦的方式解决
  • 两种存储方式的对比
  • 从meta-data change to database的迁移过程
  • 引用

JSP/Servlet实验总结

使用的技术 Apache Derby 10.6 & Hibernate 3 & JPA. Test with JUnit with log4j & Run on Apache Tomcat 7

MediaVault-pantynopants-github

Mark一下内容以防忘记:
实验一为静态页
实验二为使用xml(.nfo)格式存储媒体信息,将此信息(meta-data)文件和源文件一起上传,解析
实验三为使用database替换xml,并继续完善

完善想法:使用ajax+servlet完成jsp的功能

ref:
Servlet Ajax Experiment
inks the servlets with ajax and jquery to render data in a jquery datatable
AjaxLogin
SimpleCHAT

结构图与开发流程图

Created with Raphaël 2.1.0Design the DBDesign the DBcreate model classcreate model classimplement DAOimplement DAOunit test modelunit test model
Created with Raphaël 2.1.0Create htmlCreate htmlchange to jspchange to jspdesign service/servlet according to neededdesign service/servlet according to neededSeparate out header/footer/...form to entity
Show Pages:jsp(TVshow.jsp)|servlet(UploadTVServlet)|getAlbum/addAlbum(TVDAO)|module class(TVshow)

DB得到的数据直接作为bean的属性,可在jsp页面直接调用,显示

Upload*.jsp:

jsp->createAlbum(servlet) 写入类的属性中        ->createMedia 文件的链接写入类的属性中            ->DAO(Media location and metaData)类写入DB

!!!上传文件后, 实际存储位置是eclipse的工程目录

代码说明

package myapp.model中为数据库表结构
为方便管理,抽象出了AllResource作为媒体库进行管理
package myapp.service中的InitResource.java为初始数据

代码使用

  1. project -> R click -> add external jars. Then add jdom.jar/smartupload.jar/…, which is in /WenContent/WEB-INF/lib , to it.

  2. maven update. If error occurred, delete local maven folder and retry.

  3. Run as -> run configurations -> tomcat7 -> classpath -> add projects. Then add this project. It can ensure the entitymanager can be used in our project.

TODO:

清理css 修改样式
修改上传路径, 实现上传至服务器
修改upload页使之针对不种类的upload反应不同(session实现)
404页面

(em 指entitymanager)

配置说明:

  1. project->r click->add external jars Then add jdom/smartupload/… to it
  2. run config -> tomcat7运行时配置本工程为依赖库(添加maven的jar包,才能在servlet上使用em
  3. maven刷新。若 失败:删除c盘默认全局jar包存放地址并重新刷新
    以上之后一般即可运行. 不能运行时
  4. .classpath .project 与原文件进行对比-》class即为build path
  5. presist.xml web.xml可以一直不动
    更详细配置见github
    MediaVault-pantynopants-github

难(keng)点:

  • Derby embedded配置
  • pom.xml 错误的id会导致eclipse一直报错无法启动
  • 不要使用eclipse的自带浏览器,每次运行都有缓存,即为上一次的页面。需刷新才行
  • em可以传递全局,即指entitymanagerfactory的持有对象会在运行后一直存在
  • web.xml中:<load-on-startup>1 </load-on-startup>的servlet的默认调用方法是无参构造方法
    <load-on-startup>是servlet标签的属性,避免错误使用
  • web.xml的位置不需要再.classpath .project中指定。应该与tomcat配置有关。未遇到问题
  • 注意实体的状态。manager.getTransaction().begin();之后不能出现第二个begin
  • 每次都要把dom4j等文件放入lib文件夹中,否则tomcat无法启动
    jsp中找不到servlet, 包的路径问题
    jsp实现文件上传

XML读取

servlet读取xml格式的post数据
XML–两个系统采用servlet发送及解析XML
Java如何读取XML文件 具体实现

对JPA的理解:

将对象映射到表里,@OneToMany等annotation表示外键关系,主键由@Id @GeneratedValue(strategy=GenerationType.IDENTITY)生成
更新表通过DAO类来进行。可以把em看成一个set来理解,每次通过主键从这个set中取得表(实体)(entity)

未解决的问题,使用了略麻烦的方式解决:

  • jsp中<jsp:include page="/loadalbum?<%=aaa %>"></jsp:include> 失败的问题: 此处不能使用parameter,对于servlet的parameter应用不同的方式?
    这里使用session避免
    但会有session滥用和清空不及时的隐患

  • 泛型和反射没有写好,如可以把参数定为object类型,传入album track时调用不同的DAO
    以至于servlet过多

两种存储方式的对比:

nfo因为是对xml文件进行解析,因为对xml结构的不了解,这种方式更容易出现数组越界这类错误,且每一种model类需要不同的,而且是较复杂的XML解析文件(如xmlreader)
nfo文件较为固定,无法通过主键唯一标识一个实体,无法通过外键链接实体,只能通过链接/相对路径方式
优点是数据的储存结果可以直接从文件看到,但同时不利于保密

ORM因为直接对类model操作,更加直接方便
缺点是数据库中数据检查需要通过数据库管理软件,不太直观清楚,不方便调试

从meta-data change to database的迁移过程:

因为从新设计了数据结构,采用了不同的model类,因此基本是完全重构,较为困难
首先抛弃所有XML对应工具类,保留并更改了jsp作为view
对于文件上传部分保留
重构全部servlet, util(工具)类,model类

引用:

bootstrap
dropzone.js
Java Persistence (JPA) Tutorial With Hibernate
using hibernate with embedded derby
Hibernate basic example with Apache Derby and Maven
JAVA DERBY AND HIBERNATE 3.X CONFIGURATION USING ANNOTATIONS

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网页被设置成不可以到下一页怎么办 小天鹅热水器排污螺丝拧不动怎么办 葡萄霜霉严重叶片开始发焦了怎么办 上海高架gps定位信号差怎么办 老公开车技术不行还非要开怎么办 我偷了同学手机被发现应该怎么办 没满月孩孑4天没大便了怎么办 电机轴总是从皮带轮处断裂怎么办 天花板吊顶里的热水管经常坏怎么办 摩托车油箱下面的废油管漏油怎么办 大修机械压力机轴取不下来怎么办 萌侠传说账号密码没了怎么办 车子前保护杠塑料刮花了怎么办 糖猫电话手表关机了找不到了怎么办 小天才电话手表被洗衣机洗了怎么办 小天才电话手表放洗衣机洗了怎么办 小天才电话手表泡水了怎么办 小天才电话手表联不上网怎么办 肺炎用激素治疗后肚子大了怎么办 8岁以下儿童总是低烧不退怎么办? 微博里面的视频不能改变方向怎么办 朗逸导航倒车一体机死机了怎么办 乐淘乐电话手表的二维码没了怎么办 艾蔻儿童手表二维码丢了怎么办 糖猫儿童智能手表二维码丢了怎么办 海信电视用遥控器关了打不开怎么办 创维4k电视遥控器按键坏了怎么办 大疆3s云台陀螺仪错误怎么办 无线路由我用手机上网网速慢怎么办 下载的软件安装包以丢失怎么办 战舰世界航母的飞机恐惧状态怎么办 cad打开图纸不显示轴号怎么办 若背包忘在服务区没拿怎么办 使劲擤鼻涕耳朵耳朵疼了怎么办 用力擤鼻涕一侧的脸肿了怎么办 擦鼻涕太用力耳朵塞住了怎么办 宝宝鼻腔里有鼻涕呼呼响怎么办 黏痰在嗓子眼很干出不来怎么办 宝宝生病好了不久突然又咳嗽怎么办 7个月的宝宝经常生病怎么办 擤鼻涕鼻子周围红肿爆皮怎么办