我刚准备学java web,请教下大神们jsp,js,servlet,structs,spring,Hibernate之间都有什么关系

我刚准备学java web,请教下大神们jsp,js,servlet,structs,spring,Hibernate之间都有什么关系,第1张

先讲servlet吧,servlet容器是在java代码中插入显示逻辑,比如用printwriter可以实现像html一样的界面显示,但是这样来写页面代码,太麻烦,所以人们想了一个办法,就是在html里面插入java代码。于是就有了jsp。jsp通过<%--%>这样的格式,在静态页面里插入了java代码,使得原本的html变成了动态的页面。最简单的例子就是,如果你要用一个页面来显示当前时间,没有jsp的话,就要程序猿不停地更新html代码,而jsp可以插入java代码,刷新一下,时间就会变。虽然servlet和jsp都可以实现显示逻辑和业务逻辑,但是这两块放在一起明显不合适,不方便,所以一般把这两者搭配着用,jsp主要做显示逻辑,servlet主要做业务逻辑,两者通过javabean组件实现更好的融合。

js呢,是另外一种东西了,跟java没有关系,全称是javascript,是一种脚本语言,由浏览器来解释执行。如果你学到ajax这边,就能体会到javascript的好处了。

现在所说的struts都是struts20,是基于mvc和strut10的一种框架,核心就是拦截器(interceptor)。客户发送请求,被对应的拦截器拦截,做出相应的处理。这个不是一两句能说得清的,得要你慢慢去理解,慢慢学。

hibernate是数据库映射用的,也是很厉害的一个轻型框架。数据库里的表和你的程序中的对象怎么联系起来呢?在没有接触hibernate的时候,可以用javabean,学习了hibernate之后,就可以用这个框架了。

spring这个框架我最近也正在看,还没法给你总结。

总之,先从基础学起,框架不要急着看。可以先学学jsp,尝试着用servlet+jsp+javabean做点小应用。了解了解mvc模式,然后再接触struts啊,hibernate,spring这些。至于js的话,跟java web开发没有必然的联系,java web里的ajax一般用jquery做。

希望能帮到你。

能够取得运行期详细信息,除了能记录粗粒度的实体的保存删除 *** 作外,还能精确追踪对实体字段修改、实体关联/级联关系的变更,能记录更新前的值、更新后的值,可以生成详细日志。

灵活解耦,跨数据库,不影响原有代码。

Hibernate3 新特性事件处理框架是hibernate 2拦截器的一个补充或者替代,由拦截器被动拦截 *** 作事件变成事件源的主动驱动,这是一个进步。Hibernate 事件框架官方文档

Hibernate3中定义了很多的事件,涵盖了持久化过程中不同的生命周期。简单说Session的一个方法(load, flush)分别对应一个事件,当该方法被调用时,就会触发一个相应的事件,这个事件会被我们预先定义的事件监听器收到,再进行相应的处理。这种方式来做审计日志是再适合不过。

但也有个缺点就是这样的Event-listener是脱离主容器(比如Spring IoC环境)单独实例化的,无法访问主容器的资源(比如要取得当前登录的用户信息就会比较麻烦)。这个暂时还没解决。

在这里我们选取PostInsertEventListener(插入后事件),PostUpdateEventListener(更新后事件),PostDeleteEventListener(删除后事件)接口作为CRUD方法的监听接口。hibernate3中事件是分为pre和 post,表示该发生事件前、后。这里我们全部用Post,因为PostEvent只有在数据实际改变后才会触发,假如CRUD事务因为异常回滚,则不会触发事件。

首先定义一个mark接口Historiazable,实现该接口的entity类表明是需要做审计日志的。

然后编写我们自定义的EventListener类,实现上述的事件接口。

在事件接口实现方法里在根据不同的事件编写审计日志的代码。

Java代码

public class HistoryListener implements PostInsertEventListener,

PostUpdateEventListener, PostDeleteEventListener {

@Override

public void onPostInsert(PostInsertEvent event) {

if (eventgetEntity() instanceof Historizable) {

// 保存插入日志

}

}

@Override

public void onPostUpdate(PostUpdateEvent event) {

if (eventgetEntity() instanceof Historizable) {

// 保存修改日志

}

}

@Override

public void onPostDelete(PostDeleteEvent event) {

if (eventgetEntity() instanceof Historizable) {

// 保存删除日志

}

}

}

配置EventListener

编辑hibernatecfgxml,配置监听器

Xml代码

<session-factory>

<listener type="post-insert" class="netjeffreyhibernatehistoryHistoryListener"/>

<listener type="post-update" class="netjeffreyhibernatehistoryHistoryListener"/>

<listener type="post-delete" class="netjeffreyhibernatehistoryHistoryListener"/>

</session-factory>

配置持久化单元

在persistencexml中加入

<property name="hibernateejbcfgfile" value="hibernatecfgxml"/>

1首先jdbc不是持久性的,hibernate是的,hibernate实际上是对jdbc的持久性封装,因为hibernate的底层也是有jdbc来实现的。

2再者,hibernate的效率比jdbc的要高,因为在hibernate里面存在一个缓存(cahe)机制,一级缓存和二级缓存,当从数据库中读取数据的时候会存储两份,一份给用户,一份自己留着,这样,下次访问的时候就不用去连接数据库,直接从缓存中读取,效率大大提高。

3jdbc连接数据库是强制性的,每次都会去连接,只要输入url之后就会连接,而hibernate是手动连接,手动提交的。

dao太简单我就不说了,希望能帮到你。

persistentxml配置

<xml version="10" encoding="UTF-8">

<persistence xmlns=">

hibernate自身的缓存问题,查询数据时hibernate将查询出的数据保存起来,当你的第二次查询语句与上次的一样,hibernate就不会去数据库中查询,而是直接把保存的数据拿出来用,所以就导致了查询结果与数据库不一致的问题。解决办法是不用缓存

以上就是关于我刚准备学java web,请教下大神们jsp,js,servlet,structs,spring,Hibernate之间都有什么关系全部的内容,包括:我刚准备学java web,请教下大神们jsp,js,servlet,structs,spring,Hibernate之间都有什么关系、Hibernate 3的新特性 Event-listener 的详细实用、请问下,jdbc和hibernate有什么区别啊,二者都是持久层框架吗,跟DAO又有什么区别呢,请指点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9354008.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存