1、Web开发
Web开发过程常常会包含接口开发json输出、filters、property、log、整合页面、操作数据库等。
2、json接口开发
Spring开发项目,提供json接口时需要做的配置:
1)添加jackjson等相关jar包
2)配置Spring Controller扫描
3)对接的方法添加@ResponseBody
相比之下,SpringBoot就要简单多了,只需要类添加@RestController即可,默认类中的方法都会以json的格式返回
@RestController
public class HelloController {
@RequestMapping("/getUser")
public User getUser() {
User user=new User();
user.setUserName("小明");
user.setPassWord("xxxx");
return user;
}
}
若需要使用页面开发只要使用@Controller
注解即可。
3、自定义Filter
项目中常使用filters用于录调用日志、排除有XSS威胁的字符、执行权限验证等等。SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,并且我们可以自定义Filter
1)实现Filter接口,实现Filter方法
2)添加@Configuration注解,将自定义Filter加入过滤链
package com.example.springboot_demo.Filter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@Configuration
public class WebConfiguration {
/**
* SpringBoot通过方法完成Filter组件的注册
* @return
*/
@Bean
public FilterRegistrationBean registerAllFilter(){
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new AllFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("paramName","paramValue");
filterRegistrationBean.setName("AllFilter");
filterRegistrationBean.setOrder(1);
return filterRegistrationBean;
}
@Bean
public FilterRegistrationBean registrationMyFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/login/*");
registrationBean.setName("MyFilter");
registrationBean.setOrder(6);
return registrationBean;
}
//自定义过滤器AllFilter
public class AllFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("this is AllFilter,url:"+request.getRequestURI());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
}
}
//自定义过滤器MyFilter
public class MyFilter implements Filter{
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
System.out.println("this is MyFilter:"+request.getRequestURI());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
}
4、自定义Property配置文件
配置在 application.properties 中
com.zyt.project=springboot_demo
com.zyt.description=SpringBoot框架学习
自定义配置类实体
package com.example.springboot_demo.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ZytProperties {
@Value("${com.zyt.project}")
private String project;
@Value("${com.zyt.description}")
private String description;
public String getProject() {
return project;
}
public String getDescription() {
return description;
}
}
5、配置log
配置输出的地址和输出级别
logging.path=D:/softwareTools/IdeaProjects/springboot_demo/src/main/resources/logs
logging.level.com.favorites=DEBUG
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=ERROR
path为本机的log地址,logging.level后面可以根据包路径配置不同资源的log级别