手把手入门Springboot2之Web

简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

Springboot

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。


Springboot是Spring中的一个成员,可以简化Spring,SpringMVC的核心是IOC容器


使用Springboot开发效率高。


Springboot特点

独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。


可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;


内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。


提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。


提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。


尽可能自动配置Spring容器


自带应用监控

Spring Boot 可以对正在运行的项目提供监控。


无代码生成和 xml 配置

Springboot特性

   遵循习惯优于配置的原则。使用springboot我们只需要很少的配置,大多数使用默认配置即可


   内嵌servlet容器,降低了对环境的要求,可用命令直接执行项目


   项目快速搭建。springboot尽可能自动配置spring以及第三方库,帮助开发者快速搭建spring框架,可无需配置的自动整合第三方框架


   提供各种starter简化Maven配置。springboot提供了一系列的starter用来简化maven依赖。如:常用的spring-boot-starter-web、spring-boot-starter-tomcat等


   独立运行spring项目。springboot可以以jar包的形式进行独立运行,使用java -jar xx.jar 就可以成功运行项目,无需部署war文件


   可以完全不使用xml配置,只需要自动配置和Java config


   应用监控(SpringBootActuator)


SpringBoot使用Interceptor拦截器

拦截器的实现方式


1、继承HandlerInterceptorAdapter的父类


2、实现HandlerInterceptorAdapter接口(推荐方式)


SpringMVC使用拦截器的步骤


1、在session中存储用户信息,用于进行权限验证。


2、实现HandlerInterceptorAdapter接口,重写preHandle()方法


3、springMVC.xml文件中注册拦截器


public class LoginInterceptor implements HandlerInterceptor {

   @Override

   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

           throws Exception {

       //判断是否登录过

       if (request.getSession().getAttribute("id") ==null){

           request.setAttribute("msg","还未登录!");

       //转发

           request.getRequestDispatcher("/WEB-INF/Page/login.jsp").forward(request,response);

           return false;

       }else {

           return true;//放行

       }

   }

}

注册拦截器


springmvc.xml


   

       

           

           

           

           

           

           

           

       

   


Spring Boot使用拦截器的步骤


1、注册拦截器


2、实现拦截器


实现WebMvcConfigurer接口注册连接器(等同于在springmvc.xml中注册拦截器)


//注册拦截器

public class MvcConfig implements WebMvcConfigurer {

   //添加拦截器对象,并注入IOC容器

   @Override

   public void addInterceptors(InterceptorRegistry registry) {

       HandlerInterceptor interceptor = new Login();

       //拦截哪个地址

       String[] PathPattern ={"/Info/**"};

       registry.addInterceptor(interceptor).addPathPatterns(PathPattern);

       //放行哪个地址

       String[] path ={"/login/**","/show/**"};

       registry.addInterceptor(interceptor).excludePathPatterns(path);

       //设置拦截器执行顺序

       registry.addInterceptor(interceptor).order(1);

   }

}


实现HandlerInterceptor接口,实现拦截器


//注册拦截器

@Configuration

public class MvcConfig implements WebMvcConfigurer {

   //添加拦截器对象,并注入IOC容器

   @Override

   public void addInterceptors(InterceptorRegistry registry) {

       //创建拦截器对象

       HandlerInterceptor interceptor = new Login();

       //拦截哪个地址

       String[] PathPattern ={"/Info/**"};

       //放行哪个地址

       String[] path ={"/login/**","/show/**"};

       registry.addInterceptor(interceptor)

               .addPathPatterns(PathPattern) //拦截

               .excludePathPatterns(path);//放行

   }

}

2.png

SpringBoot中使用Servlet

1、创建Servlet类。


2、注册Servlet


创建Servlet类


public class ServletA extends HttpServlet {

   @Override

   protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       response.setContentType("text/html;charset=utf-8");

       PrintWriter out = response.getWriter();

       out.println("hello servlet");

       out.flush();

       out.close();

   }

}


注册Servlet


//注册servlet

@Configuration//代替xml文件

public class ServletConfig {

   @Bean

   public ServletRegistrationBean servletRegistrationBean(){

       ServletRegistrationBean bean =new ServletRegistrationBean(

               new ServletA(),"/ServletA");

       //bean.addUrlMappings("/ServletA" ,"/hello");

       return bean;

   }

}




SpringBoot使用自定义Filter过滤器

Filter是Servlet规范中的过滤器,可以处理请求,请求参数,属性。常用在过滤处理字符编码


Filter过滤器的使用及原理


如:没一个Servlet都要解决中文乱码问题,也有公共代码,这些代码目前都是重复编写,并没有达到复用的效果。


Filter过滤器是和用户的请求路径对应的。


Filter过滤器可以在Servlet这个目标程序执行之前添加代码。也可以在Servlet执行之后添加代码。


一般在过滤器当中编写公共代码。


Filter对象在服务器启动的时候会新建对象。而Servlet在服务器启动时不会新建对象。


Filter和Servlet是单例的。


Filter的实现


java类实现Filter接口


Init方法:在Filter对象第一次被创建后调用,并且只调用一次。


doFilter方法:用户每发送一次请求就执行一次。


Destroy()方法:Filter对象被释放/销毁之前执行,并且只调用一次。


SpringBoot中使用Filter


创建类

注册Filter

//自定义过滤器

public class FilterA implements Filter {

   @Override

   public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {

       System.out.println("过滤了");

       filterChain.doFilter(servletRequest,servletResponse);

   }

}

//注册Filter

@Configuration

public class FilterConfig {

   @Bean

   public FilterRegistrationBean filterRegistrationBean(){

       FilterRegistrationBean bean =new FilterRegistrationBean();

       bean.setFilter(new FilterA());

       //设置过滤地址

       bean.addUrlPatterns("/login/*");

       return bean;

   }

}


SptingBoot使用字符集过滤器

Servet默认响应的是ISO-8859-1


使用步骤


1、注册过滤器


2、application.properties配置


//注册Filter

@Configuration

public class FilterConfig {

   @Bean

   public FilterRegistrationBean filterRegistrationBean(){

       FilterRegistrationBean bean =new FilterRegistrationBean();

       //使用框架中的字符集过滤类

       CharacterEncodingFilter charFilter =new CharacterEncodingFilter();

       charFilter.setEncoding("utf-8");

       charFilter.setForceEncoding(true);

       bean.setFilter(charFilter);

       //设置过滤地址

        bean.addUrlPatterns("/*");

       return bean;

   }

}


#Springboot框架已经设置CharacterEncodingFilter

#默认编码为 ISO-8859-1   false表示关闭#Springboot框架已配置的过滤器

server.servlet.encoding.enable=false

application.properties设置过滤器字符集

设置Springboot框架中(已存在)的CharacterEncodingFilter字符集


1.png



#启用

server.servlet.encoding.enable=true

#设置指定的字符集

server.servlet.encoding.charset=utf-8

#强制request和response使用utf-8字符集

server.servlet.encoding.force=true

目录
相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
58 4
|
21天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
38 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
23天前
|
XML Java 网络架构
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
32 0
|
2月前
|
前端开发 JavaScript 开发者
探索现代Web前端技术:React框架入门
【10月更文挑战第9天】 探索现代Web前端技术:React框架入门
|
2月前
|
网络协议 安全 JavaScript
Web实时通信的学习之旅:WebSocket入门指南及示例演示
Web实时通信的学习之旅:WebSocket入门指南及示例演示
221 0
|
3月前
|
前端开发 开发者 Python
从零到一:Python Web框架中的模板引擎入门与进阶
在Web开发的广阔世界里,模板引擎是连接后端逻辑与前端展示的重要桥梁。对于Python Web开发者而言,掌握模板引擎的使用是从零到一构建动态网站或应用不可或缺的一步。本文将带你从基础入门到进阶应用,深入了解Python Web框架中的模板引擎。
47 3
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
55 0
|
2月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
161 0
|
2月前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
165 3