首页 > 其他分享 >SpringMVC_2023_11_27_1 SpringMVC_入门

SpringMVC_2023_11_27_1 SpringMVC_入门

时间:2023-11-28 16:33:05浏览次数:31  
标签:11 27 mav SpringMVC show 视图 处理器 ModelAndView 页面

SpringMVC_入门

2023-11-28 16:11:38 星期二

Spring MVC 是 Spring 提供给 Web 应用的框架设计。。
Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。作为当今业界最主流的 Web 开发框架,Spring MVC 已经成为当前javaWeb框架事实上的标准。

SpringMVC核心组件

a) 前端控制器(DispatcherServlet) 配置

i. 接收请求,响应结果,相当于电脑的CPU

b) 处理器映射器(HandlerMapping) 配置

i. 根据url查找对应的处理器

c) 处理器(Handler) 程序员写

i. 处理核心的业务逻辑

d) 处理器适配器(HandlerAdapter) 配置

i. 会把处理器包装成适配器,这样可以支持多种类型的处理器

e) 视图解析器(ViewResovler) 配置

i. 进行视图解析,并返回字符串,进行处理,可以解析成对应的页面

Springmvc执行流程(围绕以上组件)

image

Springmvc项目的创建--(XML)

1. 依赖的引入

 </dependency>
       <!-- spring基础依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.20</version>
        </dependency>
      <!--  springweb依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.3.20</version>
        </dependency>
        <!--springmvc依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.20</version>
        </dependency>

2. Springmvc配置文件--(Spring-mvc.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--
        处理映射器
        BeanNameUrlHandlerMapper
    -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!--
        处理器适配器
        SimpleControllerHandlerAdapter
    -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
   <!--
        处理器
        自定义实现Controller接口(对应:SimpleControllerHandlerAdapter)
   -->
    <bean name="/hello.do" class="com.bboy.controller.StudentController"/>
    <!--
        视图解析器
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--添加跳转目录的前缀-->
        <property name="prefix" value="/WEB-INF/"/>
        <!--添加跳转目录的后缀缀-->
        <property name="suffix" value=".jsp"/>
    </bean>



</beans>

3. 配置前端控制器--(在web.xml中进行配置)

<?xml version="1.0" encoding="UTF-8"?>
<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>
        <!--
        在前端控制器中加载springmvc的配置文件,例如:spring-mvc.xml   
    -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--
             配置哪些请求进入到:前端控制器
        -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>

4. 配置处理器映射器--(在springmvc的配置文件中进行配置)

<!--
        处理映射器
        BeanNameUrlHandlerMapper
    -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

5. 配置处理器适配器--(在springmvc的配置文件中进行配置)

<!--
        处理器适配器
        SimpleControllerHandlerAdapter
    -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

6. 配置处理器(处理业务逻辑)

i. 自定义类实现Controller接口

package com.bboy.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @类描述:
 * @作者:秦帅
 * @时间:2023/11/27 0027 10:53:23
 */
public class StudentController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //- 创建ModelAndView
        ModelAndView mav = new ModelAndView();
        //- 添加数据
        mav.addObject("uname","tom");
        mav.addObject("age",20);
        //- 方法一:跳转到页面:show.jsp页面
        //mav.setViewName("/show.jsp");
        //System.out.println("hello==============>StudentController");
        //- 方法二:结合 视图解析器进行跳转
        mav.setViewName("show");
        System.out.println("hello==============>StudentController");
        return mav;
    }
}

ii. 在springmvc核心配置文件中进行controller的注册

<!--
        处理器
        自定义实现Controller接口(对应:SimpleControllerHandlerAdapter)
   -->
    <bean name="/hello.do" class="com.bboy.controller.StudentController"/>

7. 视图解析器--(在springmvc的配置文件中进行配置)

<!--
        视图解析器
    -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--添加跳转目录的前缀-->
        <property name="prefix" value="/WEB-INF/"/>
        <!--添加跳转目录的后缀缀-->
        <property name="suffix" value=".jsp"/>
    </bean>

8. ModelAndView

a) Model 存储数据
b) View 指定视图(页面)b) View 指定视图(页面)

具体使用:

public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //- 创建ModelAndView
        ModelAndView mav = new ModelAndView();
        //- 添加数据
        mav.addObject("uname","tom");
        mav.addObject("age",20);
        //- 方法一:跳转到页面:show.jsp页面
        //mav.setViewName("/show.jsp");
        //System.out.println("hello==============>StudentController");
        //- 方法二:结合 视图解析器进行跳转
        mav.setViewName("show");
        System.out.println("hello==============>StudentController");
        return mav;
    }

在页面上,可以使用EL表示将modelAndView中的数据进行显示

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2023/11/27 0027
  Time: 11:27:59
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
展示页面<br>
${uname}-----${age}
</body>
</html>

9. 将show.jsp页面放到WEB-INF下

a) 在WEB-INF下的页面都是被保护的,不能通过浏览器直接访问,需要通过后台的跳转进行访问
b) 结合视图解析器进行跳转
image
image

标签:11,27,mav,SpringMVC,show,视图,处理器,ModelAndView,页面
From: https://www.cnblogs.com/Kbaor/p/17860493.html

相关文章

  • 如何正确的在AIX 7上正确开启大页内存(large page)on oracle 11.2.0.4 rac 转发 https:
    1、关于大页有个客户的业务系统上要开启大页,提高系统性能,研究了一下,网上文章太多,自己做了一些测试,经过实机测试,整理了一下操作记录。关于AIX上为什么要开启大页,借用MOS里的说明原文:StartingwiththeAIXV5.1operatingsystemwhenrunningonIBMPOWER4orPOWER5proces......
  • 11月《中国数据库行业分析报告》已发布,一起领略数据库创新应用与前沿学术风采!
    为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生态发展,目前已更至第十八期,并发布了共计1......
  • 最后一个大更新!Win11 2023正式发布:Copilot终于来了
    美国当地时间周二,微软正式宣布为所有符合条件的Windows11电脑发布Windows112023更新(Windows1123H2)。考虑到微软计划在2024年发布下一代Windows(可能是Windows12),这也使得23H2成为Windows11的最后一个重大更新。此次更新的重点就是AI功能,包括Copilot以及搭载了AI的画图、截图......
  • 【动态规划】【贪心】 [POI2011] DYN-Dynamite
    这俩东西是怎么结合到一起的?题目描述给一棵树,树上有一些关键节点,要求你选\(m\)个点,第\(i\)个关键节点到这些点中每个点距离的最小值记为\(dis_i\),记这全部\(dis\)的最大值为\(K\),现在要使\(K\)最小,求这个\(K\)。\(1\leqn,m\leq3\times10^5\)。算法描述让最......
  • 百战商城项目---第11章 文件服务器 FastDFS 搭建
    1简介FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份......
  • 202311127
    C/S结构用户界面设计 【实验编号】10003809547j 图形用户界面设计【实验学时】8学时【实验环境】l 所需硬件环境为微机;l 所需软件环境为MicrosoftVisualStudio2013【实验内容】本次做的C/S框架的信息管理系统是一种比较经典的信息管理系统,实现了对于人员的的......
  • Codeforces Round 911 (Div. 2) D. Small GCD
    题目链接:https://codeforces.com/contest/1900/problem/D对于已经排序好的数组\(a\),我们需要计算:\[\sum_{i=1}^n\sum_{j=i+1}^ngcd(a_i,a_j)*(n-j)\]由于\(\sum_{d|n}\phi(d)=n\),因此:\[\gcd(a_i,a_j)=\sum_{d|a_i,d|a_j}\psi(d)\]代入可得:\[\sum_{i=1}^n\su......
  • 11.27
    *设置-->构建执行部署-->maven-->用户设置文件-->conf/settings.xml*配置文件在src/main/resources/application.properties,一般情况下会把application.properties改为application.yml*可以通过@Value("${email.user}")获取application.yml配置文件中的值或者使用@Confi......
  • 2023/11/26 星期日 每日总结 Day10
    今日份的英语:晚上睡觉前看看吧今日份的算法:没太有思路,第一想到的是暴力解法,却忽略了数学在算法思想中的重要性。当暴力解法的时间复杂度过高时,可以使用数学的思想转化一下,得出一个结论或者公式,这样就便于代码的编写。今日份的SQL今日份的八股今日份的锻炼:今日份的阅读今日......
  • 11.27 erp系统博客总结
    在开发企业Erp中,我担任了财务这一模块的开发,在最近的一周里,我开发了erp系统的销售订单模块,主要完成订单的添加,订单的管理等功能.1.订单新增2.订单管理 ......