springMVC

1、什么是Spring MVC?简单介绍下你对Spring MVC的理解?

Spring MVC是一个实现了MVC设计模式的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

2、MVC是什么?MVC设计模式的好处有哪些

mvc是一种设计模式(设计模式是开发中好的方法和经验的总结)。模型(model)-视图(view)-控制器(controller),三层架构的设计模式。用于实现前端页面的展现与后端业务数据处理的分离。

mvc设计模式的好处
1)分层设计,实现了业务系统各个组件之间的解耦,有利于业务系统的可扩展性,可维护性。
2)有利于系统的并行开发,提升开发效率。

3、Spring MVC的主要组件?

1)前端控制器 DispatcherServlet(不需要程序员开发)
接收请求、响应结果,相当于转发器,减少了其它组件之间的耦合度。

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

根据请求的URL来查找Handler

3)处理器适配器 HandlerAdapter(不需要程序员开发)

调用处理器执行业务逻辑

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

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

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

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

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

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

4、SpringMVC的流程?

在这里插入图片描述
1)用户发送请求到前端控制器
2)前端控制器调用处理器映射器找出对应处理器
3)向前端控制器返回处理器对象
4)调用处理器适配器,请求执行处理器
5)处理器适配器调用具体处理器进行执行具体业务逻辑
6)处理器执行完成后向处理器适配器返回ModelAndView
7)处理器适配器向前端控制器返回ModelAndView
8)前端控制器调用视图解析器ModelAndView
9)解析完成后返回view
10)前端控制器调用视图进行视图渲染
11)向前端控制器返回渲染后的视图
12)响应结果

5、Springmvc的优点:

1)清晰的角色划分:前端控制器、处理器映射器、处理器适配器、处理器、视图解析器、视图。
2)分工明确,而且扩展点相当灵活,可以很容易扩展;
3)由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;
4)和Spring 其他框架无缝集成,是其它Web框架所不具备的;
5)可适配,通过HandlerAdapter可以支持任意的类作为处理器;
6)可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
7)功能强大的数据验证、格式化、绑定机制;
8)利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;
9 )本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
10)强大的JSP标签库,使JSP编写更容易。

6、重定向和请求转发的区别?(查看详细
// 转发
request.getRequestDispatcher("xxx.jsp或者servlet").forward(request,response);
// 重定向
response.sendRedirect("xxx.jsp或者servlet");

转发过程 forward: 客户端发送请求 → web服务器接受此请求 → 调用内部的一个方法在容器内部完成请求处理和转发动作 → 将目标资源发送给客户。

重定向过程 redirect: 客户端发送请求 → web服务器接收后发送30X状态码响应及对应新的location给客户浏览器 → 客户浏览器发现是30X响应,则自动再发送一个新的http请求,请求url是新的location地址→ 服务器根据此请求寻找资源并发送给客户。
1)转发发送一次请求,在服务器端进行转发,客户端地址栏不变,方式比较安全
2)重定向发送两次请求,在客户端重定向,客户端地址栏变成新地址,方式不安全

7、注解原理是什么?

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

8、 SpringMVC常用的注解有哪些?(查看详细

1)@Controller 声明该类为SpringMVC中的控制器
Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。
使用@RequestMapping 和@RequestParam 等一些注解用以定义URL 请求和Controller 方法之间的映射,这样的Controller 就能被外界访问到
2)@RequestMapping:建立请求和处理方法之间的映射关系,可以使用在方法上和类上,作用在类上表示所有响应请求的方法都是以该地址作为父路径
3)@RequestBody:将请求的json转换成java对象
4)@ResponseBody:将conreoller中方法返回对象转化为json对象响应给客户。
5)@PathVariable:获取url模板上的变量作为参数
6)@RequestParam: 获取url路径上的参数值
7)@Autowired: 按照byType自动注入对象
8)@Resource:如果指定name属性则是按照byname自动注入对象,指定type属性则是按照byType自动注入对象,若两个属性都不指定,则通过反射机制使用byName自动注入

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值