手把手入门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

目录
相关文章
|
7天前
|
数据库连接 数据库 开发者
【独家揭秘】零基础小白如何逆袭?——这份Web2py入门秘籍让你轻松打造个人首个Web应用,绝不错过!
【8月更文挑战第31天】本文通过实际操作指导读者从零开始使用Web2py框架创建首个Web应用。内容涵盖环境搭建、数据库模型定义、控制器与视图设计等核心环节。通过一步步详细说明,帮助开发者掌握关键概念与最佳实践,实现应用从创建到部署的全过程。适合初学者快速上手并应用于实际项目中。
22 2
|
7天前
|
数据库 开发者 Java
颠覆传统开发:Hibernate与Spring Boot的集成,让你的开发效率飞跃式提升!
【8月更文挑战第31天】在 Java 开发中,Spring Boot 和 Hibernate 已成为许多开发者的首选技术栈。Spring Boot 简化了配置和部署过程,而 Hibernate 则是一个强大的 ORM 框架,用于管理数据库交互。将两者结合使用,可以极大提升开发效率并构建高性能的现代 Java 应用。本文将通过代码示例展示如何在 Spring Boot 项目中集成 Hibernate,并实现基本的数据库操作,包括添加依赖、配置数据源、创建实体类和仓库接口,以及在服务层和控制器中处理 HTTP 请求。这种组合不仅简化了配置,还提供了一套强大的工具来快速开发现代 Java 应用程序。
16 0
|
7天前
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
18 0
|
7天前
|
开发者 iOS开发 C#
Uno Platform 入门超详细指南:从零开始教你打造兼容 Web、Windows、iOS 和 Android 的跨平台应用,轻松掌握 XAML 与 C# 开发技巧,快速上手示例代码助你迈出第一步
【8月更文挑战第31天】Uno Platform 是一个基于 Microsoft .NET 的开源框架,支持使用 C# 和 XAML 构建跨平台应用,适用于 Web(WebAssembly)、Windows、Linux、macOS、iOS 和 Android。它允许开发者共享几乎全部的业务逻辑和 UI 代码,同时保持原生性能。选择 Uno Platform 可以统一开发体验,减少代码重复,降低开发成本。安装时需先配置好 Visual Studio 或 Visual Studio for Mac,并通过 NuGet 或官网下载工具包。
13 0
|
7天前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
14 0
|
7天前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
19 0
|
7天前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
16 0
|
7天前
|
Java 前端开发 Spring
技术融合新潮流!Vaadin携手Spring Boot、React、Angular,引领Web开发变革,你准备好了吗?
【8月更文挑战第31天】本文探讨了Vaadin与Spring Boot、React及Angular等主流技术栈的最佳融合实践。Vaadin作为现代Java Web框架,与其他技术栈结合能更好地满足复杂应用需求。文中通过示例代码展示了如何在Spring Boot项目中集成Vaadin,以及如何在Vaadin项目中使用React和Angular组件,充分发挥各技术栈的优势,提升开发效率和用户体验。开发者可根据具体需求选择合适的技术组合。
19 0
|
7天前
|
JavaScript 开发者
从零基础到实战应用:Angular入门指南带你一步步构建你的第一个Web应用——全面介绍环境搭建、项目创建、组件开发与应用集成
【8月更文挑战第31天】本文档是针对初学者的Angular入门指南。通过详细步骤与示例代码,教你如何使用Angular CLI搭建开发环境、创建新项目、添加及配置组件,并运行首个应用。Angular是由Google开发的强大Web框架,专为高效构建复杂单页应用设计。按照本指南操作,你将能够快速上手Angular,开启Web应用开发之旅。
11 0
|
7天前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
14 0
下一篇
DDNS