前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SSM入门—SpringMVC框架

SSM入门—SpringMVC框架

作者头像
老K博客
发布2023-12-18 15:18:55
1330
发布2023-12-18 15:18:55
举报
文章被收录于专栏:老K博客老K博客

SpringMVC概述

Spring Web MVC 是一种基于Java的实现Web MVC设计模式的请求驱动类型的轻量级Web框架。

MVC的设计模式

M:model 模型

业务模型 数据模型 实体,业务代码,数据代码

V: View 视图

用于渲染数据,显示给客户

html jsp framemarker

C:Controller 控制器

主要用于接受参数,处理请求,返回结果

servlet controller

控制器主要作用:

  1. 接受参数
  2. 请求处理:调用模型
  3. 结果返回。大多为josn格式

SpringMVC工作流程

基于XML方式配置SpringMVC

操作步骤

导入Spring、SpringMVC依赖

代码语言:javascript
复制
  org.springframework
  spring-context
  5.1.9.RELEASE




  org.springframework
  spring-webmvc
  5.1.9.RELEASE
...

在web.xml文件中配置前端控制器

代码语言:javascript
复制
    springmvc
    org.springframework.web.servlet.DispatcherServlet

    
    contextConfigLocation
    
    classpath:spring_mvc.xml
  

  

  
    springmvc

    /
  
...

编写控制器

一个加上注解的普通Java类

代码语言:javascript
复制
@Controller
@RequestMapping(value = "/helloController")
//控制器
public class HelloController {

    @RequestMapping("/sayHello")
    public void sayHello(){
        System.out.println("say hello");
    }


    @RequestMapping("/sayHi")
    public void sayHi(){
        System.out.println("say hi");
    }
}
...

配置spring_mvc.xml

代码语言:javascript
复制
...

部署项目

将项目部署在Tomcat上

测试效果

输入路径:localhost/helloContorlle/sayHleeo

参数处理

基本数据类型:

可以直接传参

代码语言:javascript
复制
public void sayHello(int id,@RequestParam("test") String name){
        System.out.println(id);
        System.out.println(name);
        System.out.println("say hello");
    }...

@RequestParam("test") 注解用于传递的参数名和方法的参数名不一致时

2、dto对象:

如果参数是一堆,会封装在对象中

代码语言:javascript
复制
@RequestMapping("/add")
//    将前端传过来的参数自动映射到实体中
    //如果前端的是json格式对象  @RequestBody
    public void add(CompanyDTO companyDTO){
        System.out.println("添加方法");
        System.out.println(companyDTO);
    }
...

要求:传过来的参数名与实体中的属性名一致,才可以自动映射

resulful风格

一杠一值

简化了请求参数

对比:

get请求:/请求地址?id=1&name=admin

resultful请求:/请求路径/1/admin

在RequestMapping("/请求的地址/{id}/{name}")

代码语言:javascript
复制
@Controller
@RequestMapping("/restfulController")
public class RestfulController {

    @RequestMapping("/test/{id}/{name}")
    public void test(@PathVariable("id") int id,@PathVariable("name") String name){
        System.out.println("id:"+id);
        System.out.println("name:"+name);
    }

}
...

示例:

http://localhost/restfulController/test/10/zhangsan

id:10

name:zhangsan

日期格式:将前端传过来的参数(字符串)转换为日期对象

@DateTimeFormat

代码语言:javascript
复制
@DateTimeFormat 将前端传过来的参数(字符串)转换为日期对象 

//将字符串转换为日期格式数据
@DateTimeFormat(pattern = "yyyy-MM-dd")...

@JsonFormat

代码语言:javascript
复制
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8")

//返回值中要将日期对象转换为字符串...

扩展:Lombok插件

简写实体

对比:

以前的实体:需要自己添加setter,getter,tostring等方法

使用Lombok:只要加上@Data注解 就可以自动完成以上操作

只需要在pom.xml中添加依赖:

代码语言:javascript
复制
      org.projectlombok
      lombok
      1.18.4
...

结果的返回

前后端分离后,一般返回JSON格式数据

步骤:

引入依赖

代码语言:javascript
复制
      com.fasterxml.jackson.core
      jackson-databind
      2.9.8
    ...

使用@ResponseBody //@ResponseBody 将结果转换为json格式

代码语言:javascript
复制
//查询所有的公司列表
    @RequestMapping("/list")
    @ResponseBody   //@ResponseBody  将结果转换为json格式
    public List showAllCompanies(){
        //返回的是一个集合  要把这个集合转换为json的数据格式
        List companies = new ArrayList<>();

        Company company1 = new Company();
        company1.setId(1);
        company1.setName("国信安");
        company1.setLocation("云华路");
        company1.setBuildDate("2009-10-01");

        Company company2 = new Company();
        company2.setId(2);
        company2.setName("华为");
        company2.setLocation("郫县");
        company2.setBuildDate("2000-10-01");

        companies.add(company1);
        companies.add(company2);

        return companies;
    }
...
代码语言:javascript
复制
{
"code":0,
"msg":"查询成功",
"count":100,
"data":[
    [{"id":1,"name":"国信安","location":"云华路","buildDate":"2009-10-01"},               {"id":2,"name":"华为","location":"郫县","buildDate":"2000-10-01"}]
]
}...

可以自己封装结果对象

代码语言:javascript
复制
package com.gxa.util;

import lombok.Data;

import java.util.List;

@Data
public class ResutData {

    private int code;
    private String msg;
    private int count;
    private List data;

    public  static ResutData success(String msg,int count,List data){
        ResutData resutData = new ResutData();
        resutData.code = 0;
        resutData.msg = msg;
        resutData.count = count;
        resutData.data = data;
        return resutData;
    }


    public  static ResutData error(String msg){
        ResutData resutData = new ResutData();
        resutData.code = 1;
        resutData.msg = msg;
        return resutData;
    }
}
...
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年07月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringMVC概述
  • MVC的设计模式
    • M:model 模型
      • V: View 视图
        • C:Controller 控制器
          • 控制器主要作用:
          • SpringMVC工作流程
          • 基于XML方式配置SpringMVC
            • 操作步骤
              • 导入Spring、SpringMVC依赖
              • 在web.xml文件中配置前端控制器
              • 编写控制器
              • 配置spring_mvc.xml
            • 部署项目
              • 测试效果
          • 参数处理
            • 基本数据类型:
              • 2、dto对象:
                • resulful风格
                  • 示例:
                    • 日期格式:将前端传过来的参数(字符串)转换为日期对象
                    • 扩展:Lombok插件
                    • 结果的返回
                      • 引入依赖
                        • 使用@ResponseBody //@ResponseBody 将结果转换为json格式
                          • 可以自己封装结果对象
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                          http://www.vxiaotou.com