springMvc

1. 说一下 spring mvc 运行流程?

(1)用户发送请求至前端控制器DispatcherServlet;

(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;

(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

(4)DispatcherServlet 调用 HandlerAdapter处理器适配器;

(5)HandlerAdapter 经过适配调用 具体处理器(Handler,也叫后端控制器);

(6)Handler执行完成返回ModelAndView;

(7)HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;

(8)DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;

(9)ViewResolver解析后返回具体View;

(10)DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)

(11)DispatcherServlet响应用户。

2. spring mvc 有哪些组件?

  • 前置控制器 DispatcherServlet。
  • 映射控制器 HandlerMapping。
  • 处理器 Controller。
  • 模型和视图 ModelAndView。
  • 视图解析器 ViewResolver。

3. @RequestMapping 的作用是什么?

将 http 请求映射到相应的类/方法上。

4. @Autowired 的作用是什么?

@Autowired 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作,通过@Autowired 的使用来消除 set/get 方法。

5. REST风格

  • REST: Representational State Transfer : 表现层状态转化
  • 它是一种规范 ,浏览网页方式的规范
    • put 修改 @PutMapping
    • get 查询 @GetMapping
    • post 新增 @PostMapping
    • delete 删除@DeleteMapping
  • form表间只支持get和post请求,如果想支持更多的请求,要加上一个spring过滤器
<!-- 支持更多请求方式-->
  <filter>
    <filter-name>mf</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>mf</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

6. 前端控制器中的 /和/*的区别

/拦截所有,但不拦带后辍名的,如.jsp,.jpg,.js,.css 
/*拦截所  controller到jsp就无法执行

7. 如何处理静态资源

  • servlet处理静态资源
 <mvc:default-servlet-handler/>
  • springmvc处理静态资源
    <mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
    <mvc:resources location="/WEB-INF/css/" mapping="/css/**" />
    <mvc:resources location="/WEB-INF/img/" mapping="/img/**" />
    
  1. 如何处理日期格式
  • 输出格式
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    
  • 输入格式
    @JsonFormat(pattern ="yyy-MM-dd" )
    

9. 处理ajax

  • 输出格式
    • fastjson配置
    • 返回对象的类上@ResponseBody
  • 输入格式
    • js中是json对象,在Controller中配置类的对象
    • js中是json对象的字符串,在Controller中配置类的对象前要加上@RequestBody

10. 文件上传

  • 文件上传
    • method只能是post
    • enctype只能是multipart/form-data
  • 在pom.xml加入servlet依赖和common-fileupload
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
      <version>1.3.3</version>
    </dependency>
    
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
      <scope>provided</scope>
    </dependency>
    
  • springmvc中就需要专门的MutipartResolver解析器
    <!--文件解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="1024000"/>
    </bean>
    
  • 页面
    <h2>第二种:mutipart提供file.transferTo进行上传</h2>
    <form method="post" action="/reg2" enctype="multipart/form-data">
    	<input type="file" name="photo2">
    	<input type="submit" value="reg2">
    </form>
    
  • controller.java
    @PostMapping("/reg2")
    public String reg2(@RequestParam("photo2") CommonsMultipartFile file,HttpServletRequest request) throws IOException {
        String path = request.getServletContext().getRealPath("/")+"WEB-INF/img/"+file.getOriginalFilename();
        File f = new File(path);
        file.transferTo(f);
        request.setAttribute("photoName",file.getOriginalFilename());
        return "success";
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值