首页 > 其他分享 >SpringMVC

SpringMVC

时间:2023-10-05 22:36:20浏览次数:37  
标签:控制器 请求 SpringMVC 视图 Handler ModelAndView DispatcherServlet

1、Spring MVC的工作原理?

(1)用户向服务器发送请求,请求被 springMVC前端控制器捕获;

(2)前端控制器对请求URL进行解析,得到请求资源标识符(URL)然后根据该URL调用页面处理器获得该Handler配置的所有相关对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

(3)前端控制器根据获得Handler选择一个合适的HandlerAdapter 适配器处理;

(4)Handler对数据处理完成以后将返回一个ModelAndView()对象给前端控制器;

(5)Handler返回的ModelAndView()只是一个逻辑视图并不是一个正式的视图,前端控制器通过ViewResolver 试图解析器将逻辑视图转化为真正的视图View;

(6)DispatcherServle通过model解析出ModelAndView()中的参数进行解析最终展现出完整的view并返回给客户端。

2、SpringMVC 常用注解都有哪些?

@requestMapping:用于请求url映射;

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

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

@Conntroller:控制器的注解,表示是表现层,不能用用别的注解代替。

3、SpringMVC怎么样设置重定向和转发?

在返回值前面加"forward:“就可以让结果转发,如"forward:user.doname=method4”;在返回值前面加"redirect:"就可以让返回值重定向。

4、springMVC和struts2的区别有哪些

(1)springmvc的入口是一个servlet即前端控制器(DispatchServlet),struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter);

(2)springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例)struts2是基于类开发,传递参数是通过类的属性,只能设计为多例;

(3)springmvc通过参数解析器将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面,Jsp视图解析器默认使用jstl。Struts采用值栈存储请求和响应的数据,通过OGNL存取数据。

5、SpringMVC的流程?

(1)用户发送请求被前端DispatcherServlet捕获;

(2)DispatcherServlet捕获到请求后,调用HandlerMapping处理映射器,请求获取Handle;

(3)处理器映射器跟据请求url找到具体的处理器,生成处理器对象及处理器拦截器并返回给DispatcherServlet;

(4)DispatcherServlet调用HandlerAdapter处理器适配器;

(5)HandlerAdapter经过适配调用handler;

(6)Handler执行完成返回ModelAndView;

(7)HandlerApdater将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet讲讲ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行视图渲染(即将模型数据充至视图中)然后DispatcherServlet响应用户。

6、Springmvc如何做异常处理?

可以将异常抛给Spring框架,由Spring框架来处理,自定义实现spring的全局异常解析器HandlerExceptionResolver,在异常处理器中添视图页面即可。

7、Springmvc的控制器是不是单例设计模式,如果是,有什么问题,该怎么解决?

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

8、Springmvc 和struts2的区别有哪些

springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter);
springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例;
Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

9、Springmvc 中对于文件的上传有哪些需要注意的?

在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析;在springmvc.xml中配置multipart类型解析器;方法中使用:MultipartFile attach (单个文件上传) 或者 MultipartFile[] attachs (多个文件上传)

10、 Springmvc 中拦截器如何使用?

定义拦截器,实现HandlerInterceptor接口,接口中提供三个方法
(1)preHandle:进入Handler方法之前执行,用于身份认证、身份授权,比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行;

(2)postHandle:进入Handler方法之后,返回modelAndView之前执行,应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图;

(3)afterCompletion:执行Handler完成执行此方法,应用场景:统一异常处理,统一日志处理。

标签:控制器,请求,SpringMVC,视图,Handler,ModelAndView,DispatcherServlet
From: https://www.cnblogs.com/wyl010926/p/17744033.html

相关文章

  • springmvc的工作流程
    1、springmvc工作原理图    2、springmvc工作流程1、用户向服务端发送一次请求,这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知,该请求该由哪个Controller来处理(并未调用Co......
  • SpringMVC使用@Valid注解实现数据验证
    一、@Valid注解的作用@Valid注解是javax.validation包中的一个注解,它可以用来标注需要验证的数据对象。当一个带有@Valid注解的对象传递给SpringMVC的控制器方法时,SpringMVC会自动调用验证器来验证这个对象。二、数据验证的流程SpringMVC中的数据验证流程如下:......
  • SpringMVC拦截器
     1.拦截器接口 2.工作流程 3.配置拦截器1<!--配置拦截器(可多个)-->2<mvc:interceptors>3<mvc:interceptor>4<!--设置拦截器要拦截的url地址-->5<mvc:mappingpath="/user/**"/>6<!--设置拦截器不拦截的url地址-->7......
  • SpringMVC异常处理
     @ControllerAdvice没有切点只有增强1.全局统一异常处理类1packagecom.cn.globalexpction;23importorg.springframework.ui.ModelMap;4importorg.springframework.web.bind.annotation.ControllerAdvice;5importorg.springframework.web.bind.annotation.......
  • SpringMVC resultful架构风格
     <inputtype="hidden"name="_method"value="DELETE"/>  1.RestfulController.java 1packagecom.cn.restful;23importorg.springframework.stereotype.Controller;4importorg.springframework.ui.ModelMap;5......
  • 手动开发-实现SpringMVC底层机制--小试牛刀
    在这里说的底层机制的实现主要是指:前端控制器、Controller、Service注入容器、对象自动装配、控制器方法获取参数、视图解析、返回json数据。前端控制器前端控制器就是核心控制器。在这里我们可以设计一个Servlet来充当核心控制器:LingDispatcherServlet.java.这个控制器的作用......
  • springMVC自定义校验注解
     1.定义注解校验器PhoneNoValidator.java1/**2*@Authorhxy3*@Description4*@Date2023/9/1410:485*@Version1.06*/7publicclassPhoneNoValidatorimplementsConstraintValidator<PhoneNo,String>{8@Override9publicvo......
  • springMVC类型转换器
    Spring引入通用的数据类型转换系统,其定义了sPI接口和相应的运行时热行类型转换的API,提供无状态,强类型可以在任意类型之间进行类型转换,可以用于任向需要的地方(如SpEL、数据绑定等) 1.配置自定义类型转换服务 2.日期类型转换器 ......
  • springMVC数据校验
    应用程序在执行业务逻辑前,必须通过数据校验保证接收的输入数据时正确合法的。1.JRS303  2.@Valid校验注解(获取校验结果)DepositDto.java1@Data2@AllArgsConstructor3@NoArgsConstructor4publicclassDepositDto{5@NotEmpty(message="账号不能为......
  • SpringMVC
    什么是MVC模式?在了解SpringMVC的工作原理之前,我们先来复习一下什么是MVC的设计模式。方便后面更能理解工作原理的架构。MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码。......