Spring boot快速体验Web开发
Posted 大山008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring boot快速体验Web开发相关的知识,希望对你有一定的参考价值。
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开发的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 学习笔记1---初体验之3分钟启动你的Web应用
Spring Boot学习进阶笔记-初体验,创建基本的web功能
java Spring Cloud+Spring boot+mybatis企业快速开发架构之SpringCloud-Spring Boot Starter的介绍及使用