网页开发软件哪个好用,360排名优化工具,手机网站引导页js,wordpress列类型1.概述 
1.1 什么是Spring MVC#xff1f;简单介绍下你对Spring MVC的理解#xff1f; 
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架#xff0c;通过把模型-视图-控制器分离#xff0c;将web层进行职责解耦#xff0c;把复杂的web应用分成…1.概述 
1.1 什么是Spring MVC简单介绍下你对Spring MVC的理解 
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架通过把模型-视图-控制器分离将web层进行职责解耦把复杂的web应用分成逻辑清晰的几部分简化开发减少出错方便组内开发人员之间的配合。 
1.2 Spring MVC的优点 
1可以支持各种视图技术而不仅仅局限于JSP 2与Spring框架集成如IoC容器、AOP等 3清晰的角色分配前端控制器(dispatcherServlet)  请求到处理器映射handlerMapping)处理器适配器HandlerAdapter) 视图解析器ViewResolver。 4 支持各种请求资源的映射策略。 
2.核心组件 
2.1 Spring MVC的主要组件 
1前端控制器 DispatcherServlet不需要程序员开发 
作用接收请求、响应结果相当于转发器有了DispatcherServlet 就减少了其它组件之间 的耦合度。 
2处理器映射器HandlerMapping不需要程序员开发 
作用根据请求的URL来查找Handler 
3处理器适配器HandlerAdapter 
注意在编写Handler的时候要按照HandlerAdapter要求的规则去编写这样适配器HandlerAdapter才可以正确的去执行Handler。 
4处理器Handler需要程序员开发 
5视图解析器 ViewResolver不需要程序员开发 
作用进行视图的解析根据视图逻辑名解析成真正的视图view 
6视图View需要程序员开发jsp 
View是一个接口 它的实现类支持不同的视图类型jspfreemarkerpdf等等 
2.2 什么是DispatcherServlet 
Spring的MVC框架是围绕DispatcherServlet来设计的它用来处理所有的HTTP请求和响应。 
2.3 什么是Spring MVC框架的控制器 
控制器提供一个访问应用程序的行为此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring用一个非常抽象的方式实现了一个控制层允许用户创建多种用途的控制器。 
2.4 Spring MVC的控制器是不是单例模式如果是有什么问题怎么解决 
是单例模式所以在多线程访问的时候有线程安全问题不要用同步会影响性能的解决方案是在控制器里面不能写字段。 
3.工作原理 
3.1 Spring MVC工作原理 
1客户端发送请求到DispatcherServlet 
2DispatcherServlet查询handlerMapping找到处理请求的Controller 
3Controller调用业务逻辑后返回ModelAndView 
4DispatcherServlet查询ModelAndView找到指定视图 
5视图将结果返回到客户端 
3.2请描述Spring MVC的工作流程描述一下 DispatcherServlet 的工作流程 1用户发送请求至前端控制器DispatcherServlet 
2 DispatcherServlet收到请求后调用HandlerMapping处理器映射器请求获取Handle 
3处理器映射器根据请求url找到具体的处理器生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet 
4DispatcherServlet 调用 HandlerAdapter处理器适配器 
5HandlerAdapter 经过适配调用 具体处理器(Handler也叫后端控制器) 
6Handler执行完成返回ModelAndView 
7HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet 
8DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析 
9ViewResolver解析后返回具体View 
10DispatcherServlet对View进行渲染视图即将模型数据填充至视图中 
11DispatcherServlet响应用户。 
4.MVC框架 
4.1 MVC是什么MVC设计模式的好处有哪些 
mvc是一种设计模式设计模式就是日常开发中编写代码的一种好的方法和经验的总结。模型model-视图view-控制器controller三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。 
4.2 MVC设计模式的好处 
分层设计实现了业务系统各个组件之间的解耦有利于业务系统的可扩展性可维护性。有利于系统的并行开发提升开发效率。 
5.常用注解 
5.1 注解原理是什么 
注解本质是一个继承了Annotation的特殊接口其具体实现类是Java运行时生成的动态代理类。我们通过反射获取注解时返回的是Java运行时生成的动态代理对象。通过代理对象调用自定义注解的方法会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。 
5.2 Spring MVC常用的注解有哪些 
RequestMapping用于处理请求 url 映射的注解可用于类或方法上。用于类上则表示类中的所有响应请求的方法都是以该地址作为父路径。 
RequestBody注解实现接收http请求的json数据将json转换为java对象。 
ResponseBody注解实现将conreoller方法返回对象转化为json对象响应给客户。 
Conntroller控制器的注解表示是表现层不能用用别的注解代替 
5.3 SpingMvc中的控制器的注解一般用哪个有没有别的注解可以替代 
一般用Controller注解也可以使用RestControllerRestController注解相当于ResponseBody Controller表示是表现层除此之外一般不用别的注解代替。 
5.4 Controller注解的作用 
在Spring MVC 中控制器Controller 负责处理由DispatcherServlet 分发的请求它把用户请求的数据经过业务处理层处理之后封装成一个Model 然后再把该Model 返回给对应的View 进行展示。在Spring MVC 中提供了一个非常简便的定义Controller 的方法你无需继承特定的类或实现特定的接口只需使用Controller 标记一个类是Controller 然后使用RequestMapping 和RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射这样的Controller就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse等HttpServlet 对象它们可以通过Controller 的方法参数灵活的获取到。 
Controller 用于标记在一个类上使用它标记的类就是一个Spring MVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法并检测该方法是否使用了RequestMapping 注解。Controller 只是定义了一个控制器类而使用RequestMapping 注解的方法才是真正处理请求的处理器。单单使用Controller 标记在一个类上还不能真正意义上的说它就是Spring MVC 的一个控制器类因为这个时候Spring 还不认识它。那么要如何做Spring 才能认识它呢这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式 
在Spring MVC 的配置文件中定义MyController 的bean 对象。 
在Spring MVC 的配置文件中告诉Spring 该到哪里去找标记为Controller 的Controller 控制器。 
5.5 RequestMapping注解的作用 
RequestMapping是一个用来处理请求地址映射的注解可用于类或方法上。用于类上表示类中的所有响应请求的方法都是以该地址作为父路径。 
RequestMapping注解有六个属性下面我们把她分成三类进行说明下面有相应示例。 value 指定请求的实际地址指定的地址可以是URI Template 模式后面将会说明 
method 指定请求的method类型 GET、POST、PUT、DELETE等 
consumes 指定处理请求的提交内容类型Content-Type例如application/jsontext/html; 
produces: 指定返回的内容类型仅当request请求头中的(Accept)类型中包含该指定类型才返回 
params 指定request中必须包含某些参数值是才让该方法处理。 
headers 指定request中必须包含某些指定的header值才能让该方法处理请求。 
5.6 ResponseBody注解的作用 
该注解用于将Controller的方法返回的对象通过适当的HttpMessageConverter转换为指定格式后写入到Response对象的body数据区。 
使用时机返回的数据不是html标签的页面而是其他某种格式的数据时如json、xml等使用 
5.7 PathVariable和RequestParam的区别 
请求路径上有个id的变量值可以通过PathVariable来获取 RequestMapping(value  “/page/{id}” method  RequestMethod.GET) RequestParam用来获得静态的URL请求入参 spring注解时action里用到。 
6.其他 
6.1 Spring MVC与Struts2区别 
相同点 
都是基于mvc的表现层框架都用于web项目的开发。 
不同点 前端控制器不一样。Spring MVC的前端控制器是servletDispatcherServlet。struts2的前端控制器是filterStrutsPreparedAndExcutorFilter。  请求参数的接收方式不一样。Spring MVC是使用方法的形参接收请求的参数基于方法的开发线程安全可以设计为单例或者多例的开发推荐使用单例模式的开发执行效率更高默认就是单例开发模式。struts2是通过类的成员变量接收请求的参数是基于类的开发线程不安全只能设计为多例的开发。  Struts采用值栈存储请求和响应的数据通过OGNL存取数据Spring MVC通过参数解析器是将request请求内容解析并给方法形参赋值将数据和视图封装成ModelAndView对象最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。  与spring整合不一样。Spring MVC是spring框架的一部分不需要整合。在企业项目中SpringMVC使用更多一些。  
6.12 怎么样把ModelMap里面的数据放入Session里面 
可以在类上面加上SessionAttributes注解里面包含的字符串就是要放入session里面的key。 
6.13 Spring MVC里面拦截器是怎么写的 
有两种写法一种是实现HandlerInterceptor接口另外一种是继承适配器类接着在接口方法当中实现处理逻辑然后在Spring MVC的配置文件中配置拦截器即可 
6.14 介绍一下 WebApplicationContext 
在类上面加上SessionAttributes注解里面包含的字符串就是要放入session里面的key。 
6.13 Spring MVC里面拦截器是怎么写的 
有两种写法一种是实现HandlerInterceptor接口另外一种是继承适配器类接着在接口方法当中实现处理逻辑然后在Spring MVC的配置文件中配置拦截器即可 
6.14 介绍一下 WebApplicationContext 
WebApplicationContext 继承了ApplicationContext 并增加了一些WEB应用必备的特有功能它不同于一般的ApplicationContext 因为它能处理主题并找到被关联的servlet。