SpringMVC学习笔记【part1】基础配置

Spring——SpringMVC(三) 本文主要依据《Spring实战》第七章内容进行总结 前两节中,我们主要介绍了Spring MVC的控制器和视图解析器,通过上面两节内容,我们对Spring MVC已经有了一个初步的了解,也能够使用Spring MVC进行基本的Web层编程了,但是Spring MVC的知识还远未结束,在本节,我们将继续介绍Spring MVC的一些高级技术。 1、Spring MVC配置的替代方案 ... 阅读详情

SpringMVC 学习笔记 Part1

1. 三层架构和MVC

三层架构:

咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序。使用Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构。

表现层:WEB层,用来和客户端进行数据交互的。表现层一般会采用MVC的设计模型
业务层:处理公司具体的业务逻辑的
持久层:用来操作数据库的

MVC模型:

MVC全名是Model View Controller 模型视图控制器,每个部分各司其职。

Model:数据模型,JavaBean的类,用来进行数据封装。
View:指JSP、HTML用来展示数据给用户
Controller:用来接收用户的请求,整个流程的控制器。用来进行数据校验等

2. SpringMVC的概述

SpringMVC是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。它属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。

Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。SpringMVC在三层架构中的位置是表现层框架。

使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架。

3. SpringMVC的快速入门

新注释 @RequestMapping 介绍:

在Spring MVC 中使用该注解来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置。其中的默认值(别名为”path“)是指定请求的实际地址,类似于之前 JavaWeb 开发的 @WebServlet注解 的 value 。其余属性会在之后的笔记中补充。

根目录下的pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 指定编译版本 -->
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!-- spring版本锁定 -->
    <spring.version>5.0.2.RELEASE</spring.version>
</properties>

<!-- 导入jar包坐标 -->
<dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
</dependencies>

WEB-INF下的web.xml

<web-app>
    <display-name>Archetype Created Web Application</display-name>
    <!-- SpringMVC的核心控制器 -->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 配置Servlet的初始化参数,读取springmvc的配置文件,创建spring容器 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!-- 配置servlet启动时加载对象 -->
        <load-on-startup>1</load-on-startup>
        
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

< load-on-startup >标签的作用

  1. load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
  2. 它的值必须是一个整数,表示servlet应该被载入的顺序
  3. 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
  4. 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。
  5. 正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
  6. 当值相同时,容器就会自己选择顺序来加载。

resources下的springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置spring创建容器时要扫描的包 -->
    <context:component-scan base-package="swz"/>

    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 配置spring开启注解mvc的支持 -->
    <mvc:annotation-driven/>
    
</beans>

< mvc:annotation-driven >说明:使用该标签会自动加载 RequestMappingHandlerMapping(处理映射器)和 RequestMappingHandlerAdapter( 处 理 适 配 器 )。即在springmvc.xml中配置了< mvc:annotation-driven >,就替代了注解处理器和适配器的配置。

java下的HelloController.java

@Controller
public class HelloController {

    @RequestMapping(path="hello")
    public String sayHello(){
        System.out.println("Hello SpringMVC!");
        return "success";
    }

}

webapp下的index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>index</title>
</head>
<body>

    <h3>点击下面按钮入门SpringMVC</h3>
    <a href="hello">入门</a>

</body>
</html>

WEB-INF的pages下的success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

    <h3>恭喜你,你已经成功入门</h3>

</body>
</html>

4. 入门程序的分析

在这里插入图片描述

执行流程:

  1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件。

  2. 开启了注解扫描,那么HelloController对象就会被创建。

  3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法。

  4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件。

  5. Tomcat服务器渲染页面,做出响应。

  6. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到执行的具体方法。

  7. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件。

  8. Tomcat服务器渲染页面,做出响应。

在这里插入图片描述

SpringMVC入门之九:multipart文件上传 处理Multipart形式的数据SpringMVC以multipart形式来上传文件。在编写控制器方法处理文件上传之前,我们必须要配置一个multipart解析器,通过它来告诉DispatcherServlet该如何读取multipart。配置multipart解析器DispatcherServlet并没有实现任何解析multipart请求数据的功能。它将该任务委托给了Spring中Multipar 阅读详情

相关推荐

08-SD卡-TF卡硬件电路设计

SD卡-TF卡硬件电路设计

weixin_66510961的博客 8264

SpringMVC:最详细笔记partⅠ

SpringMVC最详细笔记partⅠ 一、springMVC-quickStar 解决maven加载项目过慢 archetypeCatalog internal 导入依赖 <!-- 版本锁定 --> <properties> <spring.version>5.0.2.RELEASE</spring.version> &lt...

Oooops_的博客 498

COMSOL中的动网格

首先我们先了解几个概念 (1)网格重划分(remesh):就是在某些特定的区域进行网格的重新划分,在Maxwell软件中的直线运动区域,当运动物体运动后,这个区域进行重新划分。 (2)morph:网格不重新划分,小范围的进行网格变形,针对运动物体运动位移较小,对变形区域不进行重划分,能够提高效率。 (3)网格滑移(sliding):针对圆形运动区域,运动与非运动区域进行网格滑移,当然边界上两侧网格不共节点,该方法不需要网格重新划分,大部分软件针对圆形运动区域采用该方法,比如maxwell的band,b

midiio的博客 7873

Spring 4.1.7 MVC @RequestPart 问题

今天在spring 4.1.7 中尝试 multipart/form-data 的方式上传文本和文件混合数据,服务器老报错,说请求中并没有提供XXX字段(服务端配置的@RequestPart绑定)。调试客户端multipart格式,甚至用 html页面,通过浏览器提交都不行。后来将 @RequestPart 换成 @RequestParam 就好了。之后查阅官方示例,也是用的后者。https://s

韩凯的博客 9313

SAP FICO 银企直连

银企直联或者自动付款的目的是和银行做一个接口,把SAP中的到期应付款(也包括预付款)按照一定格式(银行要求的)在审批后发送给银行,请银行按照这个付款指定进行付款,并跟踪付款状态的过程,这个过程在SAP中如何实现呢?根据个人项目经验,客户需求可分为如下三种: 1. 第一种是完全不自动方式,仅批量生成付款凭证,实际的付款还是通过原来的流程执行,和银行没有任何接口; 2. 第二种是半自动方式,这种方式下需要按照银行的要求的格式生成付款条件,然后把付款文件下载下来,通过企业版的网银接口把付款文件进行上载,提交后

IamRunjiang的博客 9294

OptiSystem仿真:波分与时分复用混合光网络的设计与性能优化

本文详细介绍了如何利用OptiSystem软件设计与优化波分复用与时分复用混合光网络。通过构建四路波分乘以四路时分的系统模型,文章阐述了从信源生成、复用合并、光纤传输到信号解复用与性能评估的全流程,并重点探讨了对抗色散、优化器件参数及探索高级调制格式等核心性能优化策略,为应对未来海量数据需求提供了高效、可行的仿真解决方案。

pink的博客 1108

SpringMVC 处理multipart形式的数据

    multipart格式的数据会将一个表单拆分为多个部分(part),每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制,下面展现了multipart的请求体:...

吃四碗饭的嘤嘤怪的博客 5838

AI安全攻防:十六进制编码与表情符号如何绕过ChatGPT安全限制

在人工智能安全领域,提示词工程是影响大语言模型行为的关键技术。其核心原理在于通过精心设计的输入文本,引导模型生成特定内容或执行特定任务。这项技术的价值在于能够深入探究模型的理解机制与决策边界,对于模型优化、安全测试及功能开发具有重要意义。在实际应用场景中,研究人员常利用编码转换、符号插入等方法构造输入,以测试模型安全护栏的鲁棒性。近期,一种结合十六进制编码与表情符号的组合攻击手法受到关注,该方法通过信息伪装与语义干扰,试图绕过模型内置的内容过滤机制,这凸显了当前AI安全在输入预处理与语义理解协同防御上面临的

weixin_30633405的博客 451

SpringMVC学习笔记【part3】常用注解

SpringMVC 学习笔记 Part3 1. @RequestMapping 注解 @RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系。 @RequestMapping注解可以作用在方法和类上。作用在类上时,为第一级的访问目录,作用在方法上时,为第二级的访问目录。 @Controller @RequestMapping("account") public class HelloController { @RequestMapping("hello") p

Parker_cpp的博客 461

FPGA实现串口升级及MultiBoot(十)串口升级SPI FLASH实现

采用软核进行串口升级的原因主要有以下几点:1、官方推荐:官方以前也推出了针对逻辑进行升级的程序《XAPP1081_QuickBoot》,但是从今年起(2024年)官方就停止更新相关例程了(详见下面截图),所以采用官方推荐的软核更新;2、简单并具有通用性:针对SPI或者BPI官方都有相关的IP,可应对市场上80%以上的FLASH,并且官方IP通用性极强,只需要修改几个参数就可以对不同厂家的芯片进行升级操作;

OpenFPGA的博客 2000

4.Simulink基础建模操作——加减乘除运算

加减乘除运算

FPGA/MATLAB学习教程/源码/项目合作开发 9553

SpringMVC学习笔记【part5】本地文件上传

SpringMVC 学习笔记 Part5 1. 文件上传的原理 本小节将回顾 JavaWeb 传统的文件上传方式和学习更为方便的 SpringMVC 提供的文件上传组件。首先先来回顾一下文件上传的一些前置知识。 form 表单的 enctype 取值必须是:multipart/form-data (默认值是:application/x-www-form-urlencoded) ,enctype 是表单请求正文的类型,multipart属性表示请求正文将被分成好几个部分。 form 表单的 method

Parker_cpp的博客 760

【查找单入口空闲区域】-python实现-附ChatGPT解析

时间限制:1s 空间限制: 256MB 限定语言:不限题目描述:给定一个 m x n 的矩阵,由若干字符X’和 O构成,"X表示该处已被占据,O表示该处空闲,请找到最大的单入口空闲区域。空闲区域是由连通的O组成的区域,位于边界的O可以构成入口,单入口空闲区域即有且只有一个位于边界的o作为入口的由连通的O组成的区域如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。第一行输入为两个数字,第一个数字为行数m,第二个数字列数n,两个数字以空格分隔,1

sinat_29950703的博客 243

SpringMVC学习笔记【part8】拦截器

SpringMVC 学习笔记 Part8 1. 拦截器的概述 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。用户可以自己定义一些拦截器来实现特定的功能。 拦截器和过滤器Filter的区别: 过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。 过滤器在 url-pattern 中配置了**/***之后,可以对所有要访

Parker_cpp的博客 364

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringMVC实现文件上传操作过程中遇到的坑:由于没有提供multi-part配置,无法处理parts

由于没有提供multi-part配置,无法处理parts

weixin_58622844的博客 1841

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JavaWeb学习笔记-part10-SpringMVC

1 概述 springmvc是基于spring的一个servlet升级版,实际上是spring的一个模块,专门做web开发的。 web开发底层是servlet,框架是在servlet基础上面增加一些功能,让你做web开发方便。 SpringMVC就是一个spring容器,放的是控制器对象(Controller)。我们要做的就是使用@Controller创建控制器对象,把对象放入springmvc容器中,把创建的对象作为控制器使用,这个控制器对象能接受用户的请求,显示处理结果,就当作是一个servlet

qq_51704510的博客 483

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SpringMVC学习笔记【part2】请求参数的绑定

SpringMVC 学习笔记 Part2 1. 请求参数的绑定 绑定机制:表单提交的数据都是key-value格式的,如username=root&password=123。 SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的,要求提交表单的name和参数的名称是相同的。 支持的数据类型:① 基本数据类型和字符 ② 实体类型(JavaBean)③ 集合数据类型(List、map集合等)。 语法格式:我们表单中参数名称必须和控制器中方法的形参名称保持一致。

Parker_cpp的博客 646

SpringMVC Required request part 'file' is not present

Required request part ‘file’ is not present 环境:springmvc-4.x ​ tomcat7.9 ​ idea 2017 ​ jdk 1.8 错误提示:Required request part ‘file’ is not present 遇到这种问题一般情况下都是参数未对应...

RoundYuan 4151

SpringMVC-part01什么是SpringMVC

1、SpringMVC ssm:mybatis+Spring+SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架:研究官方文档,锻炼自学能力,锻炼笔记能力,锻炼项目能力 SpringMVC+Vue+SpringBoot+SpringCloud+Linux SSM=JavaWeb做项目 Spring:IOC和AOP SpringMVC:SpringMVC的执行流程! SpringMVC:SSM框架整合! Spring 1.1

qq_56594964的博客 135

SpringMVC学习笔记【part7】异常处理

SpringMVC 学习笔记 Part7 1. SpringMVC的异常处理 首先先来回顾下 Java 中的异常。系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 Controller调用service,service调用dao,若期间发生异常,都是向上抛出的,最终 DispatcherServlet 会找异常处理器进行异常的处理。若没有异常处理器,最终会抛向浏览器,浏览器为我们打印

Parker_cpp的博客 304

Java0基础_day24_SpringMVC框架_PART1

标签:SpringMVC、SSM、拦截器、代理对象 1.SpringMVC概述 是什么? 为了让web开发更简单、更高效、便于维护升级,引入了SpringMVC。 从名字的角度看,SpringMVC是Spring框架的一个子模块,可以理解为Spring+MVC,这里的MVC是Model、View、Controller是SpringMVC三个核心概念对象的缩写。 从底层实现来看,SpringMVC可以看成是Servlet的高级版本,是加上一些其他功能的框架而已。 从容器的角度看,Spr...

zhugeheihei的博客 302

学习日记(SpringMVC_part_one)

新手如何使用postman(新手使用,简单明了)_postman使用教程-优快云博客System.out.println("普通参数传递:" + name + "," + age);System.out.println("普通参数传递:" + userName + "," + MyAge);System.out.println("Pojo参数传递:" + user);System.out.println("嵌套的Pojo参数传递:" + user);

m0_66691386的博客 959

SpringMVC学习笔记【part4】响应数据类型

SpringMVC 学习笔记 Part4 1.Controller方法 返回值为String Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器为物理视图的地址。 @Controller @RequestMapping("/user") public class UserController { @RequestMapping("myMVC") public String findOne(Model model) { User user = servic

Parker_cpp的博客 633

SpringBoot专题学习Part14:SpringBoot下的SpringMVC自动配置的内容

Spring Boot已经在内部自动配置好了SpringMVC 那么 具体是自动配置了哪些内容 让我们来了解: 注:英文内容是直接从官网扒的 Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans. 自动配置了ViewResolver(视图解析器) 根据方法的返回值得到视图对象View 然后视图对象决...

"✧treasure mountain✧" 7878

SpringMVC-part06整合SSM框架

6、整合SSM框架 整合SSM框架 在上一节中,我们了解了SpringMVC参数接收处理和结果跳转处理! 现在我们来看看,如何集成SSM框架!完整项目的整合! 整合SSM 环境要求 环境: IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识; 数据库环境 创建一个存放书籍数据的数据库表 CREATE DATABASE `ssmbuild`; USE `ssmbuil

qq_56594964的博客 249

黑马就业班——SpringMVC框架:part2

1、响应数据和结果视图 1.1 Controller控制器类方法的返回值类型   参考项目:springmvc_day02_01_response 。   controller控制器类的方法可以返回:字符串、void、ModelAndView对象   注意: 1、success.jsp标签记得加:isELIgnored="false"属性,否则在jsp文件无法使用EL表达式! 如:<%@...

LKJgdut的博客 343
上一篇: Spring学习笔记【part11】TX注解开发
下一篇: SpringMVC学习笔记【part2】请求参数的绑定
Parker7
博客等级 码龄7年 18粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Parker7

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

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

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

打赏作者

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

抵扣说明:

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

余额充值