转-spring boot web相关配置
spring boot web相关配置
- 80436
spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spring boot 自动配置的功能(因为加了EnableAutoConfiguration的注解),帮我们创建了一堆默认的配置,以前在web.xml中配置,现在都可以通过spring bean的方式进行配置,由spring来进行生命周期的管理,大多数情况下,我们需要重载这些配置(例如修改服务的启动端口,contextpath,filter,listener,servlet,session超时时间等)
1. servlet配置
当应用只有默认的servlet(即DispatcherServlet)时,映射的url为/,存在其他的servlet时,映射的路径为servlet的注册的beanname(可通过@Component注解修改),创建方式如下:
- @Component("myServlet")
- public class MyServlet implements Servlet{
- /**
- *
- * @see javax.servlet.Servlet#destroy()
- */
- @Override
- public void destroy() {
- System.out.println("destroy...");
- }
- /**
- * @return
- * @see javax.servlet.Servlet#getServletConfig()
- */
- @Override
- public ServletConfig getServletConfig() {
- return null;
- }
- /**
- * @return
- * @see javax.servlet.Servlet#getServletInfo()
- */
- @Override
- public String getServletInfo() {
- return null;
- }
- /**
- * @param arg0
- * @throws ServletException
- * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
- */
- @Override
- public void init(ServletConfig arg0) throws ServletException {
- System.out.println("servlet init...");
- }
- /**
- * @param arg0
- * @param arg1
- * @throws ServletException
- * @throws IOException
- * @see javax.servlet.Servlet#service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)
- */
- @Override
- public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException,
- IOException {
- System.out.println("service...");
- }
2. filter配置
filter配置的映射是/*,创建方式如下:
- @Component("myFilter")
- public class MyFilter implements Filter{
- /**
- *
- * @see javax.servlet.Filter#destroy()
- */
- @Override
- public void destroy() {
- System.out.println("destroy...");
- }
- /**
- * @param arg0
- * @param arg1
- * @param arg2
- * @throws IOException
- * @throws ServletException
- * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
- */
- @Override
- public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
- throws IOException,
- ServletException {
- System.out.println("doFilter...");
- arg2.doFilter(arg0, arg1);
- }
- /**
- * @param arg0
- * @throws ServletException
- * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
- */
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- System.out.println("filter init...");
- }
- }<span style="font-family: Arial, Helvetica, FreeSans, sans-serif; font-size: 13.3333330154419px; line-height: 17.3333339691162px; background-color: transparent;"> </span>
3. listener配置
- @Component("myListener")
- public class MyListener implements ServletContextListener{
- /**
- * @param arg0
- * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
- */
- @Override
- public void contextDestroyed(ServletContextEvent arg0) {
- System.out.println("contextDestroyed...");
- }
- /**
- * @param arg0
- * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
- */
- @Override
- public void contextInitialized(ServletContextEvent arg0) {
- System.out.println("listener contextInitialized...");
- }
- }
如果觉得控制力度不够灵活(例如你想修改filter的映射),spring boot还提供了 ServletRegistrationBean,FilterRegistrationBean,ServletListenerRegistrationBean这3个东西来进行配置
修改filter的映射
- @Configuration
- public class WebConfig {
- @Bean
- public FilterRegistrationBean filterRegistrationBean(MyFilter myFilter){
- FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
- filterRegistrationBean.setFilter(myFilter);
- filterRegistrationBean.setEnabled(true);
- filterRegistrationBean.addUrlPatterns("/bb");
- return filterRegistrationBean;
- }
- }
4. 配置servlet 容器
可以通过两种方式配置servlet容器,一种是通过properties文件,例如:
- server.port=8081
- server.address=127.0.0.1
- server.sessionTimeout=30
- server.contextPath=/springboot
另一种方式是java代码的形式:
- @Component
- public class MyCustomizationBean implements EmbeddedServletContainerCustomizer {
- /**
- * @param container
- * @see org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer#customize(org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer)
- */
- @Override
- public void customize(ConfigurableEmbeddedServletContainer container) {
- container.setContextPath("/sprintboot");
- container.setPort(8081);
- container.setSessionTimeout(30);
- }
- }
5. error 处理
spring boot 提供了/error映射来进行错误处理,它会返回一个json来对错误信息进行描述(包含了http状态和异常信息),例如404的错误
当然可以定制错误页面,通过实现ErrorController接口,并将它装配起来即可,如下:
- @Controller
- public class ErrorHandleController implements ErrorController {
- /**
- * @return
- * @see org.springframework.boot.autoconfigure.web.ErrorController#getErrorPath()
- */
- @Override
- public String getErrorPath() {
- return "/screen/error";
- }
- @RequestMapping
- public String errorHandle(){
- return getErrorPath();
- }
- }
还可以这样:
- @Component
- private class MyCustomizer implements EmbeddedServletContainerCustomizer {
- @Override
- public void customize(ConfigurableEmbeddedServletContainer container) {
- container.addErrorPages(new ErrorPage(HttpStatus.BAD_REQUEST, "/screen/error"));
- }
- }
6.模板引擎
spring boot 会自动配置 FreeMarker,Thymeleaf,Velocity,只需要在pom中加入相应的依赖即可,例如应用Velocity
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-velocity</artifactId>
- </dependency>
默认配置下spring boot会从src/main/resources/templates目录中去找模板
7. jsp限制
如果要在spring boot中使用jsp,得将应用打包成war,这里有配置的example https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-web-jsp
转-spring boot web相关配置的更多相关文章
- spring boot web相关配置
spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spri ...
- 【转】spring boot web相关配置
spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何web相关的配置便能提供web服务,这还得归于spri ...
- Spring Boot SSL [https]配置例子
前言 本文主要介绍Spring Boot HTTPS相关配置,基于自签证书实现: 通过本例子,同样可以了解创建SSL数字证书的过程: 本文概述 Spring boot HTTPS 配置 server. ...
- Springboot 系列(六)Spring Boot web 开发之拦截器和三大组件
1. 拦截器 Springboot 中的 Interceptor 拦截器也就是 mvc 中的拦截器,只是省去了 xml 配置部分.并没有本质的不同,都是通过实现 HandlerInterceptor ...
- Spring Boot 2.0 配置图文教程
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...
- Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎
前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...
- spring boot @ConditionalOnxxx相关注解总结
Spring boot @ConditionalOnxxx相关注解总结 下面来介绍如何使用@Condition public class TestCondition implements Condit ...
- Spring Boot 外部化配置(一)- Environment、ConfigFileApplicationListener
目录 前言 1.起源 2.外部化配置的资源类型 3.外部化配置的核心 3.1 Environment 3.1.1.ConfigFileApplicationListener 3.1.2.关联 Spri ...
- Spring Boot的自动配置
Spring Boot的自动配置 --摘自https://www.hollischuang.com/archives/1791 随着Ruby.Groovy等动态语言的流行,相比较之下Java的开发显得 ...
随机推荐
- eclipse jsp:useBean搞死人了。
eclipse jsp:useBean搞死人了 首页,用eclipse需要经常重启tomcat服务器,这是因为你编辑了页面正浏览这个页面,而这个页面还处在之前的错误编译中... 其次,第一次用到use ...
- English trip -- Phonics 2 元音字母a
xu言: 欲速则不达,如果这是你生命中最后一天.你还愿意花这么多精力继续坚持你现在做的事吗?如果答案是否定的,那么你需要改变了! What makes a word? 单词构成 Word 单词: ...
- 微信小程序------MD5加密(支持中文和不支持中文)和网络请求(get和post)
开发中常常遇到MD5加密,最近做小程序也用到了,简单总结了一下: 这要有两个加密文件,一个不支持中文,一个支持,所以你选择支持的来用就行了: 也随便说说小程序的get和post网络请求. 来看看效果图 ...
- IntelliJ Idea工具使用
以前一直用eclipse/myeclipse开发,最近因为需要学习了intelliJ Idea工具,感觉真的挺好用的..好用的东西就要掌握加以利用,特写一篇简单的总结(只写大体). 一,什么是Inte ...
- hdu-6301-贪心
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 牛客网——E求最值
链接:https://www.nowcoder.com/acm/contest/59/E来源:牛客网 题目描述 给你一个长为n的序列a 定义f(i,j)=(i-j)2+g(i,j)2 g是这样的一个函 ...
- dp练习(11)——石子并归
1048 石子归并 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有n堆石子排成一列,每堆石子有一个重量w ...
- elasticsearch 路由文档到分片
路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是 ...
- python学习笔记(七)---编辑器pycharm的安装
百度经验网址: https://jingyan.baidu.com/article/0f5fb0993624176d8234ea6c.html 其中 添加 “0.0.0.0 account.jetbr ...
- HttpWebRequest HttpClient
HttpWebRequest HttpClient 简单封装使用,支持https HttpWebRequest using System; using System.Collections.Gener ...