springboot——(2)URL配置、依赖注入、Get/Post传参、热部署

创建一个springboot工程,添加@RestController注解及控制器函数后,即实现了基本的http请求的响应,可参考我的博文创建工程并做好简单的配置。https://mp.csdn.net/postedit/81870492

下面做一些简单的实践学习,主要包括:修改http请求的端口路径,从配置文件中注入属性(其实就是模拟一下获取后台数据),解析http请求的参数并给予反馈,热部署避免反复重启。

一、修改http访问的端口和路径

resources路径下修改application.properties 配置文件,添加server.port配置如下图所示,修改server的端口号

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第1张图片

**application.java 代码如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第2张图片

编译运行后浏览器输入 localhost:8081 (8081即是刚刚修改的端口号,默认为8080),可看到反馈的字符串

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第3张图片

添加全局的url访问路径,在application.properties 配置文件中添加 server.servlet.context-path如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第4张图片

重新编译运行后,浏览器输入localhost:8081/qftest 即可看到反馈的 hello word 字符串

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第5张图片

给控制器函数添加独立的访问路径,在控制器函数的@RequestMapping注解中,修改value的值如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第6张图片

重新编译运行后,浏览器输入 localhost:8081/qftest/hello 即可看到反馈的 hello word 字符串

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第7张图片

至此,http访问端口和路径的修改配置完成

 

二、从配置文件中读取属性注入到程序中

springboot注入属性可以通过@Value实现

在配置文件application.properties添加属性如图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第8张图片

代码中添加将属性注入,同时添加一个新的book控制器函数,如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第9张图片

编译运行后浏览器输入 localhost:8081/qftest/book  (8081和qftest改成自己配置文件中的server.port 和 server.servlet.context-path配置信息)

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第10张图片

发现中文全是乱码,这是工程编码格式的问题。下面进行工程编码格式的修改

file - settings 或输入快捷键 ctrl + alt + S

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第11张图片

Editor - File Encodings 或者直接搜索。Default encoding ... 选择UTF-8 勾选 Transparent native-...点击OK

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第12张图片

好了,配置文件里的中文全部变成乱码了,重新写吧

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第13张图片

添加以下配置处理中文乱码问题

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第14张图片

重新编译运行后中文乱码问题解决

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第15张图片

实际项目开发中不可能所有属性写入全局配置文件,也不可能每次使用@Value注解逐一取出配置的值。同时,程序开发过程中需要取出的属性具有安全的类型,统一做类型的识别和控制。

那么就需要通过java bean 和 独立的配置文件注入属性

创建独立的配置文件,在resources路径下创建book.properties配置文件,添加属性信息如下图所示

#测试注入属性
book.name=红楼梦(book.properties注入属性)
book.author=曹雪芹(book.properties注入属性)
book.price=28(book.properties注入属性)

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第16张图片

创建一个java class 命名随意,如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第17张图片

添加 @Component 注解

添加@ConfigurationProperties(prefix = "book") @PropertySource("classpath:book.properties")两个注解,prefix是前缀,book.name中的book被前缀识别后,会将name依据命名注入给BookBean类中的name变量,classpath指定配置文件名。

spring boot 1.5 版本以下可以直接在ConfigurationProperties注解中配置locations,1.5版本以上已经取消。

//@ConfigurationProperties(prefix = "book",locations = "classpath:book.properties")
//springboot 1.5 版本以上已取消locations属性,不建议一个bean类指定一个配置文件

Book类中添加要注入的name author price 属性,并给出get set方法 如下图所示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第18张图片

修改控制函数

@Autowired
private BookBean bookBean;

@RequestMapping(value = "/booknew",produces = "text/plain;charset=UTF-8")
public String booknew() {
    return "Hello Spring Boot! The BookName is "+bookBean.getName()+";and Book Author is "+bookBean.getAuthor()+";and Book price is "+bookBean.getPrice();
}

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第19张图片

留意全局配置文件中相同配置需要注释掉,否则application.properties中的属性信息会将book.properties中的信息覆盖掉。

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第20张图片

重新编译运行后,浏览器输入localhost:8081/qftest/booknew

三、识别http请求中的参数

我们现在已经有http请求的响应程序(比如浏览器输入localhost:8081/qftest/booknew即可调用控制器函数),已经可以从配置文件中通过spring的依赖注入得到一定的属性值,那么要进行接口交互就剩下从http请求中获取参数了。

可以使用@RequestMapping注解,通过配置method获取get、post参数,也可以直接使用@GetMapping或者@PostMapping注解获取参数,以下是程序调整过程。

先创建一个javaBean模拟登陆账户密码匹配

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第21张图片

创建对应的user.properties

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第22张图片

在***application.java 中添加控制器函数

@Autowired
private LoginBean loginBean;
@RequestMapping(value = "/loginByGet",method= RequestMethod.GET)
public String loginByGet(@RequestParam(value = "name")String name,@RequestParam(value = "psw")String psw){
    if(loginBean.login(name, psw)) return "欢迎登陆\n登陆信息:" + loginBean.toString();
    else return "用户名或密码错误";
}

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第23张图片

使用@Autowired注解注入loginBean

使用@RequestMapping注解配置子路径loginByGet,配置Get方式传参

使用@RequestParam注解获取参数值

编译运行后,浏览器输入http://localhost:8081/qftest/loginByGet?name=test&psw=test 得到“用户名或密码不匹配”的反馈

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第24张图片

浏览器输入http://localhost:8081/qftest/loginByGet 不传参数,抛出error页面。我没有定义error页面,得到报错提示

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第25张图片

编译运行后,浏览器输入 http://localhost:8081/qftest/loginByGet?name=testname&psw=testpsw 得到“欢迎登陆”的反馈

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第26张图片

可以在loginBean上重载tostring方法,组装json反馈。一会再讲怎么在maven下引入json的jar包。

那么至此,我们已经通过Get方法将参数传入到程序中,并判断输入信息进行相应的反馈。一个springboot工程相应http请求并进行交互的基本程序已经成型,下面尝试一下Post传参数。并实践一下其他注解对http请求参数的处理方式。

新增控制器函数loginByPost,同样使用@RequestMapping注解,method设置为post

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第27张图片

重新编译运行,使用postman工具模拟post方式的http请求

推荐使用postman模拟工具,方便post方式传参的调试。下载安装使用可参考我的博文

https://blog.csdn.net/qq_15903671/article/details/81907562

在postman中配置post传参,输入url地址 http://localhost:8081/qftest/loginByPost 在body中输入参数

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第28张图片

留意,params是get方式传参用的。点击send,可以看到下方反馈结果,也在body里。

至此,post传参方式的http请求的响应也尝试完成。

@GetMapping注解和@PostMapping注解可以理解为@RequestMapping注解和method的组合。

@PathVariable注解可以直接从url地址中截取信息

@RequestBody注解可以在Post方式传参时获取body信息,按照json格式解析后注入到javaBean

具体可参考博文

https://blog.csdn.net/u011517841/article/details/77750120

https://blog.csdn.net/u010399316/article/details/52913299

四、热部署避免反复重启。

上述所有调整在修改代码之后都需要关闭在启用的项目然后重新编译运行,时间浪费严重。在开发阶段反复调整代码时我们需要尽可能的让调试变的简单。springboot可以通过简单的配置实现热部署,让修改或新增的java文件立即生效。

在pom.xml中添加dependency标签,加载spring-boot-devtools工具包,注意加到dependencies标签内

!-- 热部署 -->

    org.springframework.boot
    spring-boot-devtools
    true
    true

在pom.xml中修改build标签


    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                
                true
            
        
    

修改pom.xml过程中IDE自带的maven会自动下载jar包,刚写完配置的时候会变红报错并在下方显示jar包下载进度,耐心等一会下载好了就不报错了。

修改好配置后,重新编译运行项目,修改java文件中控制器函数的返回字符串,测试一下发现无需重新发布即可生效。

修改前:

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第29张图片

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第30张图片

修改源码“欢迎登陆”改成“欢迎登陆 test”,保存代码后点击编译,发现控制台自动刷新了一遍发布信息。浏览器刷新测试,发现已自动重新发布成功,修改内容生效。

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第31张图片

springboot——(2)URL配置、依赖注入、Get/Post传参、热部署_第32张图片

 

参考学习博文:https://blog.csdn.net/u012702547/article/details/53740047

你可能感兴趣的:(springCloud学习)