【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)

介绍

这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长!

以下为小编最喜欢的两句话:

要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。

一个人为什么要努力? 我见过最好的答案就是:因为我喜欢的东西都很贵,我想去的地方都很远,我爱的人超完美。因此,小编想说:共勉!

目录

一、SpringMVC简介

1、什么是MVC

2、什么是SpringMVC

3、SpringMVC的特点

二、HelloWorld

1、开发环境

2、创建maven工程

3、配置web.xml

1)默认配置方式

2)扩展配置方式

4、创建请求控制器

5、创建springmvc的配置文件

6、测试HelloWorld


一、SpringMVC简介

1、什么是MVC

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

M:Model,模型层,指工程中的JavaBean,作用是处理数据

JavaBean分为两类:

  • 一类称为实体类Bean:专门存储业务数据的,如 Student、User 等

  • 一类称为业务处理 Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。

V:View,视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据

C:Controller,控制层,指工程中的servlet,作用是接收请求和响应浏览器

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

2、什么是SpringMVC

SpringMVC是Spring的一个后续产品,是Spring的一个子项目

SpringMVC 是 Spring 为表述层开发提供的一整套完备的解决方案。在表述层框架历经 Strust、WebWork、Strust2 等诸多产品的历代更迭之后,目前业界普遍选择了 SpringMVC 作为 Java EE 项目表述层开发的首选方案

注:三层架构分为表述层(或表示层)、业务逻辑层、数据访问层,表述层表示前台页面和后台servlet

3、SpringMVC的特点

  • Spring 家族原生产品,与 IOC 容器等基础设施无缝对接

  • 基于原生的Servlet,通过了功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理

  • 表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案

  • 代码清新简洁,大幅度提升开发效率

  • 内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可

  • 性能卓著,尤其适合现代大型、超大型互联网项目要求

二、HelloWorld

1、开发环境

IDE:idea 2022.3.2

JDK:jdk1.8

构建工具:maven3.8.1

服务器:tomcat9.0.75(下图中tomcat的名字虽然为10.0.27但是实际使用的是9.0.75,注意分辨)

Spring版本:5.3.1

2、创建maven工程

创建新的项目,选择maven项目

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第1张图片

1)创建成功后pom.xml文件为下图的样子(打包方式为war包,因为在tomcat下运行的),不过还需要添加其他的依赖

2)左边的目录栏会出现webapp的文件夹,以及WEB-INF文件夹、子级web.xml、index.jsp

 【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第2张图片

 添加其他的一些依赖


    
        org.springframework
        spring-webmvc
        5.3.1
    

    
    
        ch.qos.logback
        logback-classic
        1.2.3
    

    
    
        javax.servlet
        javax.servlet-api
        3.1.0
        provided
    

小插曲

springmvc pom.xml文件中 provided有什么含义?

在SpringMVC的pom.xml文件中,provided是用来指定依赖的作用范围,其含义如下:

1)当一个依赖声明为provided时,表示这个依赖在编译和测试阶段需要使用,但是在打包成war包或者jar包时不需要打包进去,因为这个依赖在应用程序的服务器容器中已经存在。
2)在开发Web应用程序时,常见的可提供范围依赖包括Java Servlet API、Java Server Pages(JSP)API、JavaServer Faces(JSF)API等。这些API是Web容器提供的,因此编写Web应用程序时需要使用这些API,但是在部署Web应用程序时无需将这些API打包进入war包中。

需要注意的是,虽然provided指定的依赖不会打包进入war包或者jar包中,但是在开发和测试阶段需要将这些依赖添加到类路径中,否则会出现编译错误或运行时错误。

使用不同的工具类打war包,war包路径不同

在使用IntelliJ IDEA中通过Tomcat打成war包时,默认情况下war包会生成在工程的/target目录下。

具体来说,使用IntelliJ IDEA打成war包的步骤为:

1. 点击菜单栏中的“Build” -> “Build Artifacts...”打开“Build Artifacts”窗口。
2. 在“Build Artifacts”窗口中,选择需要打包的Web工程,然后点击底部的“Build”按钮。
3. 在弹出的“Build Artifacts”对话框中,选择“Build”或“Rebuild”操作,并勾选“Build 'artifact-name.war'”选项,最后点击“OK”按钮。
4. 打包完成后,war包会生成在工程的/target目录下,其中artifact-name为你在“Build Artifacts”窗口中设置的artifact名称。

需要注意的是,如果你使用的是Tomcat插件来启动Tomcat服务器,那么war包也会自动发布到Tomcat服务器目录中,例如在启动Tomcat时,会发现在Tomcat安装目录下的webapps目录中会出现一个对应Web工程的war包。

3、配置web.xml

注册SpringMVC的前端控制器DispatcherServlet

有两种方式可以去配置

1)默认配置方式

此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为springMVC-servlet.xml,一般配置文件都在resources下,所以小编不使用此方式


  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
  
  
    dispatcherServlet
    
    /
  

2)扩展配置方式

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


  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
    
      
      contextConfigLocation
      
      classpath:springmvc.xml
    
    
    1
  
  
    dispatcherServlet
    
    /
  

注:

标签中使用/和/*的区别:

/所匹配的请求可以是/login或.html或.js或.css方式的请求路径,但是/不能匹配.jsp请求路径的请求

因此就可以避免在访问jsp页面时,该请求被DispatcherServlet处理,从而找不到相应的页面

/*则能够匹配所有请求,例如在使用过滤器时,若需要对所有请求进行过滤,就需要使用/*的写法

 web.xml的全部配置




  Archetype Created Web Application
  
  
    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
    
      encoding
      UTF-8
    
  
  
    characterEncodingFilter
    /*
  
  
  
    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
    
      
      contextConfigLocation
      
      classpath:springmvc.xml
    
    
    1
  
  
    dispatcherServlet
    
    /
  

4、创建请求控制器

由于前端控制器对浏览器发送的请求进行了统一的处理,但是具体的请求有不同的处理过程,因此需要创建处理具体请求的类,即请求控制器

请求控制器中每一个处理请求的方法成为控制器方法

因为SpringMVC的控制器由一个POJO(普通的Java类)担任,因此需要通过@Controller注解将其标识为一个控制层组件,交给Spring的IoC容器管理,此时SpringMVC才能够识别控制器的存在

注意:如果在创建maven项目的时候,不出现java文件夹的话,需要创建一个普通的文件夹,并将它标记为sources root

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第3张图片

 变为下图的颜色,即为java类

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第4张图片

 HelloController

package com.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @author:Lyn.R
 * @date:2023-05-24 23:12:09
 * @Description:
 * @note:
 **/
@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hello(){
        return "success";
    }
}

5、创建springmvc的配置文件

springmvc.xml




    
    
    
    
        
        
    
    
    
    
    
    
    

6、测试HelloWorld

index.jsp

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第5张图片

 WEB-INF/pages/success.jsp(这个地方对应你的controller层return返回的地方,因为之前配置了视图解析器)

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第6张图片

 最后的详细目录

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第7张图片

运行成功,在浏览器的下面的地址localhost:8080/SpringMVC_helloworld_war_exploded/

可以看到index.jsp成功的目录 ,点击图中的hello

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第8张图片

 【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第9张图片

注意:可能运行成功时,控制台出现中文乱码(虽然现在没什么影响,但是当出现一些错误时,没有日志的提醒还是很难受的,所以建议将它解决)

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第10张图片

更改tomcat的conf/logging.properties

【SpringMVC】SpringMVC的入门程序——HelloWorld(有点详细)_第11张图片

控制台不出现乱码

注意:更改之后可能需要重启才能成功

 以上就是小编所实践的内容,希望能够帮助到大家,感谢各位大佬的观看!!!

你可能感兴趣的:(SpringMVC,servlet,java,spring,springmvc)