ssm常见面试题

1. 什么是DI或者IOC?请解释下Spring IOC。

IOC:即“控制反转”,是一种设计思想,是指创建对象的控制权的转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到容器,对象与对象之间松散耦合,也利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。DI(依赖注入)和控制反转是同一个概念的不同角度描述,所谓依赖注入就是应用程序依赖于IoC容器,在运行时需要IoC容器来动态提供对象需要的外部资源。

Java中依赖注入有以下三种实现方式:构造器注入、Setter方法注入、接口注入。

2.Spring AOP

3.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响应用户。

2. SpringMVC常用的注解有哪些?

@RequestMapping:用于请求url映射。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

 

3. 如何解决get和post乱码问题?

解决post请求乱码:我们可以在web.xml里边配置一个CharacterEncodingFilter 过滤器。设置为utf-8。

解决get请求乱码有两种方法个:

1)修改tomcat配置文件添加编码和工程编码一致;

2) 另一种方法对参数进行重新编码;

String username = new String(Request.getParameter("userName").getBytes("ISO8859-1"),"utf-8")。

 

4. springmvc的优点?

1)可以支持各种视图技术,而不仅仅局限于JSP;

2)与Spring框架集成(如IoC容器、AOP等);

3) 清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配器(HandlerAdapter), 视图解析器(ViewResolver)

 

5. 什么是springmvc?

SpringMVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型。MVC: Model View Controller 模型-视图-控制器 。

视图:展示给用户的视图;

模型:表示数据和业务处理规则。模型返回的数据是独立的,这样的一个模式能够为多个视图提供数据,这样一来模型的代码只需要写一次便能够被多个视图重用,减少了代码的重复性;

控制器:接受用户的输入并调用相应的模型和视图来完成用户的需求。

 

6.SpringMVC怎么样设定重定向和转发的?

在返回值前面加"forward:"就可以让结果转发,譬如"forward:user.do?name=method4" 在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:"。

7、Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果 相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

 

8、Spring MVC的异常处理 ?

答:可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。

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

答:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段。

10、SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

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

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

答:是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

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

答:可以在@RequestMapping注解里面加上method=RequestMethod.GET。

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

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

14、SpringMvc中函数的返回值是什么?

答:返回值可以有很多类型,有String, ModelAndView,但一般用String比较好。

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

答:通过ModelMap对象,可以在这个对象里面用put方法,把对象加到里面,前台就可以通过el表达式拿到。

16、注解原理

注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。

 

posted @ 2020-04-01 16:23  奥里给  阅读(6505)  评论(0编辑  收藏  举报