一、创建Maven工程
创建maven工程,packaging 类型选择jar。
二、配置相关maven依赖。
1,首先你需要在pom中最上方添加spring boot的父级依赖,这样当前的项目就是Spring Boot项目了。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath />
</parent>
2,你要创建Spring Boot web工程则需要添加springboot web 的starter(jar)依赖。该依赖会将spring web mvc 开发所需要的依赖全部都引入进来。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3,完整的pom如下;
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiaohui.demo</groupId>
<artifactId>bootdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.13.RELEASE</version>
<relativePath />
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
三、application.properties配置
在web开发中配置文件中server配置项比较多,需要在网上进行查阅,实例仅做常用简单的配置指定应用名称以及端口号:
#servlet容器配置
server.port=8080
server.context-path=/WebDemo
四、创建package 编写启动类 、Controller 以及拦截器实例
Spring Boot默认会扫描启动类同包以及子包下的注解,实现的途径就是必须在启动类引入注解@ComponetScan。项目中引入了注解@SpringBootApplication 这就意味(本质上)引入注解@ComponetScan,所以就会扫描Application.Class所在包以及子包的注解。所以在本示例中可以省略@ComponetScan注解
1,Application.java启动类代码如下:
package com.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//import org.springframework.context.annotation.ComponentScan;
//@ComponentScan("com.demo")
@SpringBootApplication
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class, args);
}
}
2,Controller 代码如下:
package com.demo.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.demo.bean.User;
@Controller
@RequestMapping(value="/user")
public class UserController {
@ResponseBody
@RequestMapping(value="/userList",method=RequestMethod.GET)
public List<User> getUserList(){
User user = new User();
user.setId("11111");
user.setName("zhangsan");
User user2 = new User();
user2.setId("22222");
user2.setName("lisi");
List<User> list = new ArrayList<User>();
list.add(user);
list.add(user2);
return list;
}
}
package com.demo.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value="/cour")
public class CourController {
@RequestMapping(value="/courList",method=RequestMethod.GET)
public List<Map<String,String>> getCourList(){
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> cour = new HashMap<String, String>();
cour.put("name", "数学");
Map<String, String> cour2 = new HashMap<String, String>();
cour2.put("name", "计算机");
list.add(cour);
list.add(cour2);
return list;
}
}
在编写Controller中使用到的注解:
@Controller:Spring Mvc中所使用的注解,表示该类为Controller(处理器),在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
@RequestMapping:Spring Mvc中所使用的注解,定义请求url到处理器功能方法的映射。使用方法上面以及在类上面。
@ResponseBody:Spring Mvc中所使用的注解,该注解用于将Controller的方法返回的对象,通过HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端,本示例中则是将返回结果以JSON形式进行返回到前端浏览器。
@RestController:是@Controller和@ResponseBody的合并作用。使用在类上面。使用该注解后,所有方法都可以省略@ResponseBody注解。并且所有方法上的请求都将以JSON形式返回到浏览器上。
3,LoginFilter拦截器类代码如下:
编写拦截器需要创建类实现javax.servlet.Filter接口,在doFilter方法中可以进行拦截判断处理。在类上需要加上拦截器注解,指明拦截的路径@WebFilter(urlPatterns = "/*", filterName = "loginFilter")。拦截器其他属性可以自行查询
package com.demo.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Component;
@Component
@WebFilter(urlPatterns = "/*", filterName = "loginFilter")
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest hrequest = (HttpServletRequest)request;
System.out.println("LocalAddr:"+hrequest.getRequestURI());
chain.doFilter(request, response);
}
@Override
public void destroy() {
}
}
四、测试验证:
启动项目后我们访问路径;
代码参考:https://github.com/liuhenghui/SpringBootDemo/commit/33c51d7fca85de309845549019ade0b8312cc067