(五)Spring MVC起步

spring mvc,spring和springboot的关系 Spring 框架是基础,提供了核心功能和模块。Spring MVC是 Spring 框架的一部分,专注于 Web 应用开发。是 Spring 框架的扩展,通过自动配置和起步依赖简化了 Spring 应用的开发。Spring 框架提供了全面的企业级应用开发功能。Spring MVC是 Spring 框架的一部分,专注于 Web 应用开发。是 Spring 框架的扩展,通过自动配置和起步依赖简化了 Spring 应用的开发。 阅读详情

Sping MVC是基于模型-视图-控制器(Model-View-Controller,MVC)模式实现的Web层框架。

一个案例教你使用Spring MVC 构建Web应用程序。
<!--more-->
我们还是以一张图来了解Spring MVC如何做到和前端页面交互的:


# 搭建Spring MVC
首先我们就需要导入jar,这在前面的文章中已经介绍了,不在赘述。(需要jar可以去Maven仓库进行下载)

1. DispatcherServlet
根据图示,页面请求首先走的就是Spring MVC的前端控制器`DispatcherServlet`,我们需要在`web.xml`中配置前端控制器Servlet:
```xml
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.DispatcherServlet</servlet-class>
  <load-on>1</load-on>
</servlet>
```
默认情况下,`DispatcherServlet`加载时会从一个基于这个Servlet名字的XML文件中加载Spring上下文。
接下来我们必须声明`DispatcherServlet`处理哪些URL:
```xml
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</pattern>
</servlet-mapping>
```
**注意:** 我们常见的配置此资源请求路径为`*.do`,这样,在浏览器的请求路径通常是`xxx.do`这样,但是存在暴露URL实现细节的问题。
所以我们通过将`DispatcherServlet`映射到`/`,声明了它作为默认的Servlet会处理所有请求,包括静态资源的请求。

2. 命名空间
同时,Spring提供了`<mvc:resources>`元素,让你更灵活的配置如何处理静态资源的请求。下面我们创建`springmvc.xml`
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       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">
  <mvc:resources mapping="/resources/**" location="/resources/">
</beans>
```
如上所示这个`spring.xml`并没有太大区别,仅仅是多了一个命名空间。当我们想对静态资源请求做处理,`<mvc:resources>`就正好满足了我们的需求:
属性`mapping`设置为`/resources/**`表明路径必须以`/resources`开始,而且包含其任意子路径;属性`location`定义了这里静态资源的存储位置。

3. 处理器映射器和控制器
配置前端控制器Servlet和Spring MVC的命名空间,下面我们应该配置Spring MVC的控制器(`DispatcherServlet`需要咨询一个或多个处理器映射来明确的将请求分发给哪个控制器)。Spring自带多个处理器映射:
  * `BeanNameUrlHandlerMapping`:根据Bean的名字将控制器映射到URL
  * `ControllerBeanNameHandlerMapping`:根据控制器Bean的名字将控制器映射到URL。(Bean的名字不需要遵循URL的约定)
  * `ControllerClassNameHandlerMapping`:通过使用控制器的类名作为URL基础将控制器映射到URL
  * `DefaultAnnotationHandlerMapping`:将请求映射给使用@RequestMapping注解的控制器和控制方法
  * `SimpleUrlHandlerMapping`:使用定义在Spring应用上下文的属性集合将控制器映射到URL
如上几种控制器,因为我们使用`@RequestMapping`,所以以上控制器我们并不需要直接去使用,取而代之的是`<mvc:annotation-driven>`标签将自动为我们分配所需要的控制器。

4. 视图解析器
当前台`request`请求发送过来,先经过Spring MVC的`DispatcherServlet`前端控制器,然后经过Spring的处理器映射器和处理器控制器(Controller)对接收到URL信息进行处理;控制器会将处理后的信息(Model)返回给用户;之后再讲这些数据进行格式化,发送给一个视图(View);
控制器最后再将这些模型视图数据打包,将渲染输出的模型和视图名称发送给`DispatcherServlet`;最后`DispatcherServlet`将使用视图解析器把逻辑视图名匹配为一定特定的视图实现。
所以,接下来我们要配置视图解析器:
```xml
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
</bean>
```
Spring MVC中常用`InternalResourceViewResolver`视图解析器根据我们定义的路径将视图解析到浏览器上。`prefix`表示模板视图(JSP)所在路径的前缀名,`suffix`表示模板视图的后缀名。
**注意:**
  如果你的JSP放到了`WEB-INF`下,那么我们在浏览器上是无法直接访问的,必须通过控制层进行跳转,但同时这也保证了一定的安全性。所以我们习惯将JSP文件放到`WEB-INF/`下,将静态资源放到`webapp`下。

5. 编写控制层
```java
@Controller
@RequestMapping(value="/user")
public class UserController{
 
  @RequestMapping(value="/save", method = RquestMethod.POST)
  public String save(@RequestParam String username, @RequestParam String password, Model model){
    //逻辑处理
    return "save";
  }
}
```
如上,这就是一个简单的控制器,我们接下来分析一下这个Controller:
1. `@Controller`(`@Component`注解的一种)表明了该类是一个控制器类(我们需要现在配置文件中配置扫描这个控制器类`<context:component-scan>`),`<xontext:component-scan>`会查找被`@Component`标注的类,将其注册为Bean。
2. `@RequestMapping`注解有两个作用:1.表名此方法(`save()`)是一个请求处理方法;2.指明了该方法要处理请求`/save`路径下的请求。所以我们看到`@RequestMapping`注解可以标注在类上和方法上,其实分别表示两种不同的作用范围,因为类包裹了方法。如我们现在的配置,就表示`save()`方法的在浏览器上的请求路径应该是:`localhost:8080/(项目名)/user/save`(如果我们指定了前端控制器`DispatcherServlet`的映射路径,如:`*,do`,那么`save()`方法的请求路径就应该是`localhost:8080/(项目名)/user/save.do`)。
3. `method=RequestMethod.POST`指定了当前请求是POST请求
4. `return`表明了该映射方法需要返回到哪里。首先我们观察该`save()`方法的返回值数据类型,那么设置为`String`在Spring MVC的映射方法中就表示要返回一个视图,我们只需要定义返回视图的名字,Spring MVC会根据视图解析器查找此名字对应的视图。如我们现在的配置返回的视图路径其实就是:`/WEB-INF/save.jsp`(在视图解析器中我们已经配置了前缀和后缀)。
5. `@RequestParam`:该注解并不是必须的,它提供了一些属性如可以设置默认值等,在参数不匹配的时候有用,且对于当前我们这种请求包含多个参数时尽量使用`@RequestParam`,避免一些未知的问题。
6. `Model`对象内部类似`Map<String, Obeject>`,且提供了一些方式用来设置值。通过`Model`对象的`addAttribute()`方法设置的值可以在JSP中用EL表达式取出来,类似放到了域对象中

# 入门案例

首先我们看一下项目目录结构(**注意** :我这里使用的是IDEA+Maven),可能和大家的有所区别,但大家目前不要过分关注这些。



## web.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         id="WebApp_ID" version="2.5">

    <display-name>Archetype Created Web Application</display-name>
    <welcome-file-list>
        <welcome-file>/WEB-INF/index.jsp</welcome-file>
    </welcome-file-list>

    <!-- 配置Spring的字符编码过滤器 -->
    <filter>
        <filter-name>CharacterEncoding</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>CharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- ContextLoaderListener监听器监听servlet的创建 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 告诉监听器需要加载那些配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring.xml</param-value>
    </context-param>

    <!-- Spring MVC的前端控制器 -->
    <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/springmvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
```
注意之前没有介绍`CharacterEncodingFilter`,此过滤器是Spring提供的为避免`request`请求乱码问题而设定的。
配置Spring MVC的前端控制器时,包含了`<init-param>`标签旨在加载前端控制器时同时去加载Spring MVC的上下文。

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

    <!-- 开启注解扫描 -->
    <context:component-scan base-package="service"/>

    <!-- 加载数据库资源配置文件 -->
    <context:property-placeholder location="classpath:resource/jdbc.properties"/>

    <!-- 配置c3p0连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 注入Bean -->
    <bean id="userService" class="service.UserServiceImp"/>
    <bean id="userDao" class="dao.UserDaoImp">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
```
注意这里配置连接池我们使用的是加载外置的属性文件:`jdbc.properties`,使用`<context:property-placeholder>`加载。

## springmvc.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       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
         http://www.springframework.org/schema/mvc
         http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 扫描Controller层 -->
    <context:component-scan base-package="controller"/>

    <!-- 处理静态资源 -->
    <mvc:resources mapping="/resources/**" location="/resources/"/>

    <!-- 一个注解实现配置:BeanNameUrlHandlerMapping(处理器映射器)和DefaultAnnotationHandlerMapping(处理器控制器) -->
    <mvc:annotation-driven/>

    <!-- 配置Spring MVC视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/"/>
        <!-- 后缀 -->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>
```

## Controller层
```java
@Controller
@RequestMapping(value = "/user")
public class UserController {

    //注入
    @Autowired
    private UserService userService;

    //跳转到添加用户信息页
    @RequestMapping(value="/savePage")
    public String savePage(){
        return "view/save";
    }

    //保存用户
    @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(@RequestParam String username,@RequestParam String password, Model model){
        userService.save(username,password);
        model.addAttribute("message","保存数据成功");
        return "view/success";
    }
}
```
如果我们想要访问保存信息的JSP页面,应在浏览器中输入:`localhost:8080/user/savePage`;而保存表单信息方法的路径是:`localhost:8080/user/save`

## Service层
1. `UserService`
```java
public interface UserService {
    void save(String username, String password);
}
```
2. `UserServiceImp`
```java
@Transactional
public class UserServiceImp implements UserService {

    @Autowired
    private UserDao userDao;

    //保存
    public void save(String username, String password) {
        userDao.save(username,password);
    }
}
```
用`@Transaction`标识该类,Spring会为该类设置事务性性通知(配合`<tx:annotation-driven>`)

## Dao层
1. `UserDao`
```java
public interface UserDao {
    void save(String username, String password);
}
```
2. `UserDaoImp`
```java
public class UserDaoImp extends JdbcDaoSupport implements UserDao {

    //保存数据
    public void save(String username, String password) {
        //使用Spring提供的JDBC模板可以直接执行SQL语句
        this.getJdbcTemplate().update("insert into user(id,username,password) values(?,?,?)",null,username,password);
    }
}
```
这里我们仍使用的是Spring提供的JDBC模板类,只需要dao继承这个模板类即可。使用`JdbcDaoSupport`的`getJdbcTemple()`方法执行SQL语句。(`this`表示当前对象)



## 前端页面

1. `save.jsp`

```html
<h2>表单</h2>
<hr/>
<form action="<%=basePath%>/user/save" method="post">
    username: <input type="text" name="username"/><br/>
    password: <input type="password" name="password"/><br/>
    <input type="submit" value="提交"/>
</form>
```

2. `success.jsp`

```html
<head>
    <title>Title</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1>${message}</h1>
</body>
</html>
```



## 运行

首先我们需要把项目部署到Tomcat服务器上,然后启动Tomcat:



没有报错,接下来我们来浏览器中输入我们项目中添加页面的访问路径:`localhost:8080/user/savePage`



我们输入中文信息,并点击提交,通过断点查看:



后台映射方法`save()`接收到了JSP表单传递进来的参数,并且中文没有乱码(如果没有配置`CharacterEncodingFilter`就可能乱码)。继续执行:



当我们的request请求经控制层处理完毕后,`DispatcherServlet`将视图数据返回到页面上,我们`return`已经设置了返回页面`/WEB-INF/view/success.jsp`,那么请求成功就会返回到该页面上。并且我们在`success.jsp`中用EL表达式取出来了`message`这个属性的值,当我们在`Controller`控制层设置了`message`值为`数据保存成功`,就相当于保存进了request域中一个名为`message`的值。

数据库:



<br/>

# 交流

如果大家有兴趣,欢迎大家加入我的Java交流群:671017003 ,一起交流学习Java技术。博主目前一直在自学JAVA中,技术有限,如果可以,会尽力给大家提供一些帮助,或是一些学习方法,当然群里的大佬都会积极给新手答疑的。所以,别犹豫,快来加入我们吧!

<br/>

# 联系

If you have some questions after you see this article, you can contact me or you can find some info by clicking these links.

- [Blog@TyCoding's blog](http://www.tycoding.cn)
- [GitHub@TyCoding](https://github.com/TyCoding)
- [ZhiHu@TyCoding](https://www.zhihu.com/people/tomo-83-82/activities)

Spring MVC介绍 Spring MVC 全名是 Spring Web MVC,简称 Spring MVC或者 Spring Web.Spring MVC 是基于Servlet API的web框架,从一开始Spring框架是包含Spring MVC部分,也就是说Spring MVC是Spring 框架的一部分。 阅读详情

相关推荐

深入浅出Spring Boot 起步依赖和自动配置

我们知道 Spring Boot 能快速的搭建起一个应用,简化了大量的配置过程,那到底有多”简”呢? 我们通过一个例子来说明,平时我们通过 Spring 和 Spring MVC 搭建一个 helloword 的 Web 应用,需要做以下工作: 配置 pom.xml 添加 Spring 、 Spring MVC 框架的依赖,同时还需要考虑这* 些不同的框架的不同版本是否存在不兼容的问题。 配置 ...

Java_No2的博客 773

【SSM】SpringMVC学习笔记-DAY1

一、案例——第一个SpringMVC应用 1. 创建项目,引入jar包 2.配置前端控制器 在web.xml中配置SpringMVC的前端控制器DispatcherServlet <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" ...

ZhShy 455

【Spring Boot原理】假设我们要创建一个简单的Spring Boot应用,使用Spring MVC来处理HTTP请求Spring MVC是一个用于构建Web应用的框架,它是Spring框架的一

Spring Boot通过自动配置和起步依赖简化了Spring应用的配置和启动过程,使得开发者可以更快地开始编码。而Spring MVC提供了一个灵活的Web应用框架,通过MVC模式将应用的不同部分分离,提高了代码的可维护性和可测试性。两者的结合为Java Web开发提供了强大的支持,使得开发者可以专注于业务逻辑的实现,而无需担心底层的技术细节。学习教程(传送门)1、掌握JAVA入门到进阶知识(持续写作中……2、学会Oracle数据库用法(创作中……3、手把手教你vbs脚本制作(

王大师企业官方博客 3466

spring mvc的简单搭建+各种jar包的导入

首先配置web.xml文件<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.

梨落满秋的博客 4579

智能座舱架构与芯片- (10) 音频篇 下

若将有限个 量化样值的绝对值从小到大依次排列,并对应地依次赋予一个十进制数字代码(例如,赋予样值0的十进制数字代码为0),在码前以“+”、“-”号为前缀,来 区分样值的正、负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。如果声学密封不牢,来自内部结构的噪声可能到达传感器,两个传感器之间的泄漏可能降低BF算法的性能。未来,随着汽车电动化的普及,传统的ANC降噪所针对的发动机噪音已经不复存在,而路噪问题将越发明显,因此,全新的RNC主动路噪消减技术将会有一个更为宽广的市场。

joanna_xiao的博客 3838

本届挑战赛亚军方案:基于大模型和多AGENT协同的运维

我们分别构建了异常检测基础模型,一旦系统接受到异常即会通知LLM主管Agent,主管Agent对异常问题进行决策与子领域Agent进行桥接,多个子领域Agent协同工作,实现运维故障自动诊断和多个任务模型的编排,提升运维效率。

weixin_52705010的博客 2292

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter(版本问题之一json)

转载自:https://blog.csdn.net/qq_36514705/article/details/81203442?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164593058116780274162464%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164593058116780274162464

免责声明:本资料部分整理自合法网络公开渠道,部分为个人学习积累成果,仅作学习参考、学术交流使用。所收费用仅为资料搜集整理的时间劳务酬劳。版权归原作者及出版方所有,本人不承担相关版权及内容法律责任,若有侵权请告知,即刻删除处理。 529

保姆级教程:从Salmon输出到DESeq2,搞定RNA-seq表达矩阵标准化与下游分析准备

本文提供从Salmon输出到DESeq2标准化的RNA-seq数据分析全流程指南,详细解析表达矩阵构建、标准化方法选择及下游分析准备。重点介绍如何将Salmon定量结果转换为DESeq2兼容格式,包括TPM与原始计数的处理技巧,以及常见问题排查方法,帮助研究人员高效完成RNA-seq数据分析。

weixin_42699679的博客 304

org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter

Ajax响应中文乱码 [SpringMVC使用@ResponseBody处理Ajax请求] Spring3.0 MVC @ResponseBody 的作用是把返回值直接写到HTTP response body里。 Spring使用AnnotationMethodHandlerAdapter的handleResponseBody方法, AnnotationMethodHandlerAda

yuanyuan214365的博客 5065

手把手教你用Simulink搭建BPSK调制解调系统(附完整参数设置与波形分析)

本文详细指导如何使用Simulink搭建BPSK调制解调系统,涵盖从理论到实践的全流程,包括参数设置、模块连接和波形分析。重点解析调制解调中的关键参数和常见问题,如带通滤波器设计、载波同步等,帮助读者快速掌握BPSK系统的实现与调试技巧。

weixin_27741699的博客 422

【AI大模型:前沿】46、AI+无人机:智能飞行革命全景指南——从技术突破到行业应用与未来趋势

AI+无人机的融合不仅是技术迭代,更是“空间生产力”的革命——它将人类活动范围从地面拓展至低空,重构物流、农业、应急等行业的生产方式。当前,技术突破(如多模态感知、群体智能)与法规松绑(超视距飞行许可)正加速产业化,预计2030年全球低空经济市场规模将突破万亿美元。技术层:轻量化AI模型、边缘-云端协同、安全冗余系统;应用层:垂直领域解决方案(如电网AI巡检、精准农业);生态层:无人机巢建设、空管系统、数据服务平台。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 5589

第三章 DispatcherServlet详解 ——跟开涛学SpringMVC

3.1、DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。 具体请参考第二章的图2-1。   DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1...

jinnianshilongnian的专栏 3521

气象大模型光伏功率预测中的应用:从短期,超短期,中长期的实现与开源代码详解

本文详细介绍了基于大模型的光伏功率预测方法,涵盖超短期(15分钟-1小时)、短期(1-6小时)和中长期(1天-1周)预测。文章首先讨论了数据准备与预处理,包括历史功率、气象、天文和电站特性数据的收集与特征工程。随后,针对不同预测需求,提出了多种深度学习模型:超短期预测采用1DCNN-LSTM混合模型,短期预测使用Transformer模型,中长期预测则通过多尺度特征提取模型和概率预测方法处理不确定性。文章还提供了模型训练、评估、部署和优化的完整流程,并开源了代码实现。未来研究方向包括结合数值天气预报、开发时

专注AI大模型,软件混淆,授权 1569

Spring MVC起步(五)

ping MVC是基于模型-视图-控制器(Model-View-Controller,MVC)模式实现的Web层框架。 一个案例教你使用Spring MVC 构建Web应用程序。 我们还是以一张图来了解Spring MVC如何做到和前端页面交互的: 搭建Spring MVC 首先我们就需要导入jar,这在前面的文章中已经介绍了,不在赘述。(需要jar可以去Maven仓库进行下载) Disp...

史天航的博客 304

STM32 使用IQmath实现SVPWM

文章目录SVPWMIQMATHIQmathLib测试部分程序附件 SVPWM SVPWM是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,通常由三相逆变器的六个功率开关管组成,经过特定的时序和换相所所产生的脉冲宽度调制波,最终输出的波形可能会十分接近理想的正弦波形。 具体如下图所示;左侧为复平面,即空间矢量,右侧为时域的正弦波形; 关于SVPWM原理的文章非常多,这里可以推荐一下网上一个非常不错的教程《SVPWM的原理及法则推导和控制算法详解第五修改版》,

一名热爱技术的工程师的博客。分享技术干货,记录美好生活。永远相信美好的事情即将发生。 2万+

Copilot在游戏开发中的应用:Unity脚本自动生成实践

2021年GitHub Copilot的发布,为代码自动生成带来了革命性突破。作为基于GPT模型训练的AI辅助编程工具,Copilot能根据注释、函数名、代码上下文,实时生成符合语法和逻辑的代码片段,甚至完整脚本。减少重复劳动:自动生成模板代码(如生命周期、结构),让你专注核心逻辑;降低API学习成本:对Unity特有的组件(RigidbodyAnimator)、类(),Copilot能生成符合最佳实践的调用代码;统一代码风格:通过团队共享提示词模板,让生成的代码符合项目规范;快速原型迭代。

AIGC应用创新大全的博客 1617

Spring Boot 起步依赖

参考书《Spring Boot实战》 1.Spring Boot起步依赖 Spring项目的依赖管理也很费力。需要决定项目要用哪些库,还要考虑库的版本和其他库的版本不会用冲突。 原来的Spring项目中,如果要使用某项功能,需要考虑支持该功能需要什么库?需要考虑库的Group和Artifact?库的版本号?哪个版本不会和项目中的其他依赖发生冲突? ...

dream_heheda的博客 7428

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring MVC 与 Spring Boot 详解

Spring MVC 是 "骨架":负责 Web 层的请求处理,是 Spring 生态处理 HTTP 的核心。Spring Boot 是 "自动化工具":基于 Spring MVC 等 Spring 组件,通过自动配置、起步依赖等特性简化开发,让开发者聚焦业务逻辑而非框架配置。是构建 Java Web 应用的主流方案。

2502_92141759的博客 972

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

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

Spring MVC起步

1.简要概述springmvcSpring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控

等风的帆 547

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spring MVC 与 Spring Boot

Spring MVC 是 "工具":解决 Web 层的请求处理问题,是 Spring 生态的 Web 核心。Spring Boot 是 "加速器":基于 Spring MVC 等 Spring 组件,简化开发流程,让开发者更专注于业务逻辑而非配置。Spring Boot = Spring MVC + 自动配置 + 起步依赖 + 嵌入式服务器 + ...,它是使用 Spring MVC 的最佳实践方式。

2502_92141759的博客 758

Spring、Spring MVC、Spring Boot 有何不同?

Spring 是整个体系的基础框架,提供了 IoC(控制反转)和 AOP(面向切面编程)等核心机制,用于管理对象、依赖和事务,是所有模块运行的地基;Spring MVC 建立在 Spring 之上,专注于 Web 层开发,通过 DispatcherServlet 实现请求分发、控制逻辑与视图渲染分离,让 Web 开发结构化、清晰;而 Spring Boot 则是在两者的基础上进行整合与封装,提供自动配置、起步依赖和内嵌服务器,大幅减少配置工作,使得开发者无需关心底层细节即可快速构建和运行应用。

m0_73341242的博客 940

Spring Boot Spring MVC

Spring MVC 是一个基于模型-视图-控制器(MVC)模式的 Web 框架,提供了一整套处理 HTTP 请求的工具,包括控制器(Controller)、视图解析(View Resolver)和模型绑定(Model Binding)。

Flying_Fish_roe的博客 1994

spring mvc 起步

1:mvc的核心思想是业务数据抽取同业务数据呈现相分离 2:HandlerAdapter用来处理handleinterceptor和 ControlInter 生成的handleExecuteChain 请求 diapatcherServlet 接受请求,--> 交给handleMapper处理,返回一个 handleExecuteChain(包含拦截器和相应的han...

weixin_33897722的博客 147

Spring MVC 全面解析

**Spring MVC** 是 Spring 框架中的一个模块,它基于 MVC(Model-View-Controller)设计模式,旨在帮助开发者构建灵活、松耦合的 Web 应用。主要目的是简化传统 Servlet+JSP 模式下的 Web 开发方式。

技术让我们连接在一起 2027

Spring Web MVC

Spring WebMVC是基于ServletAPI构建的原始Web框架,从⼀开始就包含在Spring框架中。它的 正式名称“SpringWebMVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC"

2302_81705247的博客 1993

深入解析Spring Boot中的起步依赖(Starter Dependencies)

起步依赖是Spring Boot提供的一种依赖管理机制,它将一组相关的依赖打包在一起,形成一个预配置的依赖集合。通过引入一个起步依赖,开发者可以一次性获取所有必要的库和配置,而无需手动管理每个依赖的版本和兼容性。除了使用Spring Boot提供的起步依赖,开发者还可以创建自定义的起步依赖,以满足特定项目的需求。自定义起步依赖通常是一个Maven或Gradle模块,包含一组相关的依赖和配置。创建一个Maven模块,定义自定义起步依赖:

xycxycooo的博客 2003
上一篇: (四)Spring中的事务管理
下一篇: SpringMVC之文件上传和下载
TyCoding
博客等级 码龄9年 316粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值