1.4、配置访问路径
在控制器编写的过程会有两种运行模式:
- 控制器跳转模式:可以使用@Controller注解定义,如果实现Restful显示,也可以联合@ResponseBody注解一起使用。
- Restful显示:可以使用@RestController注解,里面所有的路径访问的信息都会以Restful形式展示。
提示:Restful是SpringCloud技术的实现核心。
在控制器里面一旦使用了@RestController注解,则意味着所有方法都将以Restful格式进行显示,这种方法未必合适与SpringBoot项目,因为在很多时候需要通过控制器跳转到显示层页面。
提示:关于传递参数的选择。
在Restful架构中请求路径受到很多语法支持,开发者可以结合Http请求模式(Get、Post、Put、Delete等)与路径,实现多种组合,以处理不同类型的用户请求。
1.5、SpringBoot调试
在项目开发的过程中经常需要对代码进行反复修改,这样就会导致SpringBoot运行容器反复启动。为了解决反复重启的问题,SpringBoot提供了自动加载配置的依赖库,实现代码的动态加载。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
在IDEA编译器中可以打开Services,在Services中就可以看到SpringBoot的项目,项目名后面有 [devtools]的标识表示在调试状态,导入的依赖已生效。
1.6、使用内置对象
SpringBoot中控制器的形式与SpringMVC中的一样,因此程序中使用JSP的内置对象也可以按照与SpringMVC同样的方式进行。
此时采用了与SpringMVC同样的方法来获取内置对象,并且将所有的信息保存在Map集合中,最后以Restful形式返回获取的信息(将Map集合自动变为JSON数据)。
@GetMapping("/getobject")
@ResponseBody
public Object object(HttpServletRequest request, HttpServletResponse response){
Map<String, String> map = new HashMap<>();
map.put("ipaddress",request.getRemoteAddr());
map.put("response",response.getCharacterEncoding());
return map;
}
除了使用控制器上的方法使用参数来进行接收内置对象外,也可以利用ServletRequestAttributes形式来获取内置对象。
@GetMapping("object")
public Object object(){
//获取HttpServletRequest内置对象
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
//获取HttpServletResponse内置对象
HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();
Map<String, String> map = new HashMap<>();
map.put("ipaddress",request.getRemoteAddr());
map.put("response",response.getCharacterEncoding());
return map;
}
1.7、使用Jetty容器
SpringBoot在默认情况下启动时是使用的Tomcat容器,可以通过日志看到。
在实际开发中,开发者往往会选择Jetty作为Web容器,由于SpringBoot也支持Jetty容器,在pom.xml文件中配置即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
在成功导入依赖之后重新启动项目就可以看到日志显示更换了WEB容器