• 1.SpringMVC入门案例


    一:开发环境

    IDE:idea 2022.2.1

    构建工具:maven3.8.6

    服务器:tomcat8.5.82

    Spring版本:5.3.23

     二:创建maven工程

    ①添加web模块

    ②打包方式:war

    <packaging>warpackaging>

    ③引入依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframeworkgroupId>
    4. <artifactId>spring-webmvcartifactId>
    5. <version>5.3.23version>
    6. dependency>
    7. <dependency>
    8. <groupId>ch.qos.logbackgroupId>
    9. <artifactId>logback-classicartifactId>
    10. <version>1.2.3version>
    11. dependency>
    12. <dependency>
    13. <groupId>javax.servletgroupId>
    14. <artifactId>javax.servlet-apiartifactId>
    15. <version>3.1.0version>
    16. <scope>providedscope>
    17. dependency>
    18. <dependency>
    19. <groupId>org.thymeleafgroupId>
    20. <artifactId>thymeleaf-spring5artifactId>
    21. <version>3.0.12.RELEASEversion>
    22. dependency>
    23. dependencies>

    三:配置web.xml

     上面是设置web.xml路径的,下面是设置web资源路径的。这里我设置的web.xml路径为下

    D:\testMybatis\TestSpringMVC\SpringMVCday1\src\main\webappWEB-INF\web.xml

    因为SpringMVC是基于原生的Servlet,通过功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理的,其实它的本质还是一个Servlet。为什么需要配置web.xml,其实就是来注册我们当前SpringMVC所封装之后的一个前端控制器。

    注册SpringMVC的前端控制器DispatcherServlet

    ①默认配置方式

    此配置作用下,SpringMVC的配置文件默认位于WEB-INF下,默认名称为- servlet.xml,例如,以下配置所对应SpringMVC的配置文件位于WEB-INF下,文件名为springMVC-servlet.xml

    1. <servlet>
    2. <servlet-name>SpringMVCservlet-name>
    3. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    4. servlet>
    5. <servlet-mapping>
    6. <servlet-name>SpringMVCservlet-name>
    7. <url-pattern>/url-pattern>
    8. servlet-mapping>

    ②扩展配置方式

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

    1. <servlet>
    2. <servlet-name>springMVCservlet-name>
    3. <servlet-class>org.springframework.web.servlet.DispatcherServletservletclass>
    4. <init-param>
    5. <param-name>contextConfigLocationparam-name>
    6. <param-value>classpath:springMVC.xmlparam-value>
    7. init-param>
    8. <load-on-startup>1load-on-startup>
    9. servlet>
    10. <servlet-mapping>
    11. <servlet-name>springMVCservlet-name>
    12. <url-pattern>/url-pattern>
    13. servlet-mapping>

    四:创建请求控制器

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

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

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

    1. @Controller
    2. public class HelloController {
    3. }

    五:创建SpringMVC的配置文件

    1. <context:component-scan base-package="com.tian.controller"/>
    2. <bean id="viewResolver"
    3. class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    4. <property name="order" value="1"/>
    5. <property name="characterEncoding" value="UTF-8"/>
    6. <property name="templateEngine">
    7. <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
    8. <property name="templateResolver">
    9. <bean
    10. class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    11. <property name="prefix" value="/WEB-INF/templates/"/>
    12. <property name="suffix" value=".html"/>
    13. <property name="templateMode" value="HTML5"/>
    14. <property name="characterEncoding" value="UTF-8" />
    15. bean>
    16. property>
    17. bean>
    18. property>
    19. bean>

    六:测试HelloWorld

    ①创建html文件

    index.html 

    1. html>
    2. <html lang="en" xmlns:th="http://www.thymelef.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>首页title>
    6. head>
    7. <body>
    8. <h1>index.htmlh1>
    9. <a th:href="@{/hello}">测试SpringMVCa>
    10. <a href="/hello">测试绝对路径a>
    11. body>
    12. html>

    localhost:8080/SpringMVC/hello

    上面这是经过tymeleaf解析的链接,是相对路径。加入hello会被tymeleaf给渲染,然后自动解析之后,它会自动帮助我们少什么就帮助我们加什么,少上下文路径,就会把上下文路径给加上

    localhost:8080/hello

    自己写的就是绝对路径

    success.html 

    1. html>
    2. <html lang="en" xmlns:th="http://www.thymelef.org">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>成功title>
    6. head>
    7. <body>
    8. <h1>successh1>
    9. body>
    10. html>

    ②配置tomcat

    ③在controller层接收数据和返回页面请求

    1. @Controller
    2. public class HelloController {
    3. @RequestMapping("/")
    4. public String protal() {
    5. //将逻辑视图返回
    6. return "index";
    7. }
    8. @RequestMapping("/hello")
    9. public String hello() {
    10. return "success";
    11. }
    12. }

    七:总结

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

    扩展:

    1. <init-param>
    2. <param-name>contextConfigLocationparam-name>
    3. <param-value>classpath:springmvc.xmlparam-value>
    4. init-param>
    5. <load-on-startup>1load-on-startup>
  • 相关阅读:
    经典面试题第十一更---类型转换
    刘韧:接近聪明人最容易变聪明
    java考点之程序看iO流操作
    第五章 栈的讲解与实现
    传输中的差错检验技术
    docker 学习
    【Hack The Box】windows练习-- Reel
    软件测试面试题:做好测试计划的关键是什么?
    Java多线程2.2-synchronized 实现原理
    java用双大括构造方式进行号初始化赋值操作
  • 原文地址:https://blog.csdn.net/m0_56379670/article/details/127585970