一、开发web应用
Spring Boot Web 开发非常的简单,其中包括常用的 json 输出、filters、property、log 等
二、json接口开发
以前使用spring开发项目,需要提供json接口时需要做什么呢?
1、 添加jackjson等相关的jar包
2、配置spring controller扫描包
3、对接的方法添加 @ResponseBody
我们经常由于配置错误出现406错误,由于扫描包理解不到位的配置错误(SSM框架就遇到了,搞了好几天才解决掉!)等等,springboot如何做呢,只需要类添加 @RestController
即可,默认类中的方法都会以json的格式返回
@RestController
public class HelloController {
@RequestMapping(“/getUser”)
public User getUser() {
User user=new User();
user.setUserName(“素小暖”);
user.setPassWord(“xxxx”);
return user;
}
}
如果需要使用页面开发只要使用[@Controller]( )
注解即可,下面会结合模板来说明。
三、自定义filter
我们常常在项目中会使用filters用于调用日志、排除有XXS威胁的字符、执行权限验证等等。
springboot自动添加了 OrderedCharacterEncodingFilter 和 HiddenHttpMethodFilter, 并且我们可以自定义filter。
两个步骤
1、实现filter接口,实现filter方法
2、添加 @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(“paramName”, “paramValue”);
registration.setName(“MyFilter”);
registration.setOrder(1);
return registration;
}
public class MyFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain filterChain)
throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest request = (HttpServletRequest) srequest;
System.out.println(“this is MyFilter,url :”+request.getRequestURI());
filterChain.doFilter(srequest, sresponse);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
}
四、自定义property
在 Web 开发的过程中,我经常需要自定义一些配置文件,如何使用呢?
1、配置在application.properties中
server.port=8081
#spring.profiles.active=dev
idea\uFF0Cproperties\u914D\u7F6E\u6587\u4EF6utf-8
\uFFFD\uFFFD\uFFFD\uFFFDperson\uFFFD\uFFFD\u05B5
person.last-name=\u5F20\u4E09${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
2、自定义配置类
@Component
public class NeoProperties {
@Value(“${person.last-name}”)
private String last-name;//此处last-name与lastName一样
@Value(“${person.age}”)
private int age;
…
//省略getter settet方法
}
3、log配置
配置输出的地址和输出级别
logging.path