最新总结SpringMVC常见面试题

1. 简单的谈一下SpringMVC的工作流程?

在这里插入图片描述

  启动服务器的时候配置在web.xml文件中的中央控制器【DispatcherServlet】被初始化完成,并且加载配置的springMVC的配置文件。
  客户端浏览器发送http请求,被中央控制器拦截,转交给url解析器解析得到具体的请求路径,并返回给中央控制器;中央控制器将得到的具体请求路径转交给控制器适配器查找与之对应的请求处理类执行具体的请求处理,得到ModelAndView【1.数据。2.跳转地址】对象并交给控制器适配器且返回给中央控制器;中央控制器将ModelAndView对象转交给视图解析器解析得到一个具体的数据显示路径,中央控制器得到具体的数据显示路径后,将路径所代表的资源转换执行成一个html数据并返回给客户端浏览器。

2. 如何解决POST请求中文乱码问题,GET的又如何处理呢?

  在web.xml中

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  以上可以解决post请求乱码问题。
  对于get请求中文参数出现乱码解决:修改tomcat配置文件添加编码与工程编码一致,如下:

<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

3. SpringMVC与Struts2的主要区别?

Struts2SpringMvc
Struts2 的核心是基于一个Filter即StrutsPreparedAndExcuteFilterSpringMvc的核心是基于一个Servlet即DispatcherServlet(前端控制器)
Struts2是基于类开发的,传递的参数是通过类的属性传递(属性驱动和模型驱动),所以只能设计成多例prototypeSpringMvc是基于类中的方法开发的,也就是一个url对应一个方法,传递参数是传到方法的形参上面,所以既可以是单例模式也可以是多例模式singiton
Struts2采用的是值栈存储请求以及响应数据,OGNL存取数据SpringMvc采用request来解析请求内容,然后由其内部的getParameter给方法中形参赋值,再把后台处理过的数据通过ModelAndView对象存储,Model存储数据,View存储返回的页面,再把对象通过request传输到页面去。

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

  springmvc controller默认的是单例singleton的
如果你给controller中定义很多的属性,那么单例肯定会出现竞争访问了,因此,只要controller中不定义属性,那么单例完全是安全的。
  1、不要在controller中定义成员变量。
  2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope(“prototype”),将其设置为多例模式

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

  一般用@Controller注解,也可以使用@RestController,@RestController注解相当于@ResponseBody + @Controller,表示是表现层,除此之外,一般不用别的注解代替。

6. @RequestMapping注解用在类上面有什么作用?

  可以作用在java类,表示配置这个java类的访问路径;

7. 怎么样把某个请求映射到特定的方法上面?

  @RequestMapping也可以作用在请求处理方法上,表示配置这个请求处理方法的访问路径

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

  @RequestMapping注解的method — 限制请求的访问方式

@RequestMapping(value="/my",method=RequestMethod.GET)

9. 如果在拦截请求中,我想拦截提交参数中包含"type=test"字符串,怎么配置?

  可以在@RequestMapping注解里面加上params=“type=test”

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

  直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样

http://127.0.0.1:8080/test?name=zhansgan
Public  void  getName(String name){

}
Public  void  getName(HttpServletRequest req){
   Req.getPramter(“name”);
}

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

  直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面

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

  直接在方法的形参中声明HttpServletRequest,SpringMvc就自动把request对象传入

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

  返回值可以有很多类型,有String, ModelAndView,当一般用String比较好

14. SpringMvc怎么处理返回值的?

  SpringMvc根据配置文件中InternalResourceViewResolver的前缀和后缀,用前缀+返回值+后缀组成完整的返回值

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

  在返回值前面加"forward:“就可以让结果转发,譬如"forward:user.do?name=method4” 在返回值前面加

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

  通过ModelMap对象,可以在这个对象里面用put方法,把对象加到里面,前台就可以通过el表达式拿到
  ModelAndView — addObject(“name”,”zhangsan”)

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

  ModelAndView

18. 怎么样把ModelMap里面的数据放入Session里面?

  可以在类上面加上@SessionAttributes注解,里面包含的字符串就是要放入session里面的key

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

  通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象
  具体步骤如下
    1.加入Jackson.jar
    2.在配置文件中配置json的映射
    3.在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解

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

  要加上@ResponseBody注解

21. SpringMvc里面拦截器是怎么写的?

  有两种写法,一种是实现接口,另外一种是继承适配器类,然后在SpringMvc的配置文件中配置拦截器即可:

<!-- 配置SpringMvc的拦截器 -->
	<mvc:interceptors>
	<!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->
	<bean id="myInterceptor" class="com.et.action.MyHandlerInterceptor"></bean>
<!-- 只针对部分请求拦截 -->
	<mvc:interceptor>
	<mvc:mapping path="/modelMap.do" />
	<bean class="com.et.action.MyHandlerInterceptorAdapter" />
	</mvc:interceptor>
	</mvc:interceptors>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当面试官问到Spring MVC的常见面试题时,以下是一些常见的问题及其答案: 1. 什么是Spring MVC? Spring MVC是基于Java的Web应用程序框架,它是Spring Framework的一部分。它提供了一种模型-视图-控制器(MVC)的架构模式,用于开发灵活、松耦合的Web应用程序。 2. Spring MVC的主要组件是什么? Spring MVC的主要组件包括: - 控制器(Controller):处理用户请求并返回响应。 - 模型(Model):封装业务逻辑和数据。 - 视图(View):负责渲染模型数据并生成响应。 3. Spring MVC的请求处理流程是怎样的? Spring MVC的请求处理流程包括以下步骤: - 客户端发送请求到DispatcherServlet。 - DispatcherServlet根据请求的URL选择合适的处理器(Controller)。 - 处理器处理请求并返回一个模型和视图。 - DispatcherServlet将模型传递给视图进行渲染。 - 最终生成响应返回给客户端。 4. 如何配置Spring MVC? Spring MVC可以通过XML配置文件或Java注解进行配置。XML配置文件通常包括配置DispatcherServlet、处理器映射、视图解析器等。而使用注解可以通过在类或方法上添加注解来配置请求映射、请求参数绑定等。 5. Spring MVC中的数据绑定是如何实现的? Spring MVC使用数据绑定将请求参数绑定到处理器方法的参数或模型对象的属性上。它支持基本类型、自定义类型、集合类型等的数据绑定。可以通过注解(如@PathVariable、@RequestParam)或表单对象来实现数据绑定。 6. Spring MVC中的拦截器是什么?如何使用? 拦截器是Spring MVC提供的一种机制,用于在请求处理过程中进行预处理和后处理。可以通过实现HandlerInterceptor接口来创建自定义拦截器,并通过配置文件或注解将其应用到特定的请求或路径上。 7. Spring MVC中的视图解析器是什么?如何配置? 视图解析器用于将逻辑视图名称解析为具体的视图对象。Spring MVC提供了多种视图解析器,如InternalResourceViewResolver(用于解析JSP视图)、ThymeleafViewResolver(用于解析Thymeleaf模板)等。可以通过配置文件或注解来配置视图解析器。 8. Spring MVC中的异常处理是如何实现的? Spring MVC提供了异常处理机制,可以通过@ControllerAdvice注解创建全局异常处理器,或在控制器类中使用@ExceptionHandler注解来处理特定异常。异常处理器可以捕获并处理控制器方法中抛出的异常,并返回适当的响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值