SpringBoot学习笔记(二):Web简单开发
- SpringBoot Web开发非常简单,包括json输出、自定义filter、property操作等
一、项目结构
二、Json 接口开发
- 需要类添加 @RestController 或(@Controller+@ResponseBody),默认类中的方法都会以 json 的格式返回
三、自定义 Filter
两个步骤
- 实现 Filter 接口,实现 Filter 方法
public class MyFilter implements Filter {
@Override
public void destroy() {}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain)throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("This is MyFilter,url :"+request.getRequestURI());
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {}
}
- 增加配置类,类上添加**@Configuration** 注解,将自定义Filter加入过滤链
@Configuration
public class WebConfiguration {
@Bean
public RemoteIpFilter remoteIpFilter() {
return new RemoteIpFilter();
}
@Bean
public FilterRegistrationBean testFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new MyFilter());
registration.addUrlPatterns("/*");
registration.addInitParameter("name", "Filter");//添加默认参数
registration.setName("MyFilter");
registration.setOrder(1); //执行的顺序
return registration;
}
}
四、自定义 Property
- 配置在 application.properties 中
config.title=CSDN
config.description=分享技术的网站
- 自定义配置类
- @Value:单个注入值
- @ConfigurationProperties:批量注入配置文件中的属性
@Component
public class NeoProperties {
@Value("${config.title}")
private String title;
@Value("${config.description}")
private String description;
}
@Component
@ConfigurationProperties(prefix = "config")
public class ConfigProperties {
private String title;
private String description;
}
五、控制类
@RestController
public class MyController {
@Autowired
private ConfigProperties configProperties;
@Autowired
FilterRegistrationBean registration;
@RequestMapping("/config")
public String getConfig(){
StringBuffer result=new StringBuffer();
String title = configProperties.getTitle();
String description = configProperties.getDescription();
result.append(title).append(",").append(description);
return result.toString();
}
@RequestMapping("/parameters")
public Map<String, String> getName() {
Map<String, String> initParameters = registration.getInitParameters();
return initParameters;
}
}