JAVA框架面试题汇总.docx

上传人:b****6 文档编号:5626302 上传时间:2022-12-29 格式:DOCX 页数:9 大小:279.31KB
下载 相关 举报
JAVA框架面试题汇总.docx_第1页
第1页 / 共9页
JAVA框架面试题汇总.docx_第2页
第2页 / 共9页
JAVA框架面试题汇总.docx_第3页
第3页 / 共9页
JAVA框架面试题汇总.docx_第4页
第4页 / 共9页
JAVA框架面试题汇总.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

JAVA框架面试题汇总.docx

《JAVA框架面试题汇总.docx》由会员分享,可在线阅读,更多相关《JAVA框架面试题汇总.docx(9页珍藏版)》请在冰豆网上搜索。

JAVA框架面试题汇总.docx

JAVA框架面试题汇总

JAVA框架面试题汇总

1.SpringMVCFramework的理解:

1、它是基于组件技术的.全部的应用对象,无论控制器和视图,还是业务对象之类的都是java组件。

而且和Spring提供的其它基础结构紧密集成

2、不依赖于ServletAPI(目标虽是如此,可是在实现的时候确实是依赖于Servlet的)

3、能够任意使用各种视图技术,而不但仅局限于JSP

4、支持各种请求资源的映射策略

5、它应是易于扩展的

2.简单的谈一下SpringMVC的工作流程?

流程 

1、用户发送请求至前端控制器DispatcherServlet 

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

 

3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

 

4、DispatcherServlet调用HandlerAdapter处理器适配器 

5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

 

6、Controller执行完成返回ModelAndView 

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 

9、ViewReslover解析后返回具体View 

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

 

11、DispatcherServlet响应用户

 

3.如何解决POST请求中文乱码问题,GET的又如何处理呢?

在web.xml中加入:

1.

2.CharacterEncodingFilter

3.org.springframework.web.filter.CharacterEncodingFilter

4.    

5.        encoding

6.      utf-8

7.    

8.

9.

10.    CharacterEncodingFilter

11.    /*

12.

以上能够解决post请求乱码问题。

对于get请求中文参数出现乱码解决方法有两个:

修改tomcat配置文件添加编码与工程编码一致,如下:

 另外一种方法对参数进行重新编码:

StringuserName= new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码

 

4.SpringMVC与Struts2的主要区别?

1、springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。

2、springmvc是基于方法开发,传递参数是经过方法形参,能够设计为单例或多例(建议单例),struts2是基于类开发,传递参数是经过类的属性,只能设计为多例。

 

3、Struts采用值栈存储请求和响应的数据,经过OGNL存取数据,springmvc经过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据经过request对象传输到页面。

Jsp视图解析器默认使用jstl。

 

5.SpringMVC接受Form表单参数的几种形式?

1、使用HttpServletRequest获取

2、Spring会自动将表单参数注入到方法参数,和表单的name属性保持一致。

3、自动注入Bean属性

6.SpringMVC的Controller向页面传值的几种方式?

1、使用HttpServletRequest和HttpSession调用setAttribute(),就和Servlet中一样

2、使用ModelAndView对象

3、使用ModelMap对象

4、使用@ModelAttribute注解

7.SpringMVCcontorller跳转到另一个controller并传值

1、 forward请求转发

2、redirect重定向RedirectAttributes类似于超链接传参

 

---------------------------------------------------------------------

1、讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么

SpringMvc的是DispatchServlet

Struts1的是ActionServlet

Struts2的是StrutsPrepareAndExecuteFilter

2、SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

是单例模式,因此在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,1.不要在controller中定义成员变量。

2.万一必须要定义一个非静态成员变量时候,则经过注解@Scope("prototype"),将其设置为多例模式。

参考:

3、SpingMvc中的控制器的注解一般用那个,有没有别的注解能够替代

一般用@Conntroller注解,表示是表现层,不能用用别的注解代替。

4、@RequestMapping注解用在类上面有什么作用

用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

5、怎么样把某个请求映射到特定的方法上面

直接在方法上面加上注解@RequestMapping,而且在这个注解里面写上要拦截的路径

6、如果在拦截请求中,我想拦截get方式提交的方法,怎么配置

能够在@RequestMapping注解里面加上method=RequestMethod.GET

7、如果在拦截请求中,我想拦截提交参数中包含”type=test”字符串,怎么配置

能够在@RequestMapping注解里面加上params=”type=test”

8、我想在拦截的方法里面得到从前台传入的参数,怎么得到

直接在形参里面声明这个参数就能够,但必须名字和传过来的参数一样

9、如果前台有很多个参数传入,而且这些参数都是一个对象的,那么怎么样快速得到这个对象

直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面

10、怎么样在方法里面得到Request,或者Session

直接在方法的形参中声明request,SpringMvc就自动把request对象传入

11、SpringMvc中函数的返回值是什么.

返回值能够有很多类型,有String,ModelAndView,当一般用String比较好

12、SpringMvc怎么处理返回值的

SpringMvc根据配置文件中InternalResourceViewResolver的前缀和后缀,用前缀+返回值+后缀组成完整的返回值

13、SpringMVC怎么样设定重定向和转发的

在返回值前面加”forward:

”就能够让结果转发,譬如”forward:

user.do?

name=method4”在返回值前面加”redirect:

”就能够让返回值重定向,譬如”redirect:

14、SpringMvc用什么对象从后台向前台传递数据的

经过ModelMap对象,能够在这个对象里面用put方法,把对象加到里面,前台就能够经过el表示式拿到

15、SpringMvc中有个类把视图和数据都合并的一起的,叫什么

叫ModelAndView

16、怎么样把ModelMap里面的数据放入Session里面

能够在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key

17、SpringMvc怎么和AJAX相互调用的

经过Jackson框架就能够把Java里面的对象直接转化成Js能够识别的Json对象,具体步骤如下 

1.加入Jackson.jar 

2.在配置文件中配置json的映射 

3.在接受Ajax方法里面能够直接返回Object,List等,但方法前面要加上@ResponseBody注解

18、当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理

要加上@ResponseBody注解

----------------------------------Spring--------------------------------------

1、SpringFramwork的理解?

Spring主要专注于如何利用classes、对象和服务去组成一个企业级应用,经过规范的方式,将各种不同的控件整合成一个完整的应用。

Spring中使用了很多被实践证明的最佳实践和设计模式,而且进行了编码实现。

在SpringFramework之上能够构建出优秀的、可维护的应用。

Spring框架包括许多特性,六个模块能够概括Spring的功能:

Core封装包是框架的最基础部分,提供IoC和依赖注入特性。

这里的基础概念是BeanFactory,它提供对Factory模式的经典实现来消除对程序性单例模式的需要,并真正地允许你从程序逻辑中分离出依赖关系和配置。

DAO提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。

而且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不但仅是实现了特定接口,而且对所有的POJOs(plainoldJavaobjects)都适用。

ORM封装包提供了常见的“对象/关系”映射APIs的集成层。

其中包括JPA、JDO、Hibernate和MyBatis。

利用ORM封装包,能够混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。

Spring的AOP封装包提供了符合AOPAlliance规范的面向方面的编程(aspect-orientedprogramming)实现,让你能够定义,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。

而且,利用source-level的元数据功能,还能够将各种行为信息合并到你的代码中,这有点象.Net的attribute的概念。

Spring中的Web包提供了基础的针对Web开发的集成特性,例如多方文件上传,利用Servletlisteners进行IoC容器初始化和针对Web的applicationcontext。

当与WebWork或Struts一起使用Spring时,这个包使Spring可与其它框架结合。

Spring中的MVC封装包提供了Web应用的Model-View-Controller(MVC)实现。

Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和webform之间。

而且,还能够借助Spring框架的其它特性。

2、控制反转IOC的理解?

IoC即InverseofControl,控制反转,是指一个系统中的类的实例化是由类自身来控制的,而不是编程者经过代码来控制的。

也就是说不创立对象,可是描述创立它们的方式。

在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。

容器(在 Spring 框架中是 IOC 容器) 负责将这些联系在一起。

一般我们在代码中使用一个类(例如Student类)的时候,需要自己在代码中实例化它,如下:

Studentstu=newStudent();

这样导致这段代码对这个类的依赖是硬编码依赖,也就是说类的名称的改变必然导致该源代码的修改,如果一个系统中这样的代码非常多,那么这个系统的可维护性和可移植性都会大打折扣。

要想改变类的实现或名称后,源代码不改变就必须使用接口来实现多态,而IOC的核心就是接口编程和反射机制。

 

3、依赖注入DI的理解?

DI即DependencyInjection,依赖注入,对象之间的依赖关系由bean对象自己来处理,这样能够使得类之间达到更高层次的松耦合。

DI注入方式:

Setter注入、构造子注入、接口注入。

4、SpringAOP的理解?

AOP即AspectOriantProgramming,面向切面编程,弥补了面向对象编程的不足。

在面向对象的编程中,我们研究的是类之间的纵向联系,继承就是纵向联系的代表,可是要想实现横向联系就很困难,比如要求系统中每个类的某些方法调用之前,都要执行一段公用代码,这个要求在面向对象的编程体系中很难优雅的实现,而实际程序设计中这样的要求很普遍,例如事务处理和权限检查,都是在执行某些方法时需要特别执行的公共代码。

这段公共代码或方法就是我们所说的切面(Aspect),它是一组特定的功能集合,需要触发切面功能执行的那些方法的声明就称为切入点(Pointcut),切面功能在这些方法调用之前、调用之后或前后都有或方法抛出异常的时候得到执行,这些执行时刻就称为通知(Advice),需要执行的这些方法能够称为连接点(Joinpoint)。

通知类型按切面功能调用的不同时刻,能够分为:

1.前置通知(Beforeadvice):

在某连接点之前执行的通知,但这个通知不能阻止连接点之前的执行流程(除非它抛出一个异常)。

2.后置通知(Afterreturningadvice):

在某连接点正常完成后执行的通知:

例如,一个方法没有抛出任何异常,正常返回。

3.异常通知(Afterthrowingadvice):

在方法抛出异常退出时执行的通知。

4.最终通知(After(finally)advice):

当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

5.环绕通知(AroundAdvice):

包围一个连接点的通知,如方法调用。

这是最强大的一种

 

5、Spring中支持的bean作用域?

Spring框架支持如下五种不同的作用域:

singleton:

在SpringIOC容器中仅存在一个Bean实例,Bean以单实例的方式存在。

prototype:

一个bean能够定义多个实例。

request:

每次HTTP请求都会创立一个新的Bean。

该作用域仅适用于WebApplicationContext环境。

session:

一个HTTPSession定义一个Bean。

该作用域仅适用于WebApplicationContext环境.

globalSession:

同一个全局HTTPSession定义一个Bean。

该作用域同样仅适用于WebApplicationContext环境.

bean默认的scope属性是singleton

6、Spring框架中单例beans是线程安全的吗?

不是,Spring框架中的单例beans不是线程安全的。

7、Spring有几种配置方式?

将Spring配置到应用开发中有以下三种方式:

基于XML的配置

基于注解的配置

基于Java的配置

8、Spring框架的事务管理有哪些优点?

1.为不同的事务API(如JTA,JDBC,Hibernate,JPA,和JDO)提供了统一的编程模型。

2.为编程式事务管理提供了一个简单的API而非一系列复杂的事务API(如JTA).

3.支持声明式事务管理。

4.能够和Spring的多种数据访问技术很好的融合。

9、Spring对事务支持的方式?

spring支持编程式事务管理和声明式事务管理两种方式。

 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。

对于编程式事务管理,spring推荐使用TransactionTemplate。

 声明式事务管理建立在AOP之上的。

其本质是对方法前后进行拦截,然后在目标方法开始之前创立或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

声明式事务最大的优点就是不需要经过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或经过基于@Transactional注解的方式),便能够将事务规则应用到业务逻辑中。

    显然声明式事务管理要优于编程式事务管理,这正是spring倡导的非侵入式的开发方式。

声明式事务管理使业务代码不受污染,一个普通的POJO对象,只要加上注解就能够获得完全的事务支持。

和编程式事务相比,声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样能够作用到代码块级别。

可是即便有这样的需求,也存在很多变通的方法,比如,能够将需要进行事务管理的代码块独立为方法等等。

     声明式事务管理也有两种常见的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。

显然基于注解的方式更简单易用,更清爽。

 

10、你更推荐那种类型的事务管理?

许多Spring框架的用户选择声明式事务管理,因为这种方式和应用程序的关联较少,因此更加符合轻量级容器的概念。

声明式事务管理要优于编程式事务管理,尽管在灵活性方面它弱于编程式事务管理(这种方式允许你经过代码控制业务)。

 

11、Spring框架中的注解?

 

12、Spring框架中常见设计模式?

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1