文档章节

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

薛小二
 薛小二
发布于 05/24 19:16
字数 1507
阅读 28
收藏 7

什么是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的组合

© 著作权归作者所有

薛小二
粉丝 8
博文 32
码字总数 53494
作品 0
伦敦
私信 提问
金九银十,史上最强 Java 面试题整理。

以下会重新整理所有 Java 系列面试题答案、及各大互联网公司的面试经验,会从以下几个方面汇总,本文会长期更新。 Java 面试篇 史上最全 Java 面试题,带全部答案 史上最全 69 道 Spring 面试...

Java技术栈
2018/09/13
0
0
后台开发常问面试题集锦(问题搬运工,附链接)

Java基础问题 String的’+’的性能及原理 java之yield(),sleep(),wait()区别详解-备忘笔记 深入理解Java Stream流水线 抽象 & abstract关键字 Java final 修饰符知识点总结(必看篇) Java中的...

大黄有故事
2017/11/18
0
0
java面试准备

一、java知识点 Java虚拟机工作原理详解(http://blog.csdn.net/bingduanlbd/article/details/8363734) JDK、JRE、JVM三者间的关系 (http://playkid.blog.163.com/blog/static/5628726020137......

7哥
2016/10/31
869
1
3年Java开发经验面试题总结

前言 毕业转行做开发3年以来, 学到了很多, 加上自己的兴趣爱好, 个人认为已经成为了一个合格的程序员. 与刚开始找工作面试相同的是都会问一些相同的问题, 不同的是现在面试官会更注重为什么,...

java成功之路
2018/10/31
0
0
Spring IOC知识点一网打尽!

前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 单例模式你会几种写法? 工厂模式理解了没有? 在刷Spring书籍的时候花了点时间去学习了单例模式和工...

Java3y
2018/05/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式Session的实现方式

JWT Token 使用 JWT Token 储存用户身份,然后再从数据库或者 cache 中获取其他的信息。这样无论请求分配到哪个服务器都无所谓。 Tomcat + Redis 在 tomcat 的配置文件中配置: <Valve class...

禅明
10分钟前
0
0
Android饼图 PieChart

PieChart 饼图,android 图表。会根据定义PieChartView的大小自动居中,所以如果要调整位置,只需要在xml更改PieChartView位置大小即可。 https://github.com/ccMagic/PieChart 1、先看一下效...

ccMagic
14分钟前
1
0
说说我当初是如何学Linux的

今天我就说说我当初是如何从一名普通桌面维护工程师,通过学习和努力转成Linux运维工程师的,以及作为Linux运维工程师需要一些什么技能和知识,希望可以帮到一些对Linux有兴趣或者想往Linux...

Linux就该这么学
15分钟前
1
0
Tomcat启动异常Unable to register MBean [HikariDataSource (null)]:InstanceAlreadyExistsException

Unable to register MBean [HikariDataSource (null)] with key 'xxx'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hik ari:name=baseDataSource,ty......

sunranhou
20分钟前
1
0
qt从普通线程发信号到UI线程

加入从当前一个普通线程发送信号到ui,更新Ui只能使用Qt::BlockingQueuedConnection,用Qt::QueuedConnection会一会有用一会没用,并且会导致崩溃。 connect(this, &Task::startTask, this, ...

青黑
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部