当前位置: 首页 > news >正文

团队介绍网站模板最新国内新闻事件今天

团队介绍网站模板,最新国内新闻事件今天,网站建设时怎么附加数据库,西安给公司做网站目录 一、 SpringMVC三大组件二、 Spring MVC 组件的自动管理2.1 中央转发器(DispatcherServlet)2.2 控制器2.3 视图解析器自动管理2.4 静态资源访问2.5 消息转换和格式化2.6 欢迎页面的自动配置 三、Springboot扩展springmvc3.1 视图控制器注册&#xf…

目录

  • 一、 SpringMVC三大组件
  • 二、 Spring MVC 组件的自动管理
    • 2.1 中央转发器(DispatcherServlet)
    • 2.2 控制器
    • 2.3 视图解析器自动管理
    • 2.4 静态资源访问
    • 2.5 消息转换和格式化
    • 2.6 欢迎页面的自动配置
  • 三、Springboot扩展springmvc
    • 3.1 视图控制器注册(请求转发)
    • 3.2 注册格式化器
    • 3.3 消息转换器扩展 Fastjson
    • 3.4 拦截器注册
  • 四、结语

一、 SpringMVC三大组件

在学习SpringBoot整合springmvc,首先要了解SpringMVC三大组件:

    1. HandlerMapping处理器映射器:建立地址与方法的映射,
      HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
    1. HandlerAdapter处理器适配器:根据地址调用方法。
      Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
    1. ViewResolver 视图解析器:处理ModelAndView数据和视图。
      ViewResolver通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

二、 Spring MVC 组件的自动管理

在Spring Boot项目中,一旦引入了 Web依赖启动器 : spring-boot-starter-web ,那么SpringBoot 整合Spring MVC框架默认实现的一些 xxxAutoConfiguration 自动配置类 就会自动生效 ( 通过配置类 把相关的类加入到IOC容器中 ) ,几乎 可以在无任何额外配置 的情况下 进行Web 开发。

SpringBoot为整合SpringMVC框架实现Web开发,主要提供了以下 自动化配置的功能特性 :
(1)内置了两个视图解析器 : ContentNegotiatingViewResolver 和 BeanNameViewResolver。
(2) 支持静态资源以及 WebJars。
(3)自动注册了转换器和格式化器。
(4)支持 Http消息转换器。
(5)自动注册了消息代码解析器。
(6)支持静态项目首页 index.html。
(7)支持定制应用图标 favicon.ico。
(8)自动初始化Web数据绑定器 : ConfigurableWebBindingInitializer。
Spring Boot 整合Spring MVC进行 Web开发 时 提供了很多默认配置,而且 大多数时候 使用 默认配置 即 可满足开发需求。
例如,Spring Boot整合Spring MVC进行Web开发时,不需要额外配置视图解析器。

2.1 中央转发器(DispatcherServlet)

在传统的 Spring MVC 项目中,需要在 web.xml 中配置中央转发器,示例如下:

<servlet><servlet-name>chapter2</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>chapter2</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

而在 Spring Boot 中,中央转发器被自动接管,无需在 web.xml 中配置(Spring Boot 项目一般不存在 web.xml),相关自动配置类为
在这里插入图片描述

2.2 控制器

在 Spring Boot 中,控制器(Controller)在注解扫描范围内自动管理,开发者只需编写控制器类并使用相应的注解(如 @Controller@RequestMapping 等)即可。

2.3 视图解析器自动管理

Spring Boot 自动配置了视图解析器相关内容,会自动包含 ContentNegotiatingViewResolverBeanNameViewResolver 这两个 bean。
ContentNegotiatingViewResolver:组合所有的视图解析器。
在传统的 Spring MVC 项目中,配置视图解析器可能如下:

<bean id="de" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"></property><property name="suffix" value="*.jsp"></property>
</bean>

在 Spring Boot 中,通过源码配置:

public ContentNegotiatingViewResolver viewResolver(BeanFactory beanFactory) {ContentNegotiatingViewResolver resolver = new ContentNegotiatingViewResolver();resolver.setContentNegotiationManager((ContentNegotiationManager)beanFactory.getBean(ContentNegotiationManager.class));resolver.setOrder(-2147483648);return resolver;
}

此外,当涉及文件上传时,multipartResolver 也会被自动配置好。

2.4 静态资源访问

具体内容可参见 SpringBoot对静态资源的映射规则

2.5 消息转换和格式化

  • 消息转换器:Spring Boot 自动配置了消息转换器,例如通过 @RequestBody 注解,将请求体中的 JSON/XML 数据转换为 Java 对象。
  • 格式化转换器:自动注册了格式化转换器。对于时间类型,可以在配置文件中指定时间的模式,例如:
# 配置时间格式
spring.mvc.format.date=yyyy-MM-dd

2.6 欢迎页面的自动配置

Spring Boot 会自动指定 resources 下的 index.html 作为欢迎页面。

三、Springboot扩展springmvc

在实际开发中springboot并非完全自动化,我们往往需要根据业务需求进行自定义配置。Spring Boot 提供了多种接口和配置类,允许开发者扩展和自定义功能。

3.1 视图控制器注册(请求转发)

Spring Boot 允许我们通过实现 WebMvcConfigurer 接口的 addViewControllers 方法来注册视图控制器。

@Configuration
public class MyMVCCofnig implements WebMvcConfigurer {@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/tx").setViewName("success");}
}
  • @Configuration 注解表明这是一个配置类。
  • MyMVCCofnig 类实现了 WebMvcConfigurer 接口。
  • addViewControllers 方法用于注册视图控制器。在这里,我们添加了一个视图控制器,当访问 /tx 路径时,会转发到名为 success 的视图。

3.2 注册格式化器

格式化器在处理日期等数据类型时非常有用。通过实现 addFormatters 方法,我们可以自定义如何格式化和解析日期。

@Override
public void addFormatters(FormatterRegistry registry) {registry.addFormatter(new Formatter<Date>() {@Overridepublic String print(Date date, Locale locale) {return null;}@Overridepublic Date parse(String s, Locale locale) throws ParseException {return new SimpleDateFormat("yyyy-MM-dd").parse(s);}});
}
  • FormatterRegistry 用于注册自定义的格式化器。
  • 我们创建了一个 Formatter 实现,定义了如何解析字符串为 Date 对象(parse 方法)和如何将 Date 对象格式化为字符串(print 方法)。在这里,我们只实现了 parse 方法,用于将符合 “yyyy-MM-dd” 格式的字符串解析为 Date 对象。

3.3 消息转换器扩展 Fastjson

Spring Boot 默认使用 Jackson 作为 JSON 库,但有时我们需要使用 Fastjson 来处理 JSON 数据。我们可以通过配置消息转换器来扩展 Fastjson。
(1) 引入 Fastjson 依赖
在 pom.xml 中添加 Fastjson 依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version>
</dependency>

(2)配置消息转换器

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {FastJsonHttpMessageConverter fc = new FastJsonHttpMessageConverter();FastJsonConfig fastJsonConfig = new FastJsonConfig();fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);fc.setFastJsonConfig(fastJsonConfig);converters.add(fc);
}
  • configureMessageConverters 方法允许我们配置消息转换器。
  • 我们创建了一个 FastJsonHttpMessageConverter 实例,并设置了序列化特性 SerializerFeature.PrettyFormat,使得 JSON 输出格式化。
  • 将 Fastjson 转换器添加到转换器列表中,从而扩展了 Spring Boot 的消息转换功能。

(3)控制实体类序列化
在实体类中,我们可以使用 @JSONField 注解来控制字段的序列化和反序列化。

public class User {private String username;private String password;private int age;private int score;private int gender;@JSONField(format = "yyyy-MM-dd")private Date date;
}

@JSONField 注解用于指定字段的序列化和反序列化格式。在这个例子中,date 字段被格式化为 “yyyy-MM-dd”。

3.4 拦截器注册

拦截器在请求处理过程中扮演着重要角色,可以用来进行权限检查、日志记录等。
(1)创建拦截器

public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("前置拦截");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("后置拦截");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("最终拦截");}
}

(2)注册拦截器

@Override
public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/hello2");
}

addInterceptors 方法用于注册拦截器。
我们添加了 MyInterceptor 拦截器,并指定它拦截所有路径(“/**”),除了 /hello2 路径。

四、结语

  • Spring Boot在整合Spring MVC过程中提供了许多默认自动化配置和特性,开发者可以通过Spring Boot提供的 WebMvcConfigurer接口 对 MVC功能 进行 定制和扩展。
  • 如果开发者不想使用Spring Boot整合MVC时提供的一些 默认配置,而是想要 绝对 的 自定义管理,那么可以编写一个 @Configuration注解配置类,同时添加 @EnableWebMvc注解 来 关闭Spring Boot提供的 所有关于MVC功能的默认配置。

在这里插入图片描述

http://www.15wanjia.com/news/10826.html

相关文章:

  • wordpress背景图宁波seo推荐
  • 大唐工作室 网站制作分销渠道
  • 网站销售策划南京seo优化公司
  • 4.请简述网站建设流程的过程重庆森林电影高清在线观看
  • 三网合一网站开源dw网站制作
  • 门户型网站建设公司推广
  • 北京免费网站开发维护青岛网站建设方案优化
  • 上海做网站技术中国局势最新消息今天
  • 做淘宝店铺有哪些好的网站电脑培训班电脑培训学校
  • 自己做有趣的网站推广哪个app最挣钱
  • 网站做rss wordpress91永久免费海外地域网名
  • 网站做好后怎么更新内容百度开户代理商
  • 做任务给佣金的网站b2b是什么意思
  • wordpress插件移植seo查询系统源码
  • 在阿里云做网站教程关键词优化多少钱
  • 自己做网站网页剧中上海牛巨微seo优化
  • 现在做一个网站大概多少钱如何制作百度网页
  • 天工网工程信息网官网中山seo关键词
  • 房产网站建设qq空间秒赞秒评网站推广
  • 网站开发与设计实训总结两千字88个seo网站优化基础知识点
  • 开发建设网站管理人员课程培训
  • 工程承包合同范本免费轻松seo优化排名 快排
  • 做神马网站优化排微信指数是什么意思
  • 陆川建设局网站百度平台我的订单
  • 公司起名字大全免费四个字百度首页排名优化价格
  • 珠海网站建设有限公司品牌推广与传播怎么写
  • wordpress html结尾廊坊seo
  • 企业如何做网站推广恶意点击广告软件
  • 如何注册成立家族公司如何提高网站排名seo
  • 房地产建设网站网络营销方法有哪几种