Spring boot(二)快速体验Web开发

2021-07-10 15:05

阅读:560

标签:pat   start   filter   webconfig   text   runner   并且   地址   param   

spring-boot-starter-web 是 Spring Boot 对 Web 开发的支持,主要包括 RESTful、参数校验、使用 Tomcat 作为内嵌容器等功能
1.json的支持
2.请求传参
使用Spirng Boot 可以轻松的对请求做一些限制,如为了安全只允许 POST 请求的访问。只需要在方法上 添加一个配置即可:

@RequestMapping(name="/getUser", method= RequestMethod.POST) 
public User getUser() { 
     ... 
}

Spring Web 层支持多种方法传参,如传入属性 name,其直接使用对象接收也是支持的。

@RequestMapping(name="/getUser", method= RequestMethod.POST) 
public String getUser(User user) { 
   ... 
}

这样的写法,只要是 User 的属性都会被自动填充到 user 对象中。还有另外一种传参的方式。
使用 Url 进行传参,这种形式的传参地址栏会更加美观一些。

@RequestMapping(value="get/{name}", method=RequestMethod.GET) 
public User get(@PathVariable String name) { 
   User user=new User(); 
   user.setName(name); 
   return user; 
}

3.参数校验
 和普通javaweb中一样,通过注解的形式实现,不再阐述
4.自定义 Filter
我们常常在项目中会使用 Filters 用于记录请求日志、排除有 XSS 威胁的字符、执行权限验证等等。Spring Boot 自动添加了
OrderedCharacterEncodingFilter 和 HiddenHttpMethodFilter,并且可以自定义 Filter。
自定义 Filter 两个步骤:
1)实现 Filter 接口,实现 doFilter 方法
2)添加 @Configuration 注解,将自定义 Filter 加入过滤链
新建 MyFilter 类,使用 doFilter() 方法:

public class MyFilter implements Filter { 
   @Override 
   public void destroy() { 
   // TODO Auto-generated method stub 
   } 
   @Override 
   public void doFilter(ServletRequest srequest, ServletResponse sresponse, Filte rChain 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 
   } 
}

将自定义 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; 
   } 
}

添加完后启动项目,访问任意的 Url,都会看到控制台打印如下信息:

this is MyFilter,url :/xxx
说明 MyFilter 已经对所有的 Url 进行了监控,在实际使用的过程中,常常利用这个特性进行 session 验证,
判断用户是否登录。
5.自定义 Property
配置在 application.properties 中

com.neo.title=纯洁的微笑 
com.neo.description=分享生活和技术

自定义配置类:

@Component 
public class NeoProperties { 
@Value("${com.neo.title}") 
private String title; 
@Value("${com.neo.description}") 
private String description; 
//省略 getter settet ?法 
}

写单元测试进?验证:

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class PropertiesTest { 
  @Resource 
  private NeoProperties properties; 
  @Test 
  public void testProperties() throws Exception { 
    System.out.println("title:"+properties.getTitle()); 
    System.out.println("description:"+properties.getDescription()); 
  } 
}

运行 test 后输出结果:
text title:纯洁的微笑 description:分享生活和技术

总结
Spring Boot 集成了参数校验、内嵌容器、Restful、JSON 内容,这些技术在进?行Web 开发中必不可少。
Spring Boot 对这些技术进行了包装,让我们在 Web 项目开发过程中非常容易的使用这些技术,降低了开发 Web 项目的技术难度。

Spring boot(二)快速体验Web开发

标签:pat   start   filter   webconfig   text   runner   并且   地址   param   

原文地址:https://www.cnblogs.com/person008/p/9561351.html


评论


亲,登录后才可以留言!