1.什么是springmvc?

答:springmvc是spring的一个模块,是基于MVC模型的一个框架。

2.springmvc的优点?

答:(1)是基于组件技术的,控制器,视图,以及业务对象都是java组件,和spring提供的内部结构紧密结合(2)支持各种视图技术,不仅仅局限于jsp(3)支持各种请求资源的映射策略(4)更易于拓展。(记忆:组件-两支持-拓展)

3.springmvc的工作原理?

答:(1)客户端发送请求到DispatcherServlet(2)DispatcherServlet去查询HandlerMapping,找到处理请求的Controller(3)Controller接受请求调用业务逻辑处理后,返回ModelAndView(4)DispatcherServlet根据ModelAndView找到对应的视图(5)将视图结果返回到客户端。

4.spirngmvc工作的详细流程?

答:(1)客户端发送请求到DispatcherServlet前端控制器(2)DispatcherServlet将请求调用到HandlerMapping处理器映射器,生成处理器对象以及处理器拦截器(有则生成)返回给DispatcherServlet(3)DispatcherServlet调用HandlerAdapter处理器适配器(4)HandlerAdapter调用相应的Controller(也称后端控制器)(5)Controller处理完相关业务逻辑,返回ModelAndView给HandlerAdapter(6)HandlerAdapter又将ModelAndView返回给DispatcherServlet(7)DispatcherServlet将ModelAndView发送给ViewResolver视图解析器,经过解析后将View返回给DispatcherServlet(8)DispatcherServlet对接收到的View进行视图渲染,也就是将返回模型数据填充到视图中(9)DispatcherServlet将视图响应到客户端。

5.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?

答:是单例模式,当多线程访问时存在线程安全问题,尽量不使用同步技术,因为这样会影响程序性能,解决办法就是尽量不在控制器中定义成员变量。

6.简单介绍springmvc和struts两者的区别

答:(1)springmvc的入口是一个servlet(前端控制器),struts2的入口是一个filter过滤器(2)springmvc是基于方法开发的,请求参数会传递给方法的形参,可以是单例模式也可以是多例模式,而struts2是基于类开发的,请求参数是通过类的属性进行设置的,只能是多例模式。(记忆:入口-基于-赋值-例)

7.SpingMvc中的控制器的注解一般用那个,有没有别的注解可以替代?

答:一般用@Controller注解,表示表现层,不可以用别的注解代替。

8.@RequestMapping注解,能用在什么地方?用在类上面有什么作用?

答:这是个处理请求地址映射的地址,能用在类和方法上,用在类上表示该类的所有方法响应请求的话都是以该请求地址为父路径。

9.怎么样把请求映射到特定的方法上?

答:直接在方法上添加@RequestMapping注解,并在注解里面标明拦截路径。

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

答:可以在@RequestMapping注解中添加method=RequestMethod.Get。

11.怎么样在方法里面得到Request,或者Session?

答:直接在方法的形参里面写HttpServletRequest,springmvc会自动把request传入,同理在形参里面写上HttpSession,springmvc会自动把session传入。

12.我想在拦截的方法里面得到从前台传入的参数,怎么得到?

答:直接在形参里面声明该参数即可,但要求参数名称要一致。

13.如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

答:直接在形参里面声明这个对象即可,springmvc会自动将参数值赋值到对象的属性里面。

14.SpringMvc中函数的返回值是什么?

答:返回值类型有多种,例如String,ModelAndView等。

15.SpringMVC怎么样设定重定向和转发的?

答:(1)重定向:在返回值return前面加"redirect:+要重定向的地址",eg:forward:user.do?name=method4(2)转发:在返回值return前面加"forward:+要转发的地址",eg:“redirect:http://www.baidu”。

16.SpringMvc用什么对象从后台向前台传递数据的?

答:ModelMap对象,通过put方法可以把对象添加到里面,前台就可以通过el表达式拿到。

17.SpringMvc中有个类把视图和数据都合并的一起的,叫什么?

答:ModelAndView。

18.当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?

答:添加@ResponseBody注解即可。

补充:(1)@ResponseBody 作用:@ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。(2)@RequestBody 作用:@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容(json数据)转换为java对象并绑定到Controller方法的参数上。

19.SpringMvc怎么和AJAX相互调用的?

答:通过jackson框架就可以使返回的List,Object对象转化为Js可以识别的Json。步骤:(1)导入jackson.jar包(2)在配置文件配置json映射(3)在接收ajax的方法中添加ResponseBody就可以将List,Object转化为Js可以识别的Json。(记忆:导jar包-写配置-添注解)

20.怎么样把ModelMap里面的数据放入Session里面?(待解决)

答:在类上添加@SessionAttributes注解,里面的字符串就是存到Session里面的Key。

更多推荐

springmvc面试题笔记