一、项目搭建
同:http://www.cnblogs.com/bjlhx/p/8324971.html
1)新建maven项目→使用默认配置即可
定义好项目名称等
2)修改jdk版本
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> </properties>
3)增加spring-boot-dependencies
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
4)在pom的dependencies增加依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
不需要增加spring-boot-starter包,在spring-boot-starter-web中已经包含了
5)增加main方法启动程序即可
@SpringBootApplication public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
可增加一个示例,增加一个UserController
@Controller public class UserController { @RequestMapping("/user/home") @ResponseBody public String home() { return "user home"; } }
访问:http://127.0.0.1:8080/user/home即可
二、基本配置
1.启动端口
默认配置文件在src/main/resource下的application.properties
服务启动端口
server.port=80
2.请求路径与方式
@RequestMapping(value = "/user/home", method = RequestMethod.GET) @ResponseBody public String home() { return "user home"; }
以前的方式使用RequestMapping
在4.3以后提供以下方式
@GetMapping(value = "/user/show") @ResponseBody public String show() { return "user show"; } @PostMapping(value = "/user/create") @ResponseBody public String create() { return "user create"; }
即:GetMapping、PostMapping
3、获取请求参数
3.1、获取请求参数RequestParam
@PostMapping(value = "/user/create") @ResponseBody public String create(@RequestParam(value="username",defaultValue="admin",required=false) String username,@RequestParam("password")String password) { return "user create,username="+username+";password="+password; }
3.2、获取url参数@PathVariable
@GetMapping(value = "/user/{id}") @ResponseBody public String display(@PathVariable("id") String id) { return "user display,id="+id; }
3.3、支持注入Servletapi,HttpServletRequest
@GetMapping(value = "/user/ip") @ResponseBody public String edit(HttpServletRequest req) { return "user edit " + req.getRemoteHost(); }
4、RestController
为了简化每一个都加@ResponseBody
表明了当前Controller的方法返回值可以直接作为ResponseBody输出。
三、Spring boot中
1.使用jsp
1.1、增加maven:tomcat-embed-jasper;【版本可以根据具体是否添加】
<dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
1.2、增加配置
spring.mvc.view.prefix=/WEB-INF/jsp spring.mvc.view.suffix=.jsp/
1.3、增加Controller
@Controller public class LoginController { @PostMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password) { if (username.equals(password)) { return "/ok"; } return "/fail"; } }
注:方法直接返回String,就代表路径+jsp页面名【不含扩展名】
注意:注解使用Controller,不是RestController
1.4、增加jsp页面
位置:src/main/webapp下简历WEB-INF/jsp文件夹
ok.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body>ok </body> </html>
fail.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> fail </body> </html>
2、给jsp传递参数
java端,Model 的addAttribute,相当于request.setAttribute
@GetMapping("/login") public String loginIndex(Model model) { model.addAttribute("username","root"); return "/login"; }
jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html "> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${username} </body> </html>
3、模板freemarker
注:尽量先注释掉jsp的设置,pom,配置文件设置
3.1、增加pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
3.2、默认位置于classpath的templates下
reg.ftl
<h1>reg page</h1>
可以查看spring-boot-autoconfigure包,在org.springframework.boot.autoconfigure.freemarker.FreeMarkerProperties中查看
@ConfigurationProperties(prefix = "spring.freemarker") public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties { public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/"; public static final String DEFAULT_PREFIX = ""; public static final String DEFAULT_SUFFIX = ".ftl";
路径:classpath:/templates,默认扩展名:.ftl
模板路径配置:spring.freemarker.templateLoaderPath=classpath:/ftl
4、模板freemarker参数传递
同2一致
5、web容器
5.1、默认是tomcat,更换jetty
排除tomcat。将web修改
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
增加jetty
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency>
注意查看
spring-boot-autoconfigure包,在org.springframework.boot.autoconfigure.web.ServerProperties中查看,如何配置web容器配置
server.port=8080 server.contextPath=/
注意:善用contextPath做虚拟目录
原文地址:https://www.cnblogs.com/bjlhx/p/8372584.html