spring mvc框架的知识应用

本文详细介绍了Spring MVC的使用,包括创建Maven Web工程、配置DispatcherServlet、Controller参数接收、时间类型参数处理、静态资源处理、数据回显、JSON返回、全局异常处理、拦截器、文件上传到本地和OSS服务器,以及ElementUI异步上传并回显。内容涵盖Spring MVC的多个核心知识点。
摘要由CSDN通过智能技术生成

1.如何使用springmvc

(1)创建一个maven-web工程

因为版本问题web-xml文件需要替换,替换代码如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
  
</web-app>

(2)引入springmvc的依赖

    <dependency>
<!--      springmvc框架的包-->
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.15.RELEASE</version>
    </dependency>

(3)注册DispatcherServlet到web.xml文件上

<servlet>
    <servlet-name>Disser</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
<!--      编译后的路径-->
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>Disser</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

(4)创建我们的springmvc配置文件

新建springmvc

 在生成文件中加入

<!--    映射路径,controller-->
<context:component-scan base-package="com.sfc.controller"/>
<!--    注释,在加入时间是使用-->
    <mvc:annotation-driven/>
<!--    静态资源放行-->
    <mvc:default-servlet-handler/>

(5)创建一个controller类(类似于之前的servlet)

@Controller:该类定义为处理类,类似于(@Webservlet)

@RequestMapping(value="hello"):把请求路径映射到该方法上

@ResponseBody:返回的数据为json数据

package com.sfc.controller;

import com.sfc.ultis.CommonResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * author  : sfc
 *
 * @date : 2022-06-12 17:31
 */
@Controller
public class MyController {
    @RequestMapping(value = "hello01")
    @ResponseBody
    public Map hello01(){
        System.out.println("jdkjfk");
        Map map = new HashMap();
        map.put("姓名","张三");
        map.put("年龄",44);
        return map;
    }
}

2.springmvc的运行流程

(1)客户端发送请求http://localhost:8080...........

(2)来到Tomcat服务器

(3)springmvc的前端控制器DipatcherServlet接受所有的请求

(4)查看你的请求地址与哪个@RequestMaping匹配

(5)执行对应的方法

(6)把该字符串经过视图解析器拼接

(7)拿到拼接地址,找到对应的网页

3.如何在Controller接受请求的参数

(1)接收一个参数:如删除

    @RequestMapping(value = "hello")
    public String hello(int id){
        System.out.println(id);
        return "这里是跳转网页";
    }

(2)接收大量参数:如表单提交

controller:

    @RequestMapping(value = "biaodan")
    public String biaodan(Student student){
        System.out.println(student);
        return "这里是跳转网页";
    }

jsp:

<%--
  Created by IntelliJ IDEA.
  User: sfc
  Date: 2022-06-12
  Time: 18:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="hello01">
    姓名:<input type="text" name="name"><br>
    城市:<input type="text" name="address"><br>
    时间:<input type="text" name="shijian"><br>
    <input type="submit" value="提交">
</form>
</body>
</html>

实体:这里的 @DateTimeFormat(pattern = "yyyy-MM-dd")表示时间格式为yyyy-MM-dd

        (从前端输出到后台时的时间格式)

拓展:

@JsonFormat(pattern = "yyyy-MM-dd"):从后台输出到前端时的时间格式

此方法需要在springmvc配置文件中配置

<!--    注释,在加入时间是使用-->
    <mvc:annotation-driven/>
package com.sfc.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

/**
 * author  : sfc
 *
 * @date : 2022-06-12 18:56
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Student {
    private String name;
    private String address;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date shijian;
}

4.在web.xml上设置编码过滤器

解决乱码的问题

<!--  编码过滤器-->
  <filter>
    <filter-name>encoding</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>encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

5.接收时间类类型的参数

在时间类型的属性上加一个注解

@DateTimeFormat(pattern="yyyy-MM-dd")

前面已经说过,这里不在多说


    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date shijian;

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

注意:这里导入的包地址应该是下面这个,以mvc结尾的

xmlns:mvc="http://www.springframework.org/schema/mvc"
<!--    注释,在加入时间是使用-->
    <mvc:annotation-driven/>

6 处理静态资源

无法加载图片的原因,springmvc的前端控制器DispatcherServlet也把静态资源拦截了

在springmvc中配置

<!--    静态资源放行-->
    <mvc:default-servlet-handler/>

7 如何把controller的数据回显到网页

request,session,Model

Controller:

@SessionAttributes(value = {"modelsession"})//设置该model的key为session范围

package com.sfc.controller;

import com.sfc.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;

/**
 * author  : sfc
 *
 * @date : 2022-06-12 20:29
 */
@Controller
@SessionAttributes(value = {"modelsession"})//设置该model的key为session范围
public class HuixianController {
    @RequestMapping(value = "req")
    public String req(HttpServletRequest request){
        Student student = new Student("张三","郑州",new Date());
        request.setAttribute("user",student);
        return "hello.jsp";
    }
    @RequestMapping(value = "model")
    public String model(Model model){
        Student student = new Student("张三1","郑州1",new Date());
        model.addAttribute("user1",student);
        return "hello.jsp";
    }
    @RequestMapping(value = "session")
    public String session(HttpSession session){
        Student student = new Student("张三2","郑州2",new Date());
        session.setAttribute("user2",student);
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值