1.什么是springMVC

  springmvc是spirng框架的一个模块,是一个基于MVC框架的web框架

2.springmvc的流程

  a.客户端发送请求

  b.前端控制器DispatcherServlet 接收请求,并调用处理映射器HandlerMapping(可以根据xml配置、注解进行查找)

  c.处理映射器找到具体的处理器进行处理,生成处理器对象Handler以及处理拦截器HandlerInterceptor(如果有则生成)返回到前端控制器

  d.DispatcherServlet 调用处理适配器HandlerAdapter

  e.处理适配器通过调用具体的处理器,处理器执行后生成ModelAndView,返回给处理适配器ModelAndView对象

  f.处理适配器向DispatcherServlet 返回ModelAndView (ModelAndView是springmvc框架的一个底层对象,包括 Model和view)

  g.DispatcherServlet 将ModelAndView 传递给视图解析器 ViewReslover

  h.视图解析器解析后返回具体的view(根据逻辑视图名解析成真正的视图(jsp))

  i.DispatcherServlet 根据View进行渲染视图(视图渲染将模型数据(在ModelAndView对象中)填充到request域)。

  j.前端控制器向用户响应结果

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

1、针对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");

2、针对Get方式的乱码问题,

由于参数是通过URL传递的,所以上面通过request设置的编码格式是不起作用的,

此时可以在每次发生请求之前对URL进行编码:例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");

当然也有更简便的方法,那就是在服务器端配置URL编码格式:

修改tomcat的配置文件server.xml:
             <ConnectorURIEncoding="UTF-8" 
                 port="8080"   maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               connectionTimeout="20000" disableUploadTimeout="true" />

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

 4.SpringMVC与Struts2的主要区别?

 
1.springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过滤器。
2.springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),
   struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。 
3.Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,
  springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,
最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
4.性能上Struts1>SpringMvc>Struts2 开发速度上SpringMvc和Struts2差不多,比Struts1要高
 
5.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决

是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段

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

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

在返回值前面加"redirect:"就可以让返回值重定向,譬如"redirect:http://www.baidu.com"

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

一般用@Conntroller注解,表示是表现层,不能用用别的注解代替.

8.springMVC常用注解标签详情

 

SpringMVC相关的面试题的更多相关文章

  1. SSM(Spring + Springmvc + Mybatis)框架面试题

    JAVA SSM框架基础面试题https://blog.csdn.net/qq_39031310/article/details/83050192 SSM(Spring + Springmvc + M ...

  2. springBoot注解大全JPA注解springMVC相关注解全局异常处理

    https://www.cnblogs.com/tanwei81/p/6814022.html 一.注解(annotations)列表 @SpringBootApplication:包含了@Compo ...

  3. Linux系统运维相关的面试题 (问答题)

    这里给大家整理了一些Linux系统运维相关的面试题,有些问题没有标准答案,希望要去参加Linux运维面试的朋友,可以先思考下这些问题.   一.Linux操作系统知识 1.常见的Linux发行版本都有 ...

  4. SpringMVC相关试题

    1.下列相关Spring自动装配的说法中,错误的是( ). (选择一项) A:在Spring配置文件中,可以通过<bean>元素的autowire属性指定自动装配方式B: autowire ...

  5. Spring以及SPringmvc相关问题: ServletContext -父子容器

    总结如下: 明确了Servlet规范中ServletContext的作用和意义.此外明确一个Tomcat中多个web应用,每个人web应用有唯一的一个ServletContext(全局上下文).[例子 ...

  6. 面试题_ Java EE 相关的面试题

    为了做 Java EE 的朋友,这里列出了一些 web 开发的特定问题,你们可以用来准备 JEE 部分的面试: 10 大 Spring 框架面试题及答案(参见)10 个非常好的 XML 面试问题(Ja ...

  7. Spring IOC 相关的面试题

    Spring最基础的部分就是IOC,对IOC的理解程度从某个方面代表着你对Spring  的理解程度,看了网上的一些面试题,针对Spring IOC相关的重点是下面几个: 1.Spring中Bean ...

  8. Linux内核相关常见面试题

      转:http://www.embeddedlinux.org.cn/html/xinshourumen/201303/11-2475.html   本文详细阐述了linux内核相关的开发职位面试中 ...

  9. 大数据相关的面试题(摘自网络)hbase,kafka,spark

    1.讲讲你做的过的项目, 项目里有哪些难点重点呢?    kafkaDirect ES  /hive  kafka producer   难点值得一提的有两点:  1.rdd中用到外部变量的时候如何处 ...

随机推荐

  1. Linux下onvif客户端获取ipc摄像头 GetProfiles:获取h265媒体信息文件

    GetProfiles:获取媒体信息文件 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致接口调用失败.实现 ...

  2. php 计算两个日期相差天数

    <?php $startdate=strtotime("2013-3-09"); $enddate=strtotime("2013-4-05"); $da ...

  3. python学习笔记(一)学习资料记录

    相关资料网站 1. python3简明教程 适合新学者,因为可以在线操作,并且校验结果,同时还有考试系统.比较基础 2. python数据分析数据科学中文英文工具书籍下载 免费的中英文数据的PDF下载 ...

  4. Hive HQL基本操作

    一. DDL操作 (数据定义语言) 具体参见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 其实就是我们在创建 ...

  5. [Golang学习笔记] 04 程序实体1 变量声明

    变量声明: Go语言的程序实体包含:变量.常量.函数.结构体和接口,是一门静态类型的编程语言. (在声明变量或常量的时候,需要指定类型,或者给予足够信息是的Go语言能够推导出类型) Go语言变量的类型 ...

  6. cocos2d-x安装

    mac 安装2.2.6为例 1.进入cocos2d-x/tools/project-creator/ 2.输入 python create_project.py -project HelloWorld ...

  7. 记账本app(1)

    今天开始做做这个app了,加油,目前在看视频,明天正式入手

  8. 版本控制工具(下)——Git的远程仓库、分支管理与其它操作

    预备知识: SSH协议参考资料:http://blog.csdn.net/vevenlcf/article/details/43273405 图解公钥和私钥:http://blog.csdn.net/ ...

  9. 20155337 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

    20155337 <Java程序设计>实验三(敏捷开发与XP实践)实验报告 实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基 ...

  10. 2762 helloparty·开车

    2762 helloparty·开车 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold   题目描述 Description hellokitty的一个朋友要来他家,但是 ...