一、什么是MVC?

1、MVC就是一个分层架构模式:

 2、SpringMVC的运行流程

Spring MVC框架学习 spring mvc框架搭建_java

二、什么是SpringMVC框架

springMVC它是spring框架的一个分支,该springMVC框架主要完成的功能是:==接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示== 可以把它理解为和Servlet干的工作是一样的。

三、SpringMVC搭建框架

1、创建maven-web工程

2、引入SpringMVC相关依赖

Spring MVC框架学习 spring mvc框架搭建_spring_02

 3、在web.xml文件中配置springMVC的前端控制器

Spring MVC框架学习 spring mvc框架搭建_mvc_03

 3、在resources中创建spring的配置文件

 4、在SpringMVC中添加扫描组件

Spring MVC框架学习 spring mvc框架搭建_java_04

5.创建一个controller类

Spring MVC框架学习 spring mvc框架搭建_Spring MVC框架学习_05

 四、如何在controller接受请求的参数

1、接受少量参数

只需要在方法的地方添加参数就行,但是这个参数名一定要和请求的参数名相同。

Spring MVC框架学习 spring mvc框架搭建_开发语言_06

2、接受大量大参数

譬如:表单提交

我们需要封装一个实体类来接受这些参数:

封装的实体类:

Spring MVC框架学习 spring mvc框架搭建_java_07

 前端界面:

name名称必须和是实体类的属性名一样,接受这些参数并赋值给实体类对象

Spring MVC框架学习 spring mvc框架搭建_mvc_08

 

Spring MVC框架学习 spring mvc框架搭建_java_09

 2.1发现接受的参数值乱码:---只能添加过滤器

(1)自己创建编码过滤器. jdk1.8一定要重写init和destory方法  1.9以后可以不写

public class MyEncodingFilter implements Filter {
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        servletRequest.setCharacterEncoding("utf-8");
        servletResponse.setCharacterEncoding("utf-8");
        filterChain.doFilter(servletRequest,servletResponse);
    }
    public void destroy() {

    }
}

 web.xml:

<filter>
        <filter-name>encodingfilter</filter-name>
        <filter-class>com.ykq.filter.MyEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>encodingfilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

(2)springmvc提供了一个编码过滤器.

Spring MVC框架学习 spring mvc框架搭建_spring_10

 

Spring MVC框架学习 spring mvc框架搭建_开发语言_11

 3、接受的参数含有日期类型

解决办法:

在时间类型的属性上添加一个注解:@DateTimeFormat(pattern = "yyyy-MM-dd")

在springmvc配置文件上开启注解驱动

<!--开启注解驱动-->
    <mvc:annotation-driven/>

五、处理静态资源

无法加载图片: 原因:springmvc的前端控制器DispatcherSerlvet也把静态资源拦截器。放行静态资源

<!--放行静态资源:哪些资源为静态资源。css img js html-->
    <mvc:default-servlet-handler/>

六. 如何把controller数据返回到网页并回显。

@RequestMapping("/list3")
    public String list3(HttpSession session){
        Student student=new Student(3,"tom","120@qq.com",new Date());
        session.setAttribute("user",student);
        return "list.jsp"; //转发
    }

七. 如何使用重定向跳转

在方法的返回字符串的内容时加上redirect:

@RequestMapping("list5")
    public String list5(){
        System.out.println("!!!!!!!!!!!!!!!!!");
        return "redirect:list.jsp"; //当springmvc看到你返回的字符串钟含有redirect:时 它认为你要进行重定向跳转
    }

八. springmvc返回json数据

当发生异步请求时,ajax请求时,我们需要返回json数据

SpringMVC如何返回json数据,

1.内置了一个jar. jackson的jar包

<!--jackson依赖 可以把java对象转换为json对象-->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.2.2</version>
    </dependency>

2. 在controller返回的数据类型变成javabean对象。

@RequestMapping("json01")
    @ResponseBody //作用:把java对象转换为json对象
    public List<Student> json01(){ //这里返回的类型为java对象。 之前都是返回字符串
        List<Student> list=new ArrayList<Student>();
        list.add(new Student(4,"张学友","220@qq.com",new Date()));
        return list; //当中json
    }

九、springmvc的全局异常处理类

全局异常处理类的作用: 当controller发生异常,则有全局异常类来处理并执行相应的处理方法。

如何使用全局异常处理类

1.创建一个异常类: @ControllerAdvice注解

@ControllerAdvice //表示该为类controller的异常处理类
public class MyExceptinHandle {


     @ExceptionHandler(value = RuntimeException.class) //当发生RuntimeException就会触发该方法
     public String error(){
         return "error.jsp";
     }

    @ExceptionHandler(value = Exception.class) //当发生Exception就会触发该方法
    public String error2(){
        return "error2.jsp";
    }
}

2.保证springmvc能够扫描到该类。

如果是ajax请求返回的应该是一个json数据。

十、SpringMVC拦截器

过滤器: 过滤掉某些资源,

拦截器只会拦截controller层的资源路径。

1.创建一个类,并实现HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {

    //拦截器的处理方法。
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("经过了该拦截器");

        return true;//true:表示拦截器放行 false:不放行
    }
}

2.把该类注册到springmvc.xml配置文件上。

Spring MVC框架学习 spring mvc框架搭建_java_12

 十一、文件上传

1.文件上传的原理

Spring MVC框架学习 spring mvc框架搭建_开发语言_13

 2.文件上传到本地服务器

2.1添加文件上传的依赖

Spring MVC框架学习 spring mvc框架搭建_mvc_14

 2.2 创建一个页面

Spring MVC框架学习 spring mvc框架搭建_mvc_15

 

Spring MVC框架学习 spring mvc框架搭建_开发语言_16

 2.3在springmvc中配置文件上传解析器

Spring MVC框架学习 spring mvc框架搭建_mvc_17

2.4创建upload01接口方法

Spring MVC框架学习 spring mvc框架搭建_java_18