springmvc访问不到controller_Spring Boot 2系列教程4 - SpringMVC

先说说什么是MVC

MVC(Model, View, Controller) 是模型(model)-视图(view)-控制器(controller)的缩写.

模型(model): 通俗的讲就是数据建立的模型. 可以看做是一组数据集合.

视图(View): 页面响应的内容.

控制器(Controller): 主要控制视图和模型做最后的处理的一层.

38c412bff01cd9a9ca227f11d2a9eb1f.png

MVC的出现更好的避免原先代码和视图否揉在一起的群魔乱舞的时代.

描述一下这个场景, 当有用户访问我们的URL的时候, 需要做的就是找到该URL对应的Controller方法. 并把Controller方法里面做的处理, 返回给用户.

这里有个关键点, 就是我们怎么找到Controller方法, 并怎么返回给请求的对象. 这个时候, 我们就需要了解一下SpringMVC框架. 其实它和其他的框架大同小异, SpringMVC属于请求驱动. 就是说: 所有的设计都围绕一个中央的Servlet来处理. 它在负责把所有的请求分发到对应的控制器. 相当于找了一个大管家. 你有什么要求, 就向它提. 这个时候, 他就负责给你找对应的控制器. 该控制器的名字叫做: DispatcherServlet. 来自: org.springframework.web.servlet.DispatcherServlet 担任重要职责. 分析代码可以看出来. 该类, 就是一个前端控制器模式.

DispatcherServlet: 看父类王上翻, 发现它其实就是一个Servlet(基类为HTTPServlet). 所以, 如果想要使用它, 你要做的就是配置web.xml 或者是Servlet3.x之后的Java Config 方式配置. 如果不使用SpringBoot 你会看到如下的代码. 或者是与此类似的.

02c790bd5d2cb833d321d927047d4b86.png

编程的方式(JavaConfig)

55c9655187d238c1f51b25b4a9d15122.png

那在SpringBoot中, 如何加载的呢? 这里就需要知道一个问题, 就是SpringBoot的所有自动化配置,

该包为: spring-boot-autoconfigure-2.1.0.RELEASE.jar 并以*AutoConfiguration.java命名.

所以找到包: org.springframework.boot.autoconfigure.web.servlet; 找到对应的DispatcherServletAutoConfiguration

529f073d9892ae72c5fd6775c1700e45.png

具体的加载代码:

309fc668147ae79e5f3d9138dcf79ff5.png

SpringBoot中web的依赖, 其实就是SpringMVC, 它并没有新创建什么, 只是在原来的基础上. 做了自动化. 什么是自动化呢? 就是把一系列有规则的动作, 按照规则运行并使用.

Spring Web MVC

其实大家都是叫做SpringMVC, 但是官方文档全程为Spring Web MVC. 就相当于JavaScript 叫做js一样. 接下来我们引用SpringMVC框架.

加入对应的依赖. 这一个依赖就是完成了SpringMVC的依赖. 加入该依赖不需要写一行配置文件, 就可以启动一个Web项目.

f1ea95a487c2e7d17d5b070426f2478f.png

这里我们需要引用一个模板引擎. thymeleaf. 也是Spring官方推荐使用的.

418fa6f0001a4a136253d1e6d24f96e5.png

从Spring Boot 2.x开始, 已经是基于thymeleaf的3.x版本了. 如下:

b96a46c16053140eb2ca98cde7f4cd17.png

我们先看一下我们现在的项目架构图.

ba57b9ded283af271c0d5cbc75b0328f.png

目录结构说明:

src/main/java 代表存放的是java源代码

src/main/resources 代表是存放的配置文件, 或者是mybatis, hibernate的xml配置文件

src/test/java 代表存放的是Java的测试代码

src/test/resources 代表存放测试代码的配置文件

默认情况下 src/main/resources 是没有目录和文件的, 这个时候, 我们创建2个目录, 一个叫做 static 一个叫做templates

static: springboot的默认静态资源目录. 可以在配置文件中修改.

templates: springboot的默认模版文件目录. 可以在配置文件中修改.

新调整目录如下:

5ba3aecc79b9761c8557dd057f75d2eb.png

接下来我们编写页面文件. 在templates 中加入 index.html

aa30b99225e0cdf6b28a7e3aedaf749a.png

编写Controller

28b068ace570016f8eb66c52277ca36d.png

这个时候, 我们访问http://localhost:8080 或者 http://localhost:8080/index.html 就可以看到下面的效果.

a463e407678b455ec6631bebe4a51266.png

我们简单的描述一下这个流程. 我们在访问该路径时, 找到对应的Controller: @RequestMapping(value= {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot MyBatis 整合可以使用以下步骤: 1. 新建一个 Spring Boot 项目,并添加 MyBatis 和 Spring MVC 的依赖。 ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2. 配置 MyBatis 的数据源和 SQLSessionFactory。 ```java @Configuration @MapperScan("com.example.demo.mapper") public class MybatisConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource() { return new DruidDataSource(); } @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource()); return sessionFactory.getObject(); } } ``` 3. 编写 Mapper 接口和对应的 XML 映射文件。 ```java public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(@Param("id") Integer id); } ``` ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <select id="getUserById" resultType="com.example.demo.entity.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper> ``` 4. 在 Controller 中注入 Mapper 并使用。 ```java @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/user/{id}") public User getUserById(@PathVariable Integer id) { return userMapper.getUserById(id); } } ``` 以上就是 Spring Boot MyBatis 整合的基本步骤。需要注意的是,在使用 MyBatis 时,需要在 Mapper 接口上添加 `@Mapper` 注解或使用 `@MapperScan` 注解指定 Mapper 接口所在的包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值