struts2、hibernate、spring

本文详细介绍了SSH三大框架的核心组件和工作原理。Struts2中,重点讲解了配置文件、核心控制器、拦截器的实现方式及运行流程。Hibernate作为ORM框架,介绍了其操作数据库的核心类、关联关系、事务管理和主键生成策略。Spring作为粘合剂,解释了其IOC/DI和AOP的概念,并涉及事务管理。同时,还涵盖了SSH框架的搭建步骤和文件上传注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts 
1. struts2配置文件是(struts.xml)


2. struts2核心控制器是(FilterDispatcher)


3. struts2配置文件中Action标签的class属性值是(action类的全名)
name属性的值是(代表Action的名称 从前台访问时的路径)


4. struts2配置文件中result标签的属性值 默认是(dispatcher)
重定向的值是(redirect)


5. Struts2自定义拦截器的三种实现方式
1) 实现 接口  Interceptor
2) 继承 抽象类  AbstractInterceptor 重写intercept方法
3) 继承 MethodFilterInterceptor类


6.struts2 的 运行原理
1. tomcat 启动加载Web.xml ,核心控制器FilterDispatcher 加载并解析 struts.xml
2. 客户端 发出请求到 Action ,FilterDispatcher 根据后缀名拦截
3. FilterDispatcher  根据 struts.xml配置文件信息 找到 指定的 Action方法
4. 执行相关的业务逻辑后 返回字符串
5. 根据返回字符串,在 struts.xml的<result>的name属性的值,进行匹配跳转到指定的
jsp或重定向到其他Action


7. 精确匹配和 模糊匹配的 区别
1. 精确匹配
struts.xml中  Action 配置 method属性  属性的值 是Action类中的某一个方法
前台访问时   Action名称.action
缺点: 配置繁琐  action类中的每一个方法 都需要  配置一个 <Action> 标签
优点: 分工明确  一个配置发生错误 不会影响其他 Action的运行
2. 模糊匹配
struts.xml中,Action配置name值时通过通配符*,配置请求的格式; 
class 和 method通过 {数字} 的方式 引用 name中通配符信息
前台访问时   按Action中定义的规则.action 去访问
缺点: 如果配置错误 所有的 Action 都不能使用
优点: 配置文件中  需要配置的 <action> 会变少  


8. struts2 简述
struts2 是一个MVC框架 基于WebWork 发展而来.属于控制层框架。
负责jsp页面和java代码之间的值的传递和跳转
核心控制器是FilterDispatcher 2.1.2 版本前含2.12 
从2.1.3版本开始用 StrutsPrepareAndExecuteFilter代替了。


9.Struts2中action要继承哪个类(ActionSupport)


10.Struts2 标签
1)迭代标签(<s:iterator>)
2)判断标签(<s:if>)
3)取值标签(<s:property>)
4)格式化日期标签(<s:date>)


hibernate
简介:Hibernate是orm的一个具体体现,它对jdbc进行了轻量级的封装,是连接面向对象编程与关系型数据库之间的桥梁,
        操作对象从而操作数据库,在项目中充当持久层,具有跨数据库的特性。
1.Mysql的默认端口号是(3306)

2.Mysql中的分页关键词是(limit)


4.Hibernate中表与表之间关联关系有
(一对一 one-to-one)、
(一对多 one-to-many)、
(多对多 many-to-many)


5.Hibernate中的五大核心类和接口
Configuration(类) :  
加载配置文件hibernate.cfg.xml文件中的配置信息,从而得到:
1).hibernate的底层信息:
数据库连接,jdbc驱动,方言(dialect),用户名 ,密码
2).hibernate的映射文件(*.hbm.xml)
SessionFactory(接口):
通过configuration创建的sessionFactory,
可以用来获得session    
sessionFactory是线程安全的,
里面保存了数据的配置信息和映射关系
Session(接口):
不是线程安全的,
相当于jdbc中connection,
我们可以使用session来操作数据库
Transaction(接口):
我们一般使用Transaction来进行事务的管理commit(提交)rollback(回滚)
Query(接口):
我们一般用来进行数据的查询操作


6.Hibernate中两种占位符是(?)和(:变量名)


7.Hibernate中query对象的常用方法
( executeUpdate() )方法对数据进行修改或者删除
( uniqueResult() )方法返回单条记录
( setFirstResult() )方法设置结果集开始位置
( setMaxResults() )方法设置每页条数
( list() ) 方法返回插叙结果集


8. Hibernate中session 对象的常用方法有
find();  返回list结果集
save();  添加
saveOrUpdate();  添加或修改  有id是修改 没id 是更新
delete(); 删除
update(); 修改
get(); 根据唯一标识获得 对象0
load();根据唯一标识获得 对象  延迟加载


9. get 和 load 的区别
1).load是延迟加载(懒加载,按需加载)调用load方法后不会立即发送SQL语句,
当访问实体属性的时候才会去发送SQL语句,如果访问的实体不存在,
则返回ObjectNotFoundException(对象不存在异常)
2).get是立即加载,当调用get方法后立即发送sql语句,
当访问的实体不存在的时候,则返回null
  注意:
load支持懒加载通过lazy=“true”设置,
如果lazy=“false”,则load不再进行懒加载
默认情况下lazy=“true”


10. hibernate配置文件设置方言的关键字(dialect)


11.Hibernate中两种事务类型分别是(jdbc事务)、(JTA事务)

12. 五个hibernate主键生成策略并分别描述
Increment(因扣梦特):先查询出最大id,在此基础上加1;hibernate框架会自动处理
Sequence(谁扣嗯次)(Orade) :oracle 数据库会自动处理
    Assigned(额赛特):人工指派(重复插入数据时会违反数据唯一性)
    native(内忒无)(数据库本地生成策略,适用多个数据库)
适用于mysql.oracle,sqlserver,
如果是orade数据库则默认使用的序列名为hibernate-sequence
    uuid:生成一个32位,不会重复的主键,可以达到真正的跨数据库
(通常来说对应的应该是string数据类型)


13. jdbc和hibernate的区别
hibernate是jdbc轻量级的封装,hibernate基于jdbc
jdbc
jdbc是纯手工的(sql语句,对于结果集的解析)
执行效率高于hibernate,
使用的sql语句,
jdbc是直接操作数据库中的表  select * from 表名
hibernate
hibernate是全自动的(将常用方法进行了封装,
不用手动进行结果集的解析)
hibernate是跨数据库的,
hibernate的开发效率高于jdbc,
hibernate使用的hql语句,
但是在最后操作数据库是hql语句会转化成sql语句去执行,
hibernate操作的是对象    from  类名 


14. hibernate的三种状态
transient['trænzɪənt](临时状态):
在创建对象即在new之后,在save之前的状态:
session中和数据库中都不存在该数据
persistent[pə'sɪst(ə)nt](持久化状态):
在save之后,session关闭之前,
session中和数据库中都存在对应的数据
detached[dɪ'tætʃt](托管状态/游离状态):
session关闭之后,session不存在,
数据中有对应的数据

15. hibernate 运行原理
通过configuration加载了hibernate.cfg.xml文件,
加载文件后得到sessionFactory,(sessionFactory是线程安全的) 
然后通过sessionFactory得到session(session是线程不安全的,相当于jdbc中connection)
通过session操作对象,来操作数据库,最后通过Transaction来进行事务的控制




Spring
1.spring概述
spring 就相当于一个粘合剂。
有两个核心,分别是IOC/DI(控制反转/依赖注入)
AOP(面向切面编程/面向方面编程)完全面向接口设计,
主要用来进行bean实例的创建注入(IOC/DI),
以及进行事务的管理(AOP)


2、spring中自动注入的两种方式分别是(byName)和(byType)


3、ioc的两种注入方式(属性注入)和(构造方法注入)


4、Spring中的容器是(ApplicationContext)和(BeanFactory)


5、spring中通过(scope)属性设置属性值为(singleton)来设置单例,
设置属性值为(prototype)来设置多例


6、bean注入时,引用数据类型通过(ref)属性或标签赋值


7、aop通过(read-only=true)配置只读事务


8. spring 控制事务的aop的切点应该控制在 (service)层 


9. spring 配置文件是(applicationContext.xml)

10.阐述事务四大特性
1).原子性
    原子性是指事物是一个不可分割的工作单位,
事务中的操作要么都不发生,要么都发生
2).一致性
    事务必须使数据库从一个一致性状态变换到另一个一致性状态(数据不被破环)
    3).隔离性
事务的隔离性是指一个事务的执行不能被其他事务干扰
4).持久性
    持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的




SSH 框架
1. SSH框架的搭建步骤
1):首先在web.xml中通过contextLoaderListener来融入spring
并加载sping相关配置文件
2):同样配置struts2前端总控制器filterDispatcher来过滤相关的请求
并加载struts.xml
3):action继承ActionSupport 然后引入struts-spring-plugin.jar包
并在配置文件中注入service 提供get set 方法
4):通过spring配置sessionFactory 读取hibernate.cfg.xml 数据库信息
5):dao层继承HibernateDaoSupport 在spring配置文件中dao注入sessionFactory


2. 文件上传注意事项
1) 表单中必须添加属性 enctype="multipart/form-data" 
2) action 中接收 文件的属性有两个
1: File 类型的 属性 接收文件实体
2: String类型的文件名 属性 接收 文件名信息
注意 :接收文件名的属性名称 是 接收File实体的属性名称+FileName ;
3) 数据库中存储的 是上传后的路径
4) 前台回显时 是哟虚拟路径+数据库存储的文件路径
首先非常感谢大家的评价啊!刚才还看到有人在下我的那个1.0版本.呵呵.这次设了一个资源分.(不高吧.)<br><br><br>更新历史:2.0<br>^_^.新写了一个版本.<br> 更新内容为:<br> 换掉了原来的数据库表结构.原来的是一个简单的用户表增删改查.主要是为了引入时间等字段,来试验一下struts2的时间标签是否好用.这次为了做成一个好点的实例.所以换掉了表结构.为歌词表.并附带2万首歌词的数据库.因为歌词插入数据太大.所以单另上传了.如果不需要这两万条数据的朋友可以光下该实例就好了.如果需要记录.则可以去下载记录集.(下载地址:http://download.csdn.net/source/513063)<br>create table HUBO_MUSIC<br>(<br> ID VARCHAR2(32) not null,<br> SINGER VARCHAR2(100),<br> MUSICNAME VARCHAR2(200),<br> LYRIC VARCHAR2(4000)<br>)<br><br> 优化了界面布局.(第一个写的是太丑了一点.)<br> 优化了action的相关方法逻辑和接口方法.<br> 更加好理解和清晰结构.增加了页面分页和后台分页方法<br> (如果看了我第一个例子的朋友.应该看到我在service层的find方法上的注释.说当前版本因为原来使用find方法是从代理中取.spring默认的数据持久话只能包含业务层和数据层.不能包含界面层.所以用find方法会导致session失效.故用get方法.现在这个问题已经解决.其实就是把原web.xml中的最后的过滤器代码移到最顶端就可以了.具体查看代码)<br>更多内容可以关注我新建立的博客:http://blog.csdn.net/wuxinfengjing<br>我也是初学拉.就只是为了大家共同进步.<br><br><br><br>原1.0版本说文文字:<br>注:本代码为个人所写.全当练习使用.愿所有人能够更好地学习软件.愿意与所有软件爱好者成为好友.<br>邮箱:menxin32@163.com<br>当前版本1.0<br>包含内容:一个用户表格的增删改查实现.<br> 基本的七层分层框架.<br> 内写多个公共类.为了日后可以很好的解耦合.<br> 注释清晰.<br> 项目结构采用纯eclipse结构.可以直接导入.<br><br>查看说明:<br>当前只是自己看struts2的一点点资料随便写的一个简单的增删改查程序.全当给所有打算使用struts2却没有接触过的人一个入门而已.我也是初看.2天而已.所以各位高手就不要笑话了.愿大家都能成为高手.<br><br><br>项目发布以后的第一个页面是登陆.后台代码没有写相关的验证代码.并不是读取数据库来登陆的.只要名字是admin就可以了.登陆过后就是用户列表.然后就可以实现与数据库的增删改查.项目使用7层分层框架.数据库连接配置文件是/s2sh/src/目录下面的jdbc.properties文件.直接配置即可.<br><br>以下是一些相关说明.<br><br><br>数据库脚本<br>create table HUBO_USER<br>(<br> ID VARCHAR2(32) not null,<br> NAME VARCHAR2(100),<br> BIRTHDAY DATE,<br> PASSWORD VARCHAR2(100),<br> EMAIL VARCHAR2(100),<br> REMARK VARCHAR2(500)<br>)<br><br>为了减小上传.所以没有上传导入的jar,其实就是默认的struts2hibernate以及spring的包.该项目使用的jar包为以下.<br>spring-beans.jar <br>xwork-2.0.4.jar <br>spring-context.jar <br>ognl-2.6.11.jar <br>spring-web.jar <br>spring-core.jar <br>struts2-core-2.0.11.1.jar <br>commons-logging-1.0.4.jar <br>freemarker-2.3.8.jar <br>struts2-spring-plugin-2.0.11.1 <br>antlr-2.7.5H3.jar <br>asm.jar <br>asm-attrs.jar <br>cglib-2.1.3.jar <br>commons-collections-2.1.1.jar <br>dom4j-1.6.1.jar <br>ehcache-1.1.jar <br>hibernate3.jar <br>jaas.jar <br>jaxen-1.1-beta-7.jar <br>jdbc2_0-stdext.jar <br>jta.jar <br>log4j-1.2.11.jar <br>xerces-2.6.2.jar <br>xml-apis.jar <br>c3p0-0.9.0.jar <br>concurrent-1.3.2.jar <br>connector.jar <br>jboss-cache.jar <br>jboss-common.jar <br>jboss-jmx.jar <br>jboss-system.jar <br>jacc-1_0-fr.jar <br>jgroups-2.2.8.jar <br>oscache-2.1.jar <br>proxool-0.8.3.jar <br>swarmcache-1.0rc2.jar <br>classes12.jar <br>spring.jar <br>spring-aop.jar <br>spring-dao.jar <br>spring-hibernate.jar <br>spring-jdbc.jar <br>spring-mock.jar <br>spring-orm.jar <br>spring-remoting.jar <br>spring-support.jar <br>spring-webmvc.jar <br>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值