SpringMVC第一天

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

简介

SpringMVC技术与Servlet技术功能等同,均属于web层开发技术

SpringMVC是一种基于java实现的MVC模型的轻量级Web框架

优点

        使用简单,开发便捷(相比于Servlet)

        灵活性强

入门案例

第一步、导入SpringMVC与Servlet坐标

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.cacb</groupId>
  <artifactId>SpringMVC_demo1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>



  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

第二步、创建SpringMVC控制类(等同于Servlet功能)

package com.cacb.controller;

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

//定义controller(使用@Controller定义Bean)
@Controller
public class UserController {
    //设置当前操作的返回路径
    @RequestMapping("/save")
    
//设置当前路径的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user saving!");
        return "{'module':'SpringMVC'}";
    }
}

第三步、初始化SpringMVC环境(同SPring环境),设定SpringMVC加载对应的Bean

package com.cacb.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//创建spring配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.cacb.controller")
public class SpringMVCConfig {
}

第四步、初始化Servlet容器,加载SPringMVC环境,并设置SpringMVC技术处理的请求

package com.cacb.config;

import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

//定义一个servlet容器启动的配置类,在里面加载spring配置
public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {
    // 加载springMVC容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMVCConfig.class);
        return ctx;
    }
    //设置哪些请求归属springMVC处理
    @Override
    protected String[] getServletMappings() {
        //所有请求归springmvc管理
        return new String[]{"/"};
    }
    //加载spring容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

SpringMVC第一天,spring

Bean加载控制 

Controller加载控制与业务Bean加载控制

SpringMVC相关Bean

        表现层Bean

Spring控制的Bean

        业务Bean(Service)

        功能Bean(DataSource等)

因功能不同,为了避免Spring错误的加载到SpringMVC管理的Bean

        加载Spring控制的Bean的时候要排除掉SpringMVC控制的Bean

三种解决方式

        方式一:Spring加载的bean设定扫描范围为com.cacb,排除掉controller包内的bean

        方式二:Spring加载的bean设定扫描范围为几个准范围,例如service,dao包等

        方式三:不区分Spring与SpringMVC的环境,加载到同一个环境中文章来源地址https://www.toymoban.com/news/detail-814832.html

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

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

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

相关文章

  • mysql获取日期 本月 上月 下月 第一天 最后一天

    unix_timestamp()精确到秒级别,from_unixtime第一个参数只接受bigint类型 -- 本月第一天 select date_add(curdate(), interval - day(curdate()) + 1 day);   -- 本月最后一天 select last_day(curdate());   -- 上个月第一天 select date_add(curdate()-day(curdate())+1,interval -1 month);   -- 上个月最后一天 select last_day(date_a

    2024年02月12日
    浏览(46)
  • node.js 第一天

    目录  使用readFile()方法读取文件内容  判断文件是否读取成功 判断文件是否写入成功 案例 考试成绩整理 path path.join() path.basename()     使用readFile()方法读取文件内容  成功案例  成功err返回null  失败案例 没有读取到文件 err返回一个对象  判断文件是否读取成功 判断文

    2024年02月16日
    浏览(26)
  • 试岗第一天问题

    1、公司的一个项目拉下来 ,npm i 不管用显示 后面百度 使用了一个方法 虽然解决 但是在增加别的依赖不行,后面发现是node版本过高,更换node版本解决。 2、使用插件动态的使数字从0到100(vue-animate-number插件) 第一步:安装vue-animate-number插件 npm install vue-animate-number 第二步

    2024年02月12日
    浏览(39)
  • 【苍穹外卖 | 项目日记】第一天

    我打算用16天的时间写完黑马程序员的苍穹外卖项目,为了督促自己每天坚持写以及记录项目知识点,所以用这种项目日记的方式鞭策自己 目录 前言: 今日完结任务: 今日收获: 1.阅读代码框架: 2.新增员工接口: 3.分页查询接口: 4.员工状态修改接口: 杂项知识点: 总

    2024年02月08日
    浏览(33)
  • 初识MFC第一天

    刚开始进入Win32开发时,会发现一些变量类型似乎在C语言中未曾见过。其实这些变量类型或是与C/C++已有的数据类型相近的,是通过C语言的原始类型重新定义而成的。引入这些数据类型的主要目的是为了便于程序员开发Windows应用程序,增强程序的可读性;另一个目的是为了便

    2024年02月11日
    浏览(26)
  • Redis第一天

    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 数据结构 字符串 SDS: redis定义了一种简单动态字符串用来保存数据库中的字符串值,该动态字符串还被用作缓

    2024年02月12日
    浏览(8)
  • MySQL第一天

    1、下载MySQL yum源 2、安装MySQL服务端 3、启动MySQL服务 没有反应 或者没有报错 就是成功!! 4、确认MySQL服务器是否启动 5、获取初始密码 6、登录MySQL 7、修改用户密码 这里我选用的直接把主键策略改没有 这样就可以、字符长度、特殊字符了等等 8、密码设置成功了 然后就是

    2024年02月12日
    浏览(31)
  • 万物的算法日记|第一天

    笔者自述: 一直有一个声音也一直能听到身边的大佬经常说,要把算法学习搞好,一定要重视平时的算法学习,虽然每天也在学算法,但是感觉自己一直在假装努力表面功夫骗了自己,没有规划好自己的算法学习和总结,因为后半年也该找实习了,所以每日的算法题要进行恶

    2024年02月13日
    浏览(28)
  • 学习Python第一天

    注释是编程语言必备的,以下是几种常用的注释方式。 与C#中的 WriteLine 相似,Python中 Print 的输出是默认换行的,以下是Print几种使用方式。    

    2023年04月14日
    浏览(27)
  • QT第一天

    使用QT实现一个文本框和两个按钮,文本框在任意按钮点击时计数并显示出来。 main.cpp widget.h widget.cpp widget.ui

    2024年02月03日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包