【Spring Boot基础】


application.properties存储着Spring Boot应用运行后可以读取的配置

以#号开始的行是注释

每一行的形式为:属性名=属性值

表示同一组属性,则需要采用点分的形式

version=3.14
student.name=tom
student.password=abc

Envirroment类——负责读配置文件

Public String getProperty(String propertyName)

@Autowired

功能:在适当的时候创建或复用对象并初始化env,以便提高性能。
在Spring中称为控制反转(Inversion of Control,IoC)或依赖注入(Dependency Injection)

@Autowired
private Environment env;

@Value

功能:注解一个String类型的域,Spring自动初始化该域为配置文件中的某个属性值。
相当于@Autowire注解Enviroment类型域后,又调用了getProperty()方法的简写形式      

@Value(“${属性名})
private String a;

@ConfigurationProperties

功能:将配置文件的一组属性映射到一个类的各域

@Component

//属性prefix:令配置文件中以student为前缀的属性映射到类Student
@ConfigurationProperties(prefix = "student")
public class Student {
    private String name;
    private String password;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password= password;
    }
}

@Component

要进行依赖注入的类,必须用@Component注解。
意思是让Spring来管理Student对象的生命期,这样类才能用作依赖注入。
Enviroment类的提供者已经把它注解成@Component了。
能够用@Component注解的类,要交给SpringBoot管理,因此它必然要遵从一些规范:
各域私有,每各域要有setter、getter方法。

获取表单信息

在控制器中,用@RequestMapping注解的方法,默认情况下不加区分地处理GET与POST请求,要获得GET或POST方法传过来的信息,让来自客户端的信息映射到被注解的方法的参数即可。

方法一:

表单组件名映射方法的参数名:

网页中的表单组件都设置name属性
在对应的处理方法中,让方法的参数名称与表单组件的name属性值一致即可
使用@RestController注解的控制器类,实际使用时一般返回JSON格式的字符串

@RequestParam(“表单组件名”)

使用@RequestParam(“表单组件名”)来注解参数,这样参数就可以自由命名了

方法二:

方法参数类型为自定义类:

自定义类的各字段名与表单组件名一一对应时
可用这个类声明@RequestMapping注解方法的参数;

这样,Spring调用该方法前,会先创建自定义类的对象
保存表单信息到它的各域,然后传递给该方法;

获取url路径中的信息
@PathVariable——获取url的信息

@RequestMapping注解里,将多个url的可变部分,用一个通配符(花括号里的内容)替代
用@PathVariable注解方法的参数,则该参数就取得了url中的信息。

@RequestMapping("/answer/{page}")
public String getPage(@PathVariable("page") int page){
    return ""+ page+"";
}

“会话”(Session):浏览器打开一个网站,浏览其中数个网页,然后关闭浏览器

Spring管理着Session对象
只要让@RequestMapping注解的方法,具有一个HttpSession类型的形参
那么调用方法时,Spring就会把Session对象传过来

public String getId() //返回Session的唯一标识,它是包含在通信双方HTTP请求头中的
                      //相同ID的请求属于同一会话

public String setAttribute(String name,Object obj) //将属性存到Session中,属性名是name
                                                   //属性值为obj,可以为任何Java类型

public Object getAttribute(String name)//取出名称为name的属性值


eg:
@RequestMapping("/page2")
public String getMsg2(HttpSession session){
    Integer count=(Integer) session.getAttribute("myCount");
    count=(count==null)?1:count+1;
    session.setAttribute("myCount", count);
    return  ""+count;
}

MVC开发模式

Controller:“控制器”的功能限于处理url映射;

Model:“模型”负责数据的处理;

View:“视图”负责生成HTML文档。

基于Servlet的程序,接收来自客户端的HTTP请求,然后调用了MVC的3个模块,返回生成的Web页面给客户端。大部分情况下,Model与View都由Spring产生和管理。控制器Controller令Model取得期望的数值,并从视图模板(还有可变成分的HTML文档)库中选择一个模板,提交给模板引擎,把Model中的数据与模板渲染成最终的Web页面。
在这里插入图片描述

Spring 推荐使用模板引擎Thymeleaf

application.properties,增加了Thymleaf的相关配置,其中有一个条目是:spring.thymeleaf.cache=true

将模板渲染的结果缓存,用户访问同一url时,不重复渲染,这适合生产环境

开发环境设为false

@Controller

注解Controller类,返回视图模板

@Controller
public class MyController {
    @RequestMapping("/")
    public String homePage(){
        return "index";//模板文件的扩展名是固定的".html",Spring会自动加上,开发者不能加
    }
}

    @RequestMapping("/answer")
    //Model类是Spring 定义的,生命期由Spring管理
    //只要加上这个参数,Spring调用该方法的时候,就会传递一个Model对象过来。
        public String getMsg(@RequestParam("yourName") String name,
                         @RequestParam("Gender") String gender, Model model){
        model.addAttribute("myName",name);
        model.addAttribute("myGender",gender);
        return "answer";
    }
}

answer.html

<!DOCTYPE html>
//设置xmlns:th属性值,输入th:text等Thymeleaf的自定义属性时,会有智能提示
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
//th:text:HTML元素的内容取它的属性值
//${...}里面放置的就是来自Model的属性
<p>Name:<span th:text="${myName}"></span></p>
<p>Gender:<span th:text="${myGender}"></span></p>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值