SpringMVC概念

概念

什么是Spring MVC ?
  • spring的子框架,将model,view,controller分离,简化开发
SpringMVC的流程(工作原理)?
  • 浏览器发送HTTP请求至DispatcherServlet
  • DispatcherServlet收到请求寻找处理器HandlerMapping
  • HandlerAdapter经过适配调用具体的处理器(Controller)
  • Controller执行完成返回ModelAndView
  • HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  • DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  • ViewReslover解析后返回具体View
  • DispatcherServlet根据View进行渲染视图
  • DispatcherServlet响应用户
Springmvc的优点:
  • 可以支持各种视图技术,而不仅仅局限于JSP
  • 与Spring框架集成(如IoC容器、AOP等)
  • 支持各种请求资源的映射策略
  • 清晰的角色分配:前端控制器(dispatcherServlet) , 请求到处理器映射(handlerMapping), 处理器适配(HandlerAdapter), 视图解析器(ViewResolver)
Spring MVC的主要组件?
  • DispatcherServlet:请求入口

  • HandlerMapping:请求派发,负责请求和控制器建立一一对应的关系

  • Controller:处理器

  • ModelAndView:封装模型信息和视图信息

  • ViewResolver:视图处理器,定位页面

springMVC和struts2的区别有哪些?
  • 拦截机制的不同:Struts2是类级别的拦截(独立的Interceptor机制,配置文件量大),SpringMVC是方法级别的拦截(使用AOP)

  • 底层框架的不同:Struts2采用Filter实现(在容器启动后初始化),SpringMVC采用Servlet实现(调用时初始化)

  • 性能:Struts2低,SpringMVC高

  • 配置方面:spring MVC和Spring是无缝的。项目的管理和安全上也比Struts2高

SpringMVC怎么样设定重定向和转发的?
  • 转发:返回值前加forward:

  • 重定向:返回值前加redirect:

  • 转发:是在服务器内部控制权的转移,是由服务器区请求,客户端并不知道是怎样转移的,客户端浏览器的地址不会显示出转向的地址。

  • 重定向:是服务器告诉了客户端要转向哪个地址,客户端再自己去请求转向的地址,因此会显示转向后的地址,浏览器至少进行了两次的访问请求。

SpringMvc怎么和AJAX相互调用的?
  • 通过URL传参
  • 单值传参
  • 对象传参
  • 对象序列化传参
  • List传参
  • 开发时常用JSON映射,在方法前加@RequestBody注解
SpringMvc里面拦截器是怎么写的:
  • 实现HandlerInterceptor接口

  • 继承适配器类

  • 在SpringMvc的配置文件中配置拦截器

如何解决POST请求中文乱码问题,GET的又如何处理呢?
  • post:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8

  • get:修改tomcat配置文件添加编码与工程编码一致,或者对参数设置编码格式

  • 使用注解,请求时设置consumes=“application/json;charset=utf-8”

Spring MVC的异常处理 ?
  • 使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver
  • 实现Spring的异常处理接口HandlerExceptionResolver(自定义异常处理器)
  • 使用@ExceptionHandler注解实现异常处理
SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么
  • SpringMvc:DispatchServlet
  • Struts1:ActionServlet
  • Struts2:StrutsPrepareAndExecuteFilter
SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
  • 默认是单例
  • 在多线程访问时有线程安全问题
  • 不使用同步,不在控制器中写成员变量
SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?
  • @Controller
  • 可以使用@RestController,但是@RestController中也使用了@Controller
@RequestMapping注解用在类上面有什么作用?
  • 表示类中的所有响应请求的方法都是以该地址作为父路径
Spring MVC 常用的一些注解
  • @Controller
  • @RestController
  • @RequestMapping
  • @PathVariable
  • @RequestParam
  • @RequestBody
  • 。。。
怎么样把某个请求映射到特定的方法上面?
  • 在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径
如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
  • 在@RequestMapping注解里面加上method=RequestMethod.GET
  • 或者使用@GetMapping
怎么样在方法里面得到Request,或者Session?
  • 在方法上加@ModelAttribute,参数中定义HttpServletRequest,HttpServletResponse,HttpSession,然后使用对象.getXXX获取
如果想在拦截的方法里面得到从前台传入的参数,怎么得到?
  • 直接在形参里面声明这个参数,名字和传过来的参数一样
如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
  • 直接在方法中声明这个对象,SpringMvc自动把属性赋值到这个对象里面
SpringMvc中函数的返回值是什么?
  • 一般是String,别的也可以
SpringMvc用什么对象从后台向前台传递数据的?获取前台数据?
  • Model对象,HttpServletRequest对象,Map对象
  • 参数获取,对象获取,@RequestParam获取,@PathVariable请求路径获取
SpringMvc中有个类把视图和数据都合并的一起的,叫什么?
  • ModelAndView
怎么样把ModelMap里面的数据放入Session里面?
  • 在类上面加上@SessionAttributes
当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?
  • 加上@ResponseBody注解
如何使用 Spring MVC 完成 JSON 操作
  • 使用@RequestBody注解进行数据转换
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值