- Java 框架面试题


SpringMVC框架原理

在这里插入图片描述

1、用户发送请求url到前端控制器,前端控制器接收请求;
2、前端控制器请求处理器映射器查找Handler;
3、处理器映射器向前端控制器返回Handler;
4、前端控制器调用处理器适配器去执行Handler;
5、处理器适配器执行Handler,Handler然后返回MV给处理器适配器;
6、处理器适配器将MV返回给前端控制器;
7、前端控制器请求视图解析器对MV进行视图解析,将逻辑视图名解析成真正的视图;
8、视图解析器将视图返回给前端控制器;
9、前端控制器进行视图渲染,然后向用户响应结果;


@RestController和@Controller区别

@RestController注解标注了@Controller注解和@ResponseBody注解,使用@RestController注解就不用再在每个@RequestMapping方法上添加@ResponseBody注解了;

什么是SpringMVC

SpringMVC是一个Java实现的基于MVC设计模式的web框架,它将Model、View、Controller分离,简化程序开发;

SpringMVC有几个组件:前端控制器、处理器映射器、处理器适配器、视图解析器;这几个组件相互配合完成请求的接收、处理工作;

SpringMVC就是Spring的一个模块,它和Spring不需要通过中间层进行整合;

SpringMVC重要组件

1、前端控制器DispatcherServlet:接收请求,响应结果;相当于转发器;

2、处理器映射器HandlerMapping:根据请求URL,查找Handler;

3、处理器适配器HandlerAdapter:按照特定的规则去执行handlre;

4、处理器Handler:编写Handler的时候,要按照处理器适配器要求的规则去写,这样处理器适配器才能正确的执行Handler;

5、视图解析器viewResolver:进行视图解析,将逻辑视图名解析成真正的视图;

6、视图View:是一个接口,支持不同类型的视图(jsp、freemarker、pdf);

SpringMVC怎么实现重定向和转发

Handler返回String类型的返回值,然后在返回的字符串前面加上redirct:forward:

(1)转发:return "froward:user.html?name=zxj"
(2)重定向:return "redirect:http://www.baidu.com"

Controller方法返回值

1、返回ModelAndView:在方法中定义MV,将Model和View分别进行设置;

2、返回String:
(1)返回逻辑视图名:真正的视图名(jsp路径)=前缀+逻辑视图名+后缀;
(2)redirect重定向:修改的request无法传到重定向的地址;
(3)forward转发:

3、返回void:在Controller方法形参上定义request、response;

SpringMVC参数绑定

1、默认支持的类型,在Controller方法形参上定义时,直接进行绑定:HttpServletRequest、HttpServletResponse、HttpSession、Model/ModelMap;

2、简单类型:
(1)在Controller方法形参前面加上@RequestParam可以将指定的参数绑定到@RequestParam后面的形参上;

(2)若从前端页面传过来的属性名,和形参名一样,可以不写@RequestParam;
public ModelAndView editItems(@RequestParam(value='id',request=true,defaultValue='1') Integer items_id){...}

3、pojo绑定:页面传来的值的属性名和pojo中属性名一样时,可以直接在Controller方法上定义pojo类型的形参,自动接收值;

SpringMVC使用Json数据交互

使用@ResponseBody和@RequestBody注解;

(1)@ResponseBody注解写在方法声明上的public后,返回值类型前,返回值是对象类型的,可以将返回值转换成json串,响应给客户;

(2)在方法形参前加上@RequestBody,接收http请求的json数据,将json转换成Java对象,绑定到形参上;

SpringMVC异常处理

dao、service、controller出现异常,都向上抛出,抛出到前端控制器,前端控制器交给异常处理器进行统一处理;

如果在拦截请求中,怎么拦截get方式提交的方法

在@RequestMapping注解里加上属性:method = RequestMethod.get

怎么在Controller的方法中使用session、request

直接在方法的形参上声明HttpServletRequest、HttpSession,SpringMVC就能完成自动参数绑定;

SpringMVC拦截器

定义类实现HandlerInterceptor接口,然后实现接口中的3个方法,然后在SpringMVC的配置文件中配置拦截器:
preHandler:进入Handler方法之前执行,可用于身份验证、身份授权等;
postHandler:进入Handler方法之后,返回MV之前执行,可在这里统一指定视图;
afterHandler:Handler完成之后执行,可用于进行统一日志处理;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值