【SpringMVC】基础部分

2023-09-16 19:10:18

SpringMvc

  • Spring MVC 是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。

  • MVC(Model View Controller),一种用于设计创建Web应用程序表现层的模式

    • Model(模型):数据模型,用于封装数据
    • View(视图):页面视图,用于展示数据
    • Controller(Handle 处理器):处理用户交互的调度器,用于根据用户需求处理程序逻辑

三层架构

  • 表现层:负责数据展示

  • 业务层:负责业务处理

  • 数据层:负责数据操作

SpringMVC项目步骤

1 新建maven的web项目
在这里插入图片描述
2 导入maven依赖

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
  <scope>provided</scope>
</dependency>
<!--jsp坐标-->
<dependency>
  <groupId>javax.servlet.jsp</groupId>
  <artifactId>jsp-api</artifactId>
  <version>2.1</version>
  <scope>provided</scope>
</dependency>
<!--spring的坐标-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>
<!--spring web的坐标-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>
<!--springmvc的坐标-->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>5.1.9.RELEASE</version>
</dependency>
<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.24</version>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

3 创建controller
在这里插入图片描述

@Controller
public class UserController {
    @RequestMapping("/save")
    public String say(){
        System.out.println("你好");
        return "a.jsp";
    }
}

4 创建spring-mvc.xml配置文件(本质就是spring的配置件)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
    ">

    <context:component-scan base-package="com.xinzhi"/>
</beans>

5 web.xml中配置前端控制器

<servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:spring-mvc.xml</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>DispatcherServlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

6 新建a.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: 86166
  Date: 2023/9/16
  Time: 11:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>Title</title>

</head>
<body>
<p>p标签</p>
${name}
</body>
</html>

7 配置tomcat
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试

参数绑定代码

//    默认类型:

    @RequestMapping("/test1")
    public ModelAndView tset1(HttpServletRequest request,ModelAndView modelAndView){
        String name = request.getParameter("name");
        System.out.println(name);
        modelAndView.setViewName("a.jsp");
        modelAndView.addObject("name",name);
        return modelAndView;
    }
//    简单类型:
    @RequestMapping("/test2")
    public String test2(String name,String age){
        System.out.println(name);
        System.out.println(age);
        return "a.jsp";
    }
//# 对象类型
    @RequestMapping("/test3")
    public String test3(User user){
        System.out.println(user);
        return "a.jsp";
    }
//# 数组
    @RequestMapping("/test4")
    public String test4(String[] name){
        System.out.println(Arrays.toString(name));
        return "a.jsp";
    }

//# list类型
    @RequestMapping("/test5")
    public String test5(@RequestParam("name") List<String> name){
        System.out.println(name);
        return "a.jsp";
    }
//类型转换
    @RequestMapping("/test6")
    @ResponseBody
    public String test6(Date time){
        System.out.println(time);
        return "bbb";
    }
  • 自定义数据绑定

    • 定义转换器
    public class MyDateConverter implements Converter<String, Date> {
    
        @Override
        public Date convert(String s) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date date = null;
            try {
                date = df.parse(s);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
    }
    
    • 注解驱动,使转换器起作用
    <!--1.将自定义Converter注册为Bean,受SpringMVC管理-->
    <bean id="myDateConverter" class="com.xinzhi.converter.MyDateConverter"/>
    <!--2.设定自定义Converter服务bean-->
    <bean id="conversionService"
          class="org.springframework.context.support.ConversionServiceFactoryBean">
        <!--3.注入所有的自定义Converter,该设定使用的是同类型覆盖的思想-->
        <property name="converters">
            <!--4.set保障同类型转换器仅保留一个,去重规则以Converter<S,T>的泛型为准-->
            <set>
                <!--5.具体的类型转换器-->
                <ref bean="myDateConverter"/>
            </set>
        </property>
    </bean>
    <!--开启注解驱动,加载自定义格式化转换器对应的类型转换服务-->
    <mvc:annotation-driven conversion-service="conversionService"/>
    
更多推荐

本地Tomcat网页搭建结合Cpolar内网穿透实现公网访问

文章目录1.前言2.本地Tomcat网页搭建2.1Tomcat安装2.2配置环境变量2.3环境配置2.4Tomcat运行测试2.5Cpolar安装和注册3.本地网页发布3.1.Cpolar云端设置3.2Cpolar本地设置4.公网访问测试5.结语1.前言Tomcat作为一个轻量级的服务器,不仅名字很有趣(让人想起童年)

探索Linux内核参数的妙用:深入理解配置,打造高效运行环境

文章首发地址Linux内核参数是指可以在Linux操作系统中通过修改内核参数来调整系统行为的设置。这些参数控制了操作系统的各种功能和特性,包括内存管理、网络协议、文件系统、进程调度等。在Linux中,内核参数可以通过多种方式进行修改和配置,包括在启动时通过传递命令行参数、通过sysctl命令动态修改、通过修改配置文件等

ESP32低功耗蓝牙BLE通信

ESP32低功耗蓝牙BLE通信蓝牙分类GATT协议GATT角色ESP32蓝牙简介ESP32开发板作为BLE服务设备或扫描设备手机APP连接作为BLEServer的ESP32总结蓝牙分类经典蓝牙ClassicBluetooth):用于数据量比较大的传输,如:图像、视频、音乐等。低功耗蓝牙(BluetoothLowEner

学习笔记:卸载nav2 navigation2导航

nav2二进制文件安装nav2导航安装方式分为二进制文件安装和源码方式安装,如果想用最快的方式跑通代码,推荐二进制安装,不用编译,没有缺少依赖编译失败的烦恼,安装命令:sudoaptinstallros-$ROS_DISTRO-navigation2ros-$ROS_DISTRO-nav2-bringupros-$RO

AIMS医院手术麻醉信息系统全套源码,自主版权,开箱即用

手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生成麻醉的各种医疗文书,完成共享HIS、LIS、PACS和EMR等手术患者信息,从而提高麻醉、手术工作的管理水平。系统包

JVM架构和内存管理优化

Java虚拟机(JVM)是Java编程语言的核心组件,负责执行Java字节码并提供运行时环境,使得Java程序可以在不同的平台上运行。了解JVM的工作原理和内存管理对于优化代码性能和理解Java的内存管理和垃圾收集机制非常重要。在本文中,我们将详细讲解JVM的架构、类加载器、运行时数据区、执行引擎、本地方法接口以及内存

Android 小组件 AppWidgetProvider

一、相关文档二、小组件是什么?三、AppWidget核心类AppWidgetProvider源码解读和原理分析1、先看AppWidgetProvider源码2、AppWidgetProvider回调方法分析onUpdate(Contextcontext,AppWidgetManagerappWidgetManager,

基于Kubernetes的Serverless PaaS稳定性建设万字总结

作者:许成铭(竞霄)数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的SLA数字,更是与客户切身利益乃至身家性命息息相关,稳定性压倒一切。本文将侧重于实际落地而非方法论,阐述云产品SAE业务侧稳定性实际建设过程中的经验和思考。

【milkv】st7735驱动

前言本文介绍milkv-duo加载st7735的lcd屏幕,以及屏幕显示log。参考文章:记录为Linux配置spi屏幕(st7735s)https://community.milkv.io/t/milk-v-duo-spi-st7789/131一、电路图1.1pin设置打开spi2的引脚duo-buildroot-s

怎么压缩ppt大小?快速压缩ppt文件

怎么压缩ppt大小?在工作或生活中,ppt文件对于我们必不可少,我们用它编写工作总结或者会议提纲,非常的好用,深受大家的喜欢。由于使用比较频繁,所以常常会遇到PPT文件过大的情况,ppt文件太大使用起来会造成很大的不便,这时候就需要对ppt文进行压缩,压缩的目的就是将它的体积变小一点。然而,许多人并不清楚如何缩小PPT

海外ASO优化之提高应用曝光度的技巧1

作为应用程序的开发者,如何使我们的应用在众多竞争对手中脱颖而出?如何应用在AppStore搜索中排名更高,以确保它符合AppStore搜索中的搜索意图?这些都是我们要重点考虑的。1、做好应用程序描述。在填写应用描述之前,需要了解我们的应用有哪些特点和功能,或者是能够给用户解决哪些问题。此外我们还可以添加一些具有创意的屏

热文推荐