博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP Website (maven webapp) using Apache Derby (embedded) Hibernate JPA JUnit Tomcat7
阅读量:5047 次
发布时间:2019-06-12

本文共 2929 字,大约阅读时间需要 9 分钟。

JSP/Servlet实验总结

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

Mark一下内容以防忘记:

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

结构图与开发流程图

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

难(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

对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

转载于:https://www.cnblogs.com/bishi/p/5699002.html

你可能感兴趣的文章
Android入门之文件系统操作(二)文件操作相关指令
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
Swift 中的指针使用
查看>>
Swift - 使用闭包筛选过滤数据元素
查看>>
alue of type java.lang.String cannot be converted to JSONObject
查看>>
搜索引擎选择: Elasticsearch与Solr
查看>>
JAVA设计模式之简单工厂模式与工厂方法模式
查看>>
③面向对象程序设计——封装
查看>>
【19】AngularJS 应用
查看>>
Spring
查看>>
Linux 系统的/var目录
查看>>
Redis学习---Redis操作之其他操作
查看>>
WebService中的DataSet序列化使用
查看>>
BZOJ 1200 木梳
查看>>
【Linux】【C语言】菜鸟学习日志(一) 一步一步学习在Linxu下测试程序的运行时间...
查看>>
hostname
查看>>
SpringBoot使用其他的Servlet容器
查看>>
关于cookie存取中文乱码问题
查看>>
k8s架构
查看>>
select 向上弹起
查看>>