• 我的第一个Spring MVC应用的过程与解释



    活动地址:CSDN21天学习挑战赛

    ​1.创建项目,引入jar包

     包括四个核心包,commons-logging包和两个web相关包

     2.配置前端控制器

    在web.xml中配置Spring MVC的前端控制器DispatcherServlet

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    4. http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. id="WebApp_Id" version="4.0"
    6. >
    7. <servlet>
    8. <servlet-name>springmvcservlet-name>
    9. <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
    10. <init-param>
    11. <param-name>contextConfigLocationparam-name>
    12. <param-value>classpath:springmvc-config.xmlparam-value>
    13. init-param>
    14. <load-on-startup>1load-on-startup>
    15. servlet>
    16. <servlet-mapping>
    17. <servlet-name>springmvcservlet-name>
    18. <url-pattern>/url-pattern>
    19. servlet-mapping>
    20. web-app>

     对元素进行配置:

    中配置了Spring MVC的前端控制器DispatcherServlet;

    通过其子容器配置了Spring MVC配置文件的位置;

    元素中的1表示容器在启动时立即加载这个Servlet;

    中,通过元素的"/"拦截所有URL,并交由DispatcherServlet处理。

    3.创建ControllerTest类

     在src目录下创建一个包命名为com.ssm.controller,在包内创建ControllerTest类,该类要实现Controller接口

    1. package com.ssm.controller;
    2. import javax.servlet.http.HttpServletRequest;
    3. import javax.servlet.http.HttpServletResponse;
    4. import org.springframework.web.servlet.ModelAndView;
    5. import org.springframework.web.servlet.mvc.Controller;
    6. public class ControllerTest implements Controller {
    7. @Override
    8. public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
    9. ModelAndView m=new ModelAndView();
    10. m.addObject("msg","我的第一个 Spring MVC应用");
    11. m.setViewName("/welcome.jsp");
    12. return m;
    13. }
    14. }

    handleRequest()Controller接口的实现方法

     向模型对象中添加一个名称为msg的字符串对象,并设置返回的视图路径为:"/welcome.jsp"

    这样请求就会转发到welcome.jsp页面。

    4.创建Spring MVC的配置文件。配置控制器映射信息

    1. <beans xmlns="http://www.springframework.org/schema/beans"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://www.springframework.org/schema/beans
    4. http://www.springframework.org/schema/beans/spring-beans.xsd">
    5. <bean name="/controllerTest" class="controller.ControllerTest" />
    6. <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
    7. <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    8. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
    9. beans>

    将控制类ControllerTest映射到"/controllerTest"请求中。如果将"/controllerTest"改为

    "/index"则我们最后的访问网站为:localhost:8848/chapter11/index

    处理器适配器,配置对处理器中handleRequest()方法的调用

    解析结果视图,并将结果呈现给用户。

    5.创建视图(View)页面

    在web-app下创建welcome.jsp,使用EL表达式获取msg中的信息。

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. HTML>
    4. <html>
    5. <head>
    6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    7. <title>入门程序title>
    8. head>
    9. <body>
    10. ${msg}
    11. body>
    12. html>

    6.运行测试

    将项目部署在服务器上后,运行localhost:8848/chapter11/controllerTest

    运行结果:

    8848:服务器的端口号

    chapter11:项目名

    controllerTest:配置的url

    项目源码:

    链接:https://pan.baidu.com/s/1l60cLObxsSFv_vLc4R_Ptw?pwd=ptsn
    提取码:ptsn

    7. Spring MVC执行流程

     执行流程:

    1. 发起请求到前端控制器
    2. 前端控制器请求HandlerMapping查找 Handler,可以根据xml配置、注解进行查找
    3. 处理器映射器HandlerMapping向前端控制器返回Handler
    4. 前端控制器调用处理器适配器去执行Handler
    5. 处理器适配器去执行Handler
    6. Handler执行完成给适配器返回ModelAndView
    7. 处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括Model和view
    8. 前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
    9. 视图解析器向前端控制器返回View
    10. 前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
    11. 前端控制器向用户响应结果
       
  • 相关阅读:
    责任链模式
    运维面试宝典
    【FFMPEG】从视频文件中抽取aac数据写成文件
    react中怎么为props设置默认值
    使用学校的服务器跑深度学习
    写一个自己的编码风格校验工具
    javaScript:什么是事件对象?事件原对象?如何获取坐标点?
    【附源码】Python计算机毕业设计社区便捷管理系统
    Linux系统自有服务
    升级二进制kubernetes集群
  • 原文地址:https://blog.csdn.net/weixin_52473454/article/details/126120850