springMVC面试

流程:

  1. 客户端请求提交到 DispatchServlet (前端控制器)
  2. 由 DispatchServlet 控制器根据请求路径返回一个 HandlerExcutionChain 给 DispatcherServlet
    • HandlerExcutionChain:Handler 和 Interceptor集合
  3. DispatchServlet 调用 HandlerAdapter 适配器
  4. HandlerAdapter 调用具体的 Handler 处理业务
  5. Handler 处理结束返回一个集体的 ModelAndView 给适配器
  6. 适配器将 ModelAndView 给 DispatchServlet
  7. DispatchServlet 把视图给 ViewResolver 视图解析器
  8. ViewResolver 返回一个具体的视图给 DispatchServlet
  9. 渲染视图
  10. 展示给用户

在这里插入图片描述

SpringMVC 控制器是单例的,多线程有线程安全问题,可以使用 ThreadLocal

常用注解

@CookieValue(value="sessionId", required=false)

可让处理方法入参绑定某个 Cookie 值

@RequestParam:只能接收简单参数

@RequestBody:前端请求必须是 POST,能够将 JSON 数据绑定到 Java对象中

不加注解:可以是简单数据类型,也可以是 Java对象,不能接收 Map对象

乱码解决

Post请求

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

Get请求

  1. 修改 tomcat配置文件

    <ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
    
  2. 使用 String 编码转换

    String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
    

拦截器

  1. 实现 HandlerInterInterceptor 接口
  2. 继承实现了上面接口的类,如 Spring 提供的抽象类 HandlerInterceptorAdapter
<!-- 配置SpringMvc的拦截器 -->
<mvc:interceptors>
    <!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->
    <bean id="myInterceptor" class="com.dyq.action.MyHandlerInterceptor"></bean>
 
    <!-- 只针对部分请求拦截 -->
    <mvc:interceptor>
       <mvc:mapping path="/modelMap" />
       <bean class="com.dyq.action.MyHandlerInterceptorAdapter" />
    </mvc:interceptor>
</mvc:interceptors>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值