Springmvc面试

                                         Springmvc面试

1 Springmvc执行流程

第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找 Handler

         可以根据xml配置、注解进行查找

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

         ModelAndView是springmvc框架的一个底层对象,包括 Model和view

第八步:前端控制器请求视图解析器去进行视图解析

         根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染

         视图渲染将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果
 

Springmvc的优点

1)它是基于组件技术的。全部的应用对象,无论控制器和视图,还是业务对象之类的都是 java组件.并且和Spring提供的其他基础结构紧密集成.

2)不依赖于Servlet API(目标虽是如此,但是在实现的时候确实是依赖于Servlet)

3)可以任意使用各种视图技术,而不仅仅局限于JSP

4 支持各种请求资源的映射策略

5)它应是易于扩展的

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

(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4"

(2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com"

4 Spring MVC的主要组件?

(1)前端控制器 DispatcherServlet(不需要程序员开发)

作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。

(2)处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的URL来查找Handler

(3)处理器适配器HandlerAdapter

注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。

(4)处理器Handler(需要程序员开发)

(5)视图解析器 ViewResolver(不需要程序员开发)

作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)

(6)视图View(需要程序员开发jsp)

View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)

5 Springmvc 中如何解决 GET | POST请求中文乱码问题?

GET方式:

每次发生请求之前对URL进行编码:

例如:Location.href="/encodeURI"(“http://localhost/test/s?name=中文&sex=女”);

更简便的方法,在服务器端配置URL编码格式:修改tomcat的配置文件server.xml:

只需增加 URIEncoding=“UTF-8” 这一句,然后重启tomcat即可。

<ConnectorURIEncoding="UTF-8"

    port="8080"  maxHttpHeaderSize="8192"  maxThreads="150"

    minSpareThreads="25"  maxSpareThreads="75"connectionTimeout="20000"        

    disableUploadTimeout="true" URIEncoding="UTF-8" />

POST方式:

可以每次在request解析数据时设置编码格式:request.setCharacterEncoding(“utf-8”);

也可以使用编码过滤器来解决,最常用的方法是使用Spring提供的编码过滤器:

在Web.xml中增加如下配置(要注意的是它的位置一定要是第一个执行的过滤器):

<filter>

    <filter-name>charsetFilter</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>

    <init-param>

        <param-name>forceEncoding</param-name>

        <param-value>true</param-value>

    </init-param>

</filter>

该过滤器要做的其实就是强制为所有请求和响应设置编码格式:

request.setCharacterEncoding(“utf-8”);
response.setCharacterEncoding(“utf-8”);

 6 Springmvc 和struts2的区别有哪些?

springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。

springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。

7 SngMvc怎么和AJAX相互调用的?

通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :

1 加入Jackson.jar

2 在配置文件中配置json的映射

3 在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。

 8 SpringMvc里面拦截器是如何使用

定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。

preHandle :进入 Handler方法之前执行,用于身份认证、身份授权,比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行

postHandle:进入Handler方法之后,返回modelAndView之前执行,应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图

afterCompletion:执行Handler完成执行此方法,应用场景:统一异常处理,统一日志处理

拦截器配置:

针对HandlerMapping配置(不推荐):springmvc拦截器针对HandlerMapping进行拦截设置,如果在某个HandlerMapping中配置拦截,经过该 HandlerMapping映射成功的handler最终使用该 拦截器。(一般不推荐使用)

类似全局的拦截器:springmvc配置类似全局的拦截器,springmvc框架将配置的类似全局的拦截器注入到每个HandlerMapping中

2 SpringMVC常用注解

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

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

9怎样在方法里面得到Request,或者Session?

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

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

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

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

15 Spring中IOC的作用与原理?对象创建的过程。

25 Springmvc 工作原理是什么?

27 Springmvc 中对于文件的上传有哪些需要注意

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

29 Springmvc 中对于文件的上传有哪些需要注意

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务