Java个人技术知识点总结(框架篇)

4.chain:将action和另外一个action链接起来

5.freemarker:呈现Freemarker模板

6.httpheader:返回一个已配置好的HTTP头信息响应

7.stream:向浏览器发送InputSream对象对下载的内容和图片非常有用

8.velocity:呈现Velocity模板

9.xslt :该XML可以通过XSL模板进行转换

10.plaintext:显示原始文件内容,例如文件源代码

Struts2标签

首先需要引用<%@taglib prefix=“s” uri=“/struts-tags”%>

1.判断标签 后面可跟 <s:else>

2. 迭代标签

3.引入标签 可以把一个JSP页面或者servlet引入一 个页面中

4.输出标签

5.标签赋予变量一个特定范围内的值

6.表单标签

7.文本域标签

8.下拉标签

9.声明一个url的路径

最常用的是:

判断

循环

输出

SSI整合

1、Action继承于Actionsupport

2、引入struts-spring-plugin.jar包,从而完成struts和spring的整合

3、在struts2的action中注入service,保证service的名字和配置文件中的一致, 并生成get,set方法

4、Dao层继承于SqlMapClientDaoSupport

5、在dao层的配置文件中注入sqlMapClient

SSH整合

1.首先在web.xml中通过ContextLoaderListener来融入spring,

并加载spring的相关配置文件

2.同样配置sturts2的前端总控制器filterDispatcher来过滤相关的

请求并且加载struts.xml

3.action继承ActionSupport,然后通过引入struts-spring-plugin.jar

包并且根据配置文件中service的id生成get,set方法来注入service层。

4.dao层继承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory.

5.通过spring中的配置文件加载hibernate.cfg.xml文件从而融入hibernate.

在ssh框架中是怎么整合spring?

首先在web.xml中通过ContextLoaderListener来融入spring,

并加载spring的相关配置文件

在ssh框架中是怎么整合hibernate?

通过spring中的配置文件加载hibernate.cfg.xml文件从而融入hibernate

dao层继承于HibernateDaoSupport,并且在dao的配置文件中注入sessionFactory

在ssh框架中是怎么整合struts2?

配置sturts2的前端总控制器filterDispatcher来过滤相关的

请求并且加载struts.xml

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

Spring MVC整合

1.首先,要在web.xml里面配置SpringMVC的核心控制器,DispatcherServlet,对指定的后缀请求进行拦截。

2.Controller层要加 @Controller注解,表明该类是MVC的控制层。

3.创建Service接口,给接口加上注解 @Component或者 @Service 表明这是Service业务处理层

4.在Controller层声明Service变量(属性),给变量(属性) 加上 @Autowired注解,通过自动绑定机制将Service注入到Controller。 (:@Autowired默认是ByType,如果想根据属性名注入,那么就再加上注解 @Resource(name=“属性名”))

5.在Controller层的方法上加上注解 @RequestMapping(“requestAddress”) 表明该方法的请求地址

6.Dao层要加上注解 @Repository 表明这是数据库持久层

7.同样将dao实例注入到service层中。

8.配置视图解析器 “InternalResourceViewResolver”,对处理后的跳转进行统一配置。

H****ibernate中get 和 load的区别

加载方式:

load为延迟加载(返回的是一个只有id属性的代理,只有使用该对象属性时,才 发出sql语句);

get为立即加载(执行时,会立即向数据库发出sql语句)

返回结果:

load检索不到记录时,会抛ObjectNotFoundException异常

get检索不到记录时,会返回null

Hibernate、Ibatis、Jdbc三者的区别

Hibernate属于全自动, Ibatis属于半自动,Jdbc属于手动,从开发效率上讲hibernate较高,ibatis居中,jdbc较低,从执行效率上讲hibernate较低,ibatis居中,jdbc较高,因为jdbc是手工写sql语句,程序员对sql的控制能力更大,可以根据业务需要进行优化,而ibatis虽然也可以对sql进行优化,但是他里面将resultset封装为实体的过程中采用了反射机制所以一定程度上影响了性能,而hibernate因为高度封装所以开发效率相对较高,但正因为这个原因,所以程序员在对sql语句的控制和优化方面相对比较弱,而且在将resultset封装成实体的过程中也采用了反射机制,所以在性能方面较低

Hibernate的运行原理

首先通过configuration去加载hibernate.cfg.xml这个配置文件,根据

配置文件的信息去创建sessionFactory,sessionFactory是线程安全的,

是一个session工厂,用来创建session,session是线程不安全的,相当于

jdbc的connection,最后通过session去进行数据库的各种操作,在进行操作

的时候通过transaction进行事务的控制。

Hibernate五大核心(类/接口)简述

1 .Configuration接口的作用是对Hibernate进行配置,以及对它进行启动。(加载 hibernate.cfg.xml)并创建一个SessionFactory对象。

2 .SessionFactory接口

SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建 Session对象。SessionFactory是线程安全的。

3 .Session接口

Session(会话)接口是Hibernate应用使用的主要接口。Session接口负责执行被持久化对象的CRUD操作(增删改查)。Session对象是非线程安全的。Session 相当于jdbc的connection

4 .Query与Criteria接口

总之Query和Criteria接口负责执行各种数据库查询。

5 .Transaction接口

Transaction(事务)负责操作相关的事务。

Hibernate与JDBC的区别

[if !supportLists]1、[endif]hibernate和jdbc主要区别就是,hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库.

[if !supportLists]2、[endif]Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。Hibernate可以用在任何JDBC可以使用的场合

[if !supportLists]3、[endif]Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。

4、如果正确的使用JDBC技术,它的执行效率一定比hibernate要好,因为hibernate是基于jdbc的技术.

5、JDBC使用的是SQL语句,Hibernate使用的是HQL语句,但是HQL语句最终还会隐式转换成SQL语句执行。

Hibernate中的两大配置文件

*.hbm.xml:主键生成策略,映射关系,一对多,一对一的关系。

Hibernate.cfg.xml:方言(用哪个数据库),数据库连接信息,包含*.hbm.xml内容,映射 文件,也可以配事务。

Hibernate事务处理

开启事务session.beginTransaction();

执行相关的操作,如果成功则session.getTransaction().commit();

执行操作失败则session.getTransaction.rollback();

H****ibernate的三种状态以及状态的转换

Transient(临时)

new一个初始化对象后,并没有在数据库里保存数据,处于临时状态;

Persistent(持久化)

当执行save()方法,调用session.close()方法之前,内存中的对象与数据库有           对应关系处于持久化状态;

Detached(托管/游离)

当执行session.close()之后,处于托管状态;

状态的转换

处于托管状态下,调用update()方法后,转换为持久化状态;

在持久化状态下,执行delete()方法后,转换为临时状态;

在未初始化对象之前,调用get(),load(),find(),iterate()之后,直接进入持久化   状态。

分页步骤

①前台封装一个显示分页的组件

②查询总条数

③后台封装分页工具类,计算开始位置、结束位置、总页数

④后台写支持分页的sql语句

⑤前台包含分页组件,实现分页效果

注意:

查询总条数的where和查询列表信息的where条件要保证一致。

hibernate缓存概述

hibernate分为一级缓存即session缓存也叫事务级别的缓存以及

二级缓存sessionFactory即应用级别的缓存,还有查询缓存即三级缓存.

一级缓存的生命周期和session的生命周期保持一致,

hibernate默认就启用了一级缓存,

不能将其关闭,可以通过session.clear()和session.evict(object)来管理一级缓存。其中get,load,iterate都会使用一级缓存,一级缓存缓存的是对象。

二级缓存的生命周期和sessionFactory的生命周期保持一致,可以跨session,被多个session共享,hibernate3默认开启二级缓存,也可以手动开启并指定缓存插件如ehcache,oscache

等。二级缓存也只能缓存对象。

三级缓存也叫查询缓存,查询缓存是针对普通属性结果集的缓存,

对实体对象的结果集只缓存id。对query.list()起作用,query.iterate不起作用,也就是query.iterate不使用查询缓存

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

Ssh的概述:

ssh是web开发中常见的一种框架

s-struts2

s-spring

h-hibernate

其中struts2在框架中充当控制器,实现MVC,主要用来处理用户的请求,和跳转页面。使项目结构清晰,开发者只需要关注业务逻辑的实现即可。

spring在ssh充当粘合剂,粘合struts-sping-hibernate,主要用来进行事物的控制,

hibernate-充当数据库持久层,主要用它来与数据库交互,提高开发效率,减轻程序员sql控制要求,而且hibernate通过反射机制,有灵活的映射性,还支持各种关系,一对一,一对多,多对多。

在进行ssh整合的时候,我们应该注意:

1. Action继承于ActionSupport

引入struts-spring-plugin.jar包,从而完成struts和spring的整合

在struts2的action中注入service,保证service的名字和配置文件中的一致,并生成get,set方法

Dao层继承于hibernateDaoSupport

在dao层的配置文件中注入sessionFactory

防止表单重复提交

针对于重复提交的整体解决方案:

1.用redirect来解决重复提交的问题

2.点击一次之后,按钮失效

3.通过loading

4.自定义重复提交过滤器

5.解决struts2重复提交

可以结合s:token标签来解决重复提交问题

利用token的原理:

1.在前端的jsp页面中加入s:token标签,在访问该页面时就会生成

隐藏域,该隐藏域中包含一个随机生成的字符串,并把该字符串

存入session中

2.在struts2的配置文件中加入token拦截器后,当正常访问action

的时候,会从session中取出该字符串,然后和页面隐藏域中提交

字符串做对比,如果一致则正常执行并删除session中存储的字符串。

JSP标签:

1.JSP  include动作

jsp:include动作

以“<jsp: 动作名 ” 开始,以“</jsp:动作名>  ” 结束

比如:

2.JSP指令:<%@ include%><%@   %>

以“<%@ ” 开始,以“%> ” 结束。比如:

<%@ include file = " Filename" %>

3.JSP输出表达式:<%= %><%=Java表达式 %>

输出变量的值,后边不能加<%= ; %>

4.JSP Scriptlet【脚本】:<% ;%>  <% Java 代码 %>

例子:

<% Calendar now = Calendar.getInstance(); %>

5.JSP声明:<%! %> <%! 函数或者方法 %>

例子:

<%!

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

以“%> ” 结束。比如:

<%@ include file = " Filename" %>

3.JSP输出表达式:<%= %><%=Java表达式 %>

输出变量的值,后边不能加<%= ; %>

4.JSP Scriptlet【脚本】:<% ;%>  <% Java 代码 %>

例子:

<% Calendar now = Calendar.getInstance(); %>

5.JSP声明:<%! %> <%! 函数或者方法 %>

例子:

<%!

技术学习总结

学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。

[外链图片转存中…(img-UjxmAUWJ-1714333093328)]

[外链图片转存中…(img-eyrYL3fT-1714333093329)]

[外链图片转存中…(img-aiR1Brcz-1714333093329)]

最后面试分享

大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!

[外链图片转存中…(img-b9K9XZFr-1714333093329)]

[外链图片转存中…(img-h4cYOLHM-1714333093330)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值