springMVC快速入门

这篇具有很好参考价值的文章主要介绍了springMVC快速入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

springMVC快速入门

springMVC快速入门,springMVC,java

简介

MVC是一种软件架构的思想,将软件按照模型、视图、控制器类划分。

M(model):模型层,指工程中的javaBean,作用是处理数据
javaBean分为两类:

  • 一类称为实体类Bean(专门存储业务数据,如:User…)

  • 另一类称为业务处理Bean(指Servlet或Dao对象,专门用来处理业务逻辑和数据访问)

V(view):视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据
C(controller):控制层,指工程中的servlet,作用是接收请求和响应浏览器

MVC的工作流程

用户通过视图层发送请求服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕将结果返回到Controller,Controller再根据请求处理的结果找到相应的View视图,渲染数据后最终相应给浏览器。

springMVC快速入门,springMVC,java

什么是springMVC

springMVC是Spring的一个后续产品、是Spring的一个子项目,同时也是Spring为表述层开发提供的一阵套完备的解决方案。

特点

  • springMVC是Spring框架的一部分,可以方便的利用Spring所提供的其他功能。
  • 灵活性强,易于与其他框架集成。
  • 提供了一个前端控制器DispatcherServlet,使开发人员无需额外开发控制器对象。
  • 可自动绑定用户输入,并能正确的转换数据类型。
  • 内置了常见的校验器,可以校验用户输入。如果校验不能通过,那么就会重定向到输入表单。
  • 支持国际化。可以根据用户区域显示多国语言。
  • 支持多种视图技术。它支持JSP、Velocity和FreeMarker等视图技术。
  • 使用基于XML的配置文件,在编辑后,不需要重新编译应用程序。

第一个springMVC程序

具体步骤
1、创建maven工程

springMVC快速入门,springMVC,java

2、设置打包方式为war(pom.xml)

springMVC快速入门,springMVC,java

3、引入依赖
<!--springMVC-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.1</version>
</dependency>
<!--servletAPI-->
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.12.RELEASE</version>
</dependency>
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

thymeleaf是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。

4、配置web.xml

先将web.xml配置文件的内容做修改

<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>

注册SpringMVC的前端控制器DispatcherServlet

方式一:默认配置方式

在此配置下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为<servlet-name>-servlet.xml,如下的文件所对应的SpringMVC配置文件位于WEB-INF下,文件名为springMVC-servlet.xml

<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">
    <!--配置SpringMVC的前端控制器,对浏览器发送的请求进行统一处理-->
    <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <!--
      设置springMVC的核心控制器所能处理的请求的路径,
      /所匹配的请求可以是/login或.html或.css方式的请求路径但/不匹配.jsp请求路径
      -->
      <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

方式二:扩展配置方式(使用最多)

可以通过init-param标签设置SpringMVC配置文件的位置和名称,通过load-on-startup标签设置SpringMVC前端控制器DispacherServlet的初始化时间。

<servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--通过初始化参数指定SpringMVC配置文件的位置和名称-->
    <init-param>
       <!--contextConfigLocation为固定值-->
      <param-name>contextConfigLocation</param-name>
      <!--classpath:表示从类路径查找配置文件,如maven工程中的src/main/resources...springMVC.xml表示的是具体的文件-->
      <param-value>classpath:springMVC.xml</param-value>
    </init-param>
    <!--将前端控制器DispatcherServlet的初始化时间提前到服务器启动时-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

springMVC快速入门,springMVC,java

5、创建请求控制器

由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具体请求的类,即请求控制器。
请求控制器中每一个处理的请求方法称为控制器方法。因为SpringMVC的控制器由一个普通java类担任,因此需要通过@Controller注解将它标识为一个控制层组件,交给Spring的IoC容器管理,此时SpringMVC才能够识别控制器的存在

@Controller
public class HelloController {
}
6、配置springMVC.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"
       xsi:schemaLocation="
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--扫描组件-->
    <context:component-scan base-package="com.louis.controller"></context:component-scan>
    <!--配置thymeleaf视图解析器,负责视图的页面跳转-->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <!--设置视图解析器的优先级-->
        <property name="order" value="1"/>
        <!--视图解析的编码-->
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!--前缀视图-->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!--视图后缀-->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
</beans>

当看到如下的图标时,表示配置成功。

springMVC快速入门,springMVC,java

7、创建测试实例

根据thymeleaf视图解析器中前缀视图内容,在WEB-INF下创建templates文件夹,在其中创建一个html文件。

如:index.html,在其中添加thymeleaf的命名空间:

xmlns:th="http://www.thymeleaf.org"
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h2>首页</h2>
</body>
</html>

命名空间可以在模板中设置。如图:

springMVC快速入门,springMVC,java

8、测试
  • 实现对index.html的访问,使用Tomcat方式启动。
  • 在请求控制器HelloController中创建处理请求的方法。
@Controller
public class HelloController {
    //请求路径:"/",访问页面为:/WEB-INF/templates/index.html
    @RequestMapping(value = "/")//请求映射注解,它的作用是将请求和控制器方法创建映射关系,只有value的时候可以不写。
    public String findIndex(){
        //返回视图名称,它决定了最终要跳转到的页面,它会被视图解析器解析
        return "index";
    }
}

springMVC快速入门,springMVC,java


访问指定页面
1、在index.html中添加thymeleaf语法的超链接。
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h2>首页</h2>
<a th:href="@{/target}">访问目标页面target.html</a>
</body>
</html>

解释说明:

<a href="/springMVC/target">目标页面</a>
<!--使用这个方法可以访问到目标文件路径,但当我们修改上下文路径的时候,都需要修改-->
<a th:href="@{/target}">访问目标页面target.html</a>
<!--使用thymeleaf可以动态获取,想要通过thymeleaf去解析一个属性,只需在属性前面加上th:,也就可以使用thymeleaf的语法, thymeleaf在识别到是绝对路径的时候,它会自动添加上下文路径-->
2、在templates下编写target.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" xmlns:th="http://www.thymeleaf.org">
    <title>Title</title>
</head>
<body>
test target!
</body>
</html>
3、在请求控制器HelloController中创建处理请求的方法
@RequestMapping("/target")
public String toTarget(){
    return "target";
}
4、测试

springMVC快速入门,springMVC,java

springMVC快速入门,springMVC,java

总结

浏览器发送请求,若请求地址符合前端控制器的url-pattern,该请求会被前端控制器DisparcherServlet处理。前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控控件中@RequestMapping注解的value属性进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法,处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀和后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终转发到视图所对应页面,使用的方式是转发文章来源地址https://www.toymoban.com/news/detail-605885.html

到了这里,关于springMVC快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Java优选系列第2弹]SpringMVC入门教程:从零开始搭建一个Web应用程序

    想和你们分享我眼里的代码世界🗺️  优选系列持续更新中💫 一直在等你,你终于来啦💖                            绿色代表解释说明                 黄色代表重点                  红色代表精髓         SpringMVC是一个基于Java的Web框架,它使

    2024年02月12日
    浏览(55)
  • Java快速入门体验

    型号 :MacBook Pro 内存 :16GB 硬盘 :512GB SSD 处理器 :Apple M2 宿主机CPU架构 :ARM Maven版本 :3.8.8 J DK版本 :8 Maven 是一个项目管理工具,主要作用是在项目开发阶段对 Java项目 进行 依赖管理 和 项目构建 。 依赖管理:就是对jar包的管理。通过导入maven坐标,就相当于将仓库中

    2024年02月11日
    浏览(36)
  • 如何快速入门 Java?

    在一线互联网公司做开发 13 年了,“精通”Java,“吊打”一众面试官,如何快速入门 Java,对我来说简直就是小儿科,相信看完后你一定能收获满满、醍醐灌顶,今年秋招拿下阿里、美团等互联网大厂的 offer。 逼装完了,我们开始。 先来一张劝退型的思维导图吧,我之前根

    2024年02月05日
    浏览(28)
  • JAVA前端快速入门基础_javascript入门(01)

    1.JS是什么 JavaScript是一门跨平台,面向对象的脚本语言(即不需要编译,可以直接通过浏览器进行解释)。JS和Java是两门完全不相同的语言,但是基础的语法是类似的 2.JS的引入方式 JS如何在前端代码里面体现作用。有两种方式,一种是内部脚本,一种是外部脚本 注意,JS代码必

    2024年04月27日
    浏览(51)
  • Java快速转Go入门案例

    Golang语言在2009年诞生于谷歌,相较而言是一门年轻的语言。面对C++等老牌语言众多繁重的特性,几名谷歌员工希望能够甩开历史包袱设计一门更加简洁的编程语言,避免过度的设计,通过较少的特性组合连接就可实现复杂的功能。体现“ 少即是多 ”设计哲学。 以下是用一个

    2024年01月22日
    浏览(34)
  • Kafka 使用java实现,快速入门

    1. 生产者发送消息的流程  2. 消费者接收消息的流程 1. 添加依赖: 2. 实现生产者 其中的 User 对象为: 3. 实现消费者 4. 测试结果 生产者发送的消息在消费者端可以正常接收:

    2024年02月15日
    浏览(33)
  • rabbitmq基础-java-1、快速入门

            AMQP,即Advanced Message Queuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件传递消息,不受客户端/中间件不同产品、不同开发语言

    2024年01月24日
    浏览(41)
  • Java快速入门系列-7(测试与调试)

    在软件开发的生命周期中,测试与调试是不可或缺的环节。它们帮助开发者确保代码的质量和系统的稳定性。本章将深入探讨Java中的测试与调试方法,包括单元测试、集成测试、系统测试以及调试技巧和工具的使用。 单元测试是验证软件设计中最小可测试部分的正确性的实

    2024年04月11日
    浏览(41)
  • Java NIO 和 Netty快速入门

    channel 是读写数据的双向通道,可以从 channel将数据读入buffer,也可以将buffer数据写入channel(较之前的stream要么是输入,要么是输出更为底层) 四种常见Channel: FileChannel DatagramChannel SocketChannel ServerSocketChannel buffer用来缓冲读写数据 常见buffer: ByteBuffer MappedByteBuffer DirectByteBuffer

    2024年02月22日
    浏览(42)
  • 快速入门java网络编程基础------Nio

    哔哩哔哩黑马程序员 netty实战视频 NIO(New I/O)是Java中提供的一种基于通道和缓冲区的I/O(Input/Output)模型。它是相对于传统的IO(InputStream和OutputStream)模型而言的新型I/O模型。NIO的主要特点包括: 1.通道与缓冲区: 2.NIO引入了通道(Channel)和缓冲区(Buffer)的概念。通道

    2024年01月20日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包