SpringMVC学习
- 1.Springboot的使用
- 2.设置Spring日志的保存
- 3.设置SpringBoot热部署
- 4.SpringMVC实践
- 5.@RequestMapping的使用
1.Springboot的使用
创建一个SpringBOOT项目
1.
2.
java版本选择自己装的java
3.
选择依赖
2.设置Spring日志的保存
在此文件中进行日志的设置
首先设置日志的保存路径及最大值:
接下来就能看到在项目的根路径下出现了一个logs文件夹:里面保存我们项目产生的日志
还有一种日志的保存方式:
debug = true
#logging.file.path=logs/
#设置每个日志的最大值
logging.logback.rollingpolicy.max-file-size=10KB
#设置日志的名称
logging.file.name = myspring.log
#设置日志的保存级别,日志级别从低到高分为:trace<debug<info<warn<error,设置之后只会保存大于或等于这个界别的日志
logging.level.root = error
设置日志名称;
一次保存的日志会保存在根路径之下:
3.设置SpringBoot热部署
4.SpringMVC实践
MVC(Model View Controller)是软件工程中的一种软件架构模式,它把软件系统分为模型、视图和控制器三个基本部分。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。SpringMvc框架围绕DispatcherServlet–前端控制器这个核心展开,DispatcherServlet是SpringMVC框架的总处理器;负责截获请求将其分派给相应的处理器处理,
Servlet以HttpServlet为基础;SpringMVC是以DispatcherServlet为基础
接下来查看以下DispatcherServlet的源码:
因此我们知道SpringMVC是基于Servlet的
5.@RequestMapping的使用
@Controller @Controller注解标注是一个类是Web控制器,其和@Component注解等价,只不过在Web层使用,其
便于区分类的作用。
@RequestMapping @RequestMapping是Spring Web应用程序中最常被用到的注解之一。
在对SpringMVC进行配置的时候,需要指定请求与处理方法之间的映射关系,这时候就需要使用@RequestMapping注解。该注解可以在控制器类的级别和其方法级别上使用。
接下来我们看看@RequestMapping的具体用法:
首先在static底下创建一个静态页面,观察Spring前后端交互的结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spring MVC</title>
</head>
<body>
<h1>你好 Spring MVC!</h1>
</body>
</html>
在controller包底下再创建一个Controller类;执行我们的将进行的操作;
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller//初始化此类
@RequestMapping("/mvc")
public class MVCController {
@RequestMapping("/index")
public String getIndex(){
return "/index.html";
}
}
我们看到这里不仅再类上加了注解,在方法也加了注解;
此时我们在浏览器中去访问
http://localhost:8080/mvc/index
我们注意观察直接通过8080接口找到mvc再找到index方法;index方法返回的是index.html所以最终界面跳到了index.html,
@RequestMapping("/mvc")//注册路由
public class MVCController {
@RequestMapping("/index")
这里两个@RequestMapping注册了两个路由,通过这个路由就可访问到返回的字符串
再来看看重定向功能:
@RequestMapping("/index2")
public String getIndex2(){
log.error("重定向");
return "redirect:/index.html";
}
立刻会跳转到index.html
请求转发:
@RequestMapping("/index3")
public String getIndex3(){
log.error("请求转发");
return "forward:/index.html";
}
可以看出虽然访问的是index.html的页面,但是URL并没有发生改变,这是跟重定向的不同之处;
重定向和请求转发的区别;
测试是否能够得到index.html的资源:
创建一个js文件:
console.log("你好,Java")
添加js到页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Spring MVC</title>
</head>
<body>
<h1>你好 Spring MVC!</h1>
</body>
<script src="js/myjs.js"></script>
</html>
URL:URL地址发生了改变–变成了重定向的地址;可以正常的拿到页面的外部资源;
而请求转发就访问不到页面资源了
但请求转发的过程中
我们可以看到404;因为这里请求转发没有改变地址,依然是mvc/底下的资源,但是我们的js没有放在mvc底下,因此访问不到