SpringMVC常见面试题总结【概念】

原创
2019/05/24 19:16
阅读数 355

什么是Spring MVC?介绍你对SpringMVC的理解。

springmvc是一个基于java实现了mvc设计模式的轻量级web框架,通过把model,view,controller分离,将web层进行解耦,把复杂的web应用分成几部分,简化开发。

SpringMVC的流程?

1.用户发送请求被前端DispatcherServlet捕获, 2.DispatcherServlet捕获到请求后,调用HandlerMapping处理映射器,请求获取Handle 3.处理器映射器跟据请求url找到具体的处理器,生成处理器对象及处理器拦截器并返回给DispatcherServlet 4.DispatcherServlet调用HandlerAdapter处理器适配器 5.HandlerAdapter经过适配调用handler 6.Handler执行完成返回ModelAndView 7.HandlerApdater将Handler执行结果ModelAndView返回给DispatcherServlet 8.DispatcherServlet讲讲ModelAndView传给ViewResolver视图解析器进行解析 9.ViewResolver解析后返回具体View 10.DispatcherServlet对View进行视图渲染(即将模型数据充至视图中)然后DispatcherServlet响应用户

SpringMVC的优点:

与spring框架继承,支持各种请求资源的映射策略,支持各种视图技术

SpringMVC的主要组件?

前端控制器DispatcherServlet: 作用:接受请求,响应结果,相当于转发器 处理器映射器HandlerMapping 作用:跟据请求的·url来查找Handler 处理器适配器HandlerAdapter 处理器Handler(需要程序员开发) 视图解析器 ViewResolver(不需要程序员开发) 作用:进行视图的解析,根据视图逻辑名解析成真正的视图视图View(需要程序员开发jsp)

SpringMVC怎样设置重定向和转发?

1.转发:在返回值前面加“forward” 2.重定向:在返回值前面加:“redirect”

SpringMVC怎么样和AJAX相互调用的?

通过jackson框架把java里面的对象直接转化为js可以识别的json对象,具体步骤: 加入jar包:jackson.jar 在配置文件中配置json的映射 在接受Ajax方法里面直接返回list等,但在方法前面加@ResponseBody注解

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

1.解决post请求乱码方法 在web.xml配置一个过滤器,设置成utf-8

<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>

2.get请求解决方法 修改tomcat配置文件添加编码与工程编码一样

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

另一种是对参数重新编码: String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。

SpringMVC的异常处理?

可以将异常抛给Spring框架,有Spring处理,我们只需要配置简单的异常处理器,在异常处理器中添加视图页面即可。

SpringMVC常用的注解有那些?

@RequestMapping:用于处理请求 url 映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。

@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。

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

是单例模式,所以在多线程访问的时候存在线程安全的问题。

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

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

怎样在方法里面得到request,或者session?

直接在方法形参声明request,SpringMVC就自动就把request对象传入

如何在拦截的方法里面得到前台传入的参数?

在形参里面声明这个参数,名字和传过来的参数必须一样

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

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

SpingMVC中函数的返回值是什么?

返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好

SpringMVC用什么对象从后台向前台传递参数的?

用modelmap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。

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

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

如何在spring mvc实现RESTful 服务

1.导入jackson2包

2,开启注解驱动mvc:annotation-driven/

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

ModelAndView

SpringMvc里面拦截器是怎么写的

有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可:

<!-- 拦截器的配置 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- ** 表示当前目录及其子目录路径 -->
			<mvc:mapping path="/**"/>
			<bean class="com.dpb.interceptor.FirstIntercepter"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

介绍SpringMVC restful风格:

RESTful是一种架构的规范与约束、原则,符合这种规范的架构就是RESTful架构 在RESTful接口中,所有的方法都是返回JSON,没有返回页面的(ModelAndView),因此,所有的方法上都需要添加@ResponseBody注解。一个替代的简化方案,是使用 @RestController 代替@Controller。@RestController实际上是一个组合注解,是@Controller和@ResponseBody的组合

展开阅读全文
打赏
0
7 收藏
分享
加载中
更多评论
打赏
0 评论
7 收藏
0
分享
返回顶部
顶部