SpringMVC面试题

1.SpringMVC 常用注解都有哪些?

@requestMapping:用于请求 url 映射。
@RequestBody: 注解实现接收 http 请求的 json 数据,将 json 数据转换为 java 对象。
@ResponseBody :注解实现将 controller 方法返回对象转化为 json 响应给客户。
@Conntroller:控制器的注解,表示是表现层,不能用用别的注解代替

2、如何开启注解处理器和适配器?

在配置文件中(一般命名为springmvc.xml )通过开启 <mvc:annotation-driven>来实现注解处理器和适配器的开启。

3.如何解决 get 和 post 乱码问题?

解决 post 请求乱码:在 web.xml 里边配置一个 CharacterEncodingFilter 过滤器并设置编码为 utf-8即可。

4.解决 get 请求乱码:
修改 tomcat 配置文件添加编码与工程编码一致。

对参数进行重新编码

String userName = New String(Request.getParameter(“userName”).getBytes(“ISO8859-1”), “ utf-8”);
–ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。

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

在返回值前面加"forward:"就可以让结果转发

如"forward:user.do?name=method4"

在返回值前面加"redirect:"就可以让返回值重定向

如"redirect:http://www.baidu.com"

6.springMVC和struts2的区别有哪些?

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

B.springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例)

struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。

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

Struts采用值栈存储请求和响应的数据,通过OGNL存取数据。

7.讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么?

SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Struts2的是StrutsPrepareAndExecuteFilter

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

直接在方法上面加上注解@RequestMapping,并且在这个注解里面写上要拦截的路径

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

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

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

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

11:我想在拦截的方法里面得到从前台传入的参数,怎么得到
直接在形参里面声明这个参数就可以,但必须名字和传过来的参数一样
怎么样在方法里面得到Request,或者Session
直接在方法的形参中声明request,SpringMvc就自动把request对象传入

12.SpringMvc怎么和AJAX相互调用的

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

13当一个方法向AJAX返回特殊对象,譬如Object,List等,需要做什么处理?
要加上@ResponseBody注解

**

14.SpringMVC执行流程?

**
1.用户发起请求到前端控制器(Controller)

2.前端控制器没有处理业务逻辑的能力,需要找到具体的模型对象处理(Handler),到处理器映射器(HandlerMapping)中查	3.找Handler对象(Model)。

4.HandlerMapping返回执行链,包含了2部分内容: ① Handler对象、② 拦截器数组

5.前端处理器通过处理器适配器包装后执行Handler对象。

6.处理业务逻辑。

7.Handler处理完业务逻辑,返回ModelAndView对象,其中view是视图名称,不是真正的视图对象。

8.将ModelAndView返回给前端控制器。

视图解析器(ViewResolver)返回真正的视图对象(View)。

9.(此时前端控制器中既有视图又有Model对象数据)前端控制器根据模型数据和视图对象,进行视图渲染。

返回渲染后的视图 (html/json/xml)返回。

10.给用户产生响应。
### 关于Spring MVC的常见面试题 以下是关于Spring MVC的一些高频面试问题及其解答: #### 1. **什么是Spring MVC?** Spring MVC 是一种基于Java的轻量级Web开发框架,它是Spring Framework的一部分。它遵循MVC(模型-视图-控制器)设计模式,用于构建清晰分离的应用程序结构[^1]。 #### 2. **Spring MVC中的DispatcherServlet是什么?** `DispatcherServlet` 是Spring MVC的核心组件之一,作为前端控制器负责接收所有的HTTP请求并将其分发到相应的处理器(Handler)。通过配置文件或注解方式定义映射规则来实现这一过程[^1]。 #### 3. **Spring MVC如何处理请求流程?** 当客户端发起一个请求时,该请求会被转发给 `DispatcherServlet` 。随后按照如下顺序执行: - 调用合适的 HandlerMapping 来找到对应的 Controller; - 执行目标方法并将结果交给适配器进行解析; - 将最终的数据与逻辑视图名称返回至 DispatcherServlet ,再由其渲染实际页面后响应用户[^1]。 #### 4. **Spring Bean默认作用范围是什么?如果存在状态怎么办?** 在Spring容器中,默认情况下所有Bean都是以Singleton形式创建出来的。然而对于那些具有内部状态的对象来说可能会引发线程安全性方面的问题。因此建议要么让此类对象无状态化;要么考虑改变它们的作用域为Prototype从而每次注入新实例[^2]。 #### 5. **Spring MVC支持哪些类型的返回值?哪种更推荐使用?为什么?** 返回值可以是多种类型,包括但不限于String、ModelAndView等。其中较为常用的是String表示跳转路径名或者视图名字串。而 ModelAndView 则允许我们同时指定模型(Model)以及试图(View),不过通常为了简化代码书写习惯上还是倾向于采用字符串形式更好一些[^3]。 #### 6. **怎样向Session存储数据并通过Spring MVC管理生命周期?** 可以通过@SessionAttributes 注解读取特定属性保存进HttpSession 中直到超时期间结束为止。例如下面例子展示了如何利用Map接口参数自动绑定request scope内的键值对,并且还能把这些信息存入session里供后续访问[^4]: ```java @Controller @SessionAttributes(names={"key"}) // 或者 types={SomeType.class} public class ExampleController { @RequestMapping("/example") public String exampleMethod(@RequestParam String param, Map<String,Object> model){ model.put("attributeName","valueToBeStoredInSession"); return "viewName"; } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值