springMVC(二)——处理返回值、常用注解、文件上传下载、异常处理、Servlet过滤器、拦截器

零、注意

一、maven web项目中,不能直接访问静态资源(html、css、js等)。
1、为什么不能直接访问静态资源?
因为拦截的是//*.jsp所以路径为/*.html也会被拦截,但是dispatcherServlet不能处理这些html,需要交给tomcat默认的servlet去处理。

2、如何交给tomcat默认的servlet处理?
✳①交给默认servlet<mvc:defalut-servlet-handler></mvc:defalut-servlet-handler>
略②指定静态资源路径<mvc:resources mapping="映射路径(浏览器地址)" location="具体路径(webapp下的哪个文件夹下面的哪个静态资源)"></mvc:resources>(没添加一个静态资源都需要指定,复杂了)

二、返回数据类型(response)
1、重定向返回数据,需要加RedirectAttributes属性,获取时需要使用@RedirectAttributes注解
2、返回任意类型的数据,需要加@ResponseBody返回值转为json格式;
自定义类,还需要开启自定义转换,才能生效,👇<mvc:annotation-driven></mvc:annotation-driven>

三、拦截器与过滤器?
过滤器:tomcat提供的;
拦截器:springMVC提供的;用于对处理器进行预处理和后处理

四、Controller请求转发,json自动转换等功能
需要在spring的xml文件中添加<mvc:annotation-driven></mvc:annotation-driven>主要就是为了Spring MVC来用的,提供Controller请求转发,json自动转换等功能

五、文件上传下载需要导入jar包、实例化文件上传下载工具

Ⅰ、springMVC返回值的处理

【待补充】

Ⅱ、springMVC常用注解 0

一、@RequestParam
位置:用在方法的入参位置
作用:用于前端传入的参数与方法形参匹配(前端传入的参数名与方法形参名不一致才使用,否则没必要)
属性:

1)value:默认属性,用于指定前端传入的参数名称;
2)required:用于指定此参数是否必传(boolean),默认为true,此时前端不传数据就会报错;
3)defaultValue:当参数为必传参数且前端没有传入参数时,必须指定一个默认值。
@RequestMapping("test1")
 public String test1(@RequestParam(value = "user",required = true,defaultValue = "abc")String username){
   
     System.out.println(username);
     return "/index.jsp";
 }

解释——前端前端将user=***,传到控制层,控制层使用username接收;因为required = true,此时如果前端没有将参数传过来,使用默认值,则username=abc

二、@RequestHeader
位置:用在方法入参位置
作用:用于从请求头中获取参数
属性:同@RequestParam

@RequestMapping("test2")
    public String test2(@RequestHeader("cookie") String cookie){
   
        System.out.println(cookie);//JSESSIONID=2D7************
        return "/index.jsp";
    }

请求头——
在这里插入图片描述

三、@CookieValue
位置:用在方法入参位置
作用:用于从cookie中获取参数

 @RequestMapping("test3")
    public String test3(@CookieValue("JSESSIONID") String jsessionid){
   
        System.out.println(jsessionid);//2D7F453*********
        return "/index.jsp";
    }

在这里插入图片描述

四、@SessionAttributes(value={"…","…","…",……})
位置:放在类上
作用:将请求域的参数,放到session域中

AnnotationController.java

package com.hbw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@Controller
@RequestMapping("annotation")
@SessionAttributes(value = {
   "a","b","c","d","e"})
public class AnnotationController {
   
    @RequestMapping("test4")
    public ModelAndView test4(Map map, Model model, ModelAndView modelAndView, ModelMap modelMap, HttpServletRequest request){
   
        map.put("a","1");
        model.addAttribute("b","2");
        modelAndView.setViewName("/index.jsp");
        modelMap.addAttribute("d","4");
        request.setAttribute("e","5");

        return modelAndView;
    }
}

因为使用了request——tomcat内置对象之一,需要导入servlet-api的jar包
但是,新导入的jar包会与启动tomcat插件冲突,给jar包加个作用范围(scope=provided)

pom.xml

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年_H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值