SSH面试题摘抄

来源:互联网 发布:手机淘宝助理安卓版 编辑:程序博客网 时间:2024/04/29 00:48

Hibernate

Struts2

1)Struts2如何启动
Struts2是通过web.xml中的过滤器StrutsPrepareAndExecuteFilter启动的,Tomcat服务器启动的时候,会执行一次StrutsPrepareAndExecuteFilter里面的init方法,加载struts.xml配置文件,将配置文件的内容封装为javabean存放在内存中,以后用户请求将会读取内存,读取数据,而不用每次都在struts.xml中读取。
2)Struts2的核心控制器StrutsPrepareAndExecuteFilter的作用
StrutsPrepareAndExecuteFilter 主要负责拦截 url请求,可以在web.xml中配置拦截的url,/*代表拦截所有的请求,执行doFilter方法默认情况下,如果用户请求的路径 不带后缀或者后缀以.action结尾,这时请求将被转入struts2框架处理,否则struts2框架将略过该请求的处理。
3)struts2配置文件的加载顺序?
struts.xml ——> struts.properties常量可以在struts.xml或struts.properties中配置,如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值. struts.xml文件的作用:通知Struts2框架加载对应的Action资源
4)struts2是如何管理action的?这种管理方式有什么好处?
struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的。 主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
5)struts2中的默认包struts-default有什么作用?
1.struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从请求中 把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使用struts2为我们提供的这些功能。
2.struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。
3.通常每个包都应该继承struts-default包。
6)struts2的action的URL访问路径由什么构成?
由两部分组成:包的命名空间+action的名称 [ + action的后缀 ],/crud1/userAdd.action,crud1是命名空间,userAdd是struts.xml中配置的action的名称。
7)在struts.xml中可以不为action指定class属性吗?struts2中有哪些默认的属性?
可以,如果没有为action指定class,默认是com.opensymphony.xwork2.ActionSupport
默认属性:
如果没有为action指定class ActionSupport

如果没有为action指定method execute() 注意:ActionSupport的execute方法里面就一句话return “success”;
如果没有指定result的name success
如果没有指定result的type dispatcher
action中默认都有一个拦截器的引用,即:;
注意:
1.一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用,所以此时要显式的引进默认的拦截器;
2.每个包只能指定一个默认拦截器,每个默认拦截器只针对当前包下有效。
8)struts2如何对指定的方法进行验证?
1.validate()方法会校验action中所有与execute方法签名相同的方法;
2.要校验指定的方法通过重写validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写;
3.当某个数据校验失败时,调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport),如果系统 的fieldErrors包含失败信息,struts2会将请求转发到名为input的result;
4.在input视图中可以通过显示失败信息。
5.先执行validateXxxx()->validate()->如果出错了,会转发所指定的页面,如果不出错,会直接进行Action::execute()方法.
9)拦截器的作用?拦截器与过滤器的区别?
1)拦截器是对调用的Action起作用,它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码。拦截器只能拦截Action,说明白点拦截器其实是Action的功能块,只在Action前后执行。拦截器可以抽象出一部分代码可以用来完善原来的action。同时可以减轻代码冗余,提高重用率。
2) 过滤器是拦截用户请求的,范围明显比拦截器大的多。
10)struts2如何完成从html表单到action的类型转换?
1.在 struts2 中, 把请求参数映射到 action 属性的工作由 Params拦截器负责, 它是默认的 defaultStack 拦截器中的一员. Params拦截器可以自动完成字符串和基本数据类型之间转换.
2.在web应用中,提交的数据基本都是字符串。
3. 对于引用类型的数据(除String、Collection)转换,需要自定义类型转换器;
4.自定义类型转化器必须实现TypeConverter 接口或对这个接口的某种具体实现做扩展,如:StrutsTypeConverter,重写convertToString和convertFromString方法;
5.两种自定义类型的转换器:

局部:
创建一个属性文件: ActionClassName-conversion.properties, 该文件需和相对应的动作类(Action)放在同一个目录下, ActionClassName是Action的类名,后面的-conversion.properties 是固定写法。在properties文件中的内容为: 属性名称=类型转换器的全类名
全局:
在 WEB-INF/classes/ 目录下创建 xwork-conversion.properties 文件. 在properties文件中的内容为: 待转换的类型=类型转换器的全类名
注意:对于转换的是属性,只需要写属性名,如果是对应的是类型,则需要写全类名
11).struts2如何防止用户表单重复提交?
第一步:在表单中加入
第二步,使用token栏截器,定义invalid.token结果集
要使用 必须要在struts.xml的action中引用token的预定义拦截器。

当然还可以使用tokenSession

12).struts2如何完成文件的上传?
1、JSP页面:
JSP页面的上传文件的组件:,如果需要一次上传多个文件, 就必须使用多个 file 标签, 但它们的名字必须是相同的,即:name=“xxx”的值必须一样;
2. 必须把表单的enctype属性设置为:multipart/form-data;
3.表单的方法必须为post,因为post提交的数据在消息体中,而无大小限制。
对应的action:
4.在 Action 中新添加 3 个和文件上传相关的属性
5.如果是上传单个文件, uploadImage属性的类型就是 java.io.File, 它代表被上传的文件, 第二个和第三个属性的类型是 String, 它们分别代表上传文件的文件名和文件类型,定义方式是分别是:jsp页面file组件的名称+ContentType, jsp页面file组件的名称+FileName
6如果上上传多个文件, 可以使用数组或 List

Spring

目录
一、Spring工作原理
二、为什么要用Spring
三、请你谈谈SSH整合
四、介绍一下Spring的事务管理
五、什么是依赖注入,依赖注入的作用是什么?
六、什么是AOP,AOP的作用是什么?
七、Spring中的BeanFactory与ApplicationContext的作用有哪些?
八、连接池
九、跨库事务
十、Spring框架的7个模块

一、Spring MVC工作原理
1. 客户端请求提交到DispatcherServlet
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端

二、为什么要用Spring
1、Spring能很好的与各大框架进行集成
2、创建对象时,如果我们不用spring需要用工厂模式来创建,这个spring相当于工厂模式已经帮我们做了创建对象的功能(IOC、依赖注入)。
3、在用Hibernate的时候,如果不用spring每次都要写事务的提交代码,有了spring可以通过AOP帮助我们管理事务
4、面向切面编程(AOP)在要记录日志的时候添加一条记录后需要在数据里同时添加一条添加成功了或失败的记录,那么就可以用Spring的Aop来处理,虽然不用Aop也能做但是不用Spring的Aop就会写很多重复的代码。

三、请你谈谈SSH整合
SSH:Struts(表示层)+Hibernate(持久层)+Spring(业务层)
a、Struts
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
b、Hibernate
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
c、Spring
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

四、介绍一下Spring的事务管理
事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。
开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管理,可以通过Spring的注入来完成此功能。

声明式事务 使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
事务的隔离级别:
数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;
· Read Uncommitted 读未提交数据;(会出现脏读)
· Read Committed 读已提交数据;
· Repeatable Read 可重复读;
· Serializable 串行化
事务的传播属性包括:
· Required 业务方法需要在一个事务中运行,如果一个方法运行时已经处在一个事务中,那么加入到该事务,否则为自己创建一个新事务,80%的方法用到该传播属性;
· Not-Supported· Requiresnew· Mandatoky· Supports· Never· Nested

五、什么是依赖注入,依赖注入的作用是什么?
IOC是一种思想,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

依赖注入的作用:减少类间耦合度,避免用new来创建对象

六、什么是AOP,AOP的作用是什么?
AOP,面向切面编程,就是把可重用的功能提取出来,然后将这些通用功能在合适的时候织入到应用程序中,比如事务管理、权限控制、日志记录、性能统计等。

AOP的作用
AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,使得系统更加健壮,可维护性更好。

七、Spring中的BeanFactory与ApplicationContext的作用有哪些?
1、BeanFactory负责读取bean的配置文件,管理bean的加载、实例化,维护bean之间的依赖关系,负责bean的生命周期。
2、ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了更完整的框架功能:
a. 国际化支持
b. 资源访问
c. 事件传递

八、连接池
c3p0、dbcp

九、跨库事务
Atomikos、jotm

十、Spring框架的7个模块
这里写图片描述
spring frame work
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。
BeanFactory 使用控制反转 (IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
**Spring ORM:**Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
**spring Web 模块:**Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。

0 0