maven中webapp目录下WEB-INF包中web.xml基本配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <!--配置加载路径文件,applicationContext.xml-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>
  <!--解决中文乱码-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
<filter-mapping>
  <filter-name>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
  <!--不知道为什么在博客,这里加个*号,后面就全变灰色了-->
</filter-mapping>

  <!--前端控制器,制定加载,spring-mvc.xml-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!--让服务器启动的时候,就进行创建servlet对象-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!--
          /*   把用户端所有请求都当做requestMapping指定的路径处理,都会进controller
          /    页面不会拦截
          -->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>
### Spring Boot 项目中的 `web.xml` 配置 #### 使用内置支持替代传统 `web.xml` Spring Boot 推崇基于 Java 的配置方式来代替传统的 XML 文件。对于大多数场景,推荐使用嵌入式的 Servlet 容器以及相应的自动配置功能,而不是直接编辑 `web.xml` 文件[^1]。 如果确实需要自定义 Web 应用程序初始化逻辑,则可以通过实现特定接口的方式完成: - 实现 `WebApplicationInitializer` 接口并重写其方法; - 或者创建带有 `@Configuration` 注解的类,并在其内部声明各种组件(如过滤器、监听器等)。 这种方式不仅保持了灵活性还能够更好地与其他 Spring 功能集成在一起。 #### 如果必须保留 `web.xml` 当不得不兼容某些遗留系统或第三方库时,仍然可以在 Spring Boot 中引入 `web.xml` 来管理部分设置。这通常涉及到以下几个方面的工作: 1. **调整打形式** 将应用构建成果改为 WAR 形式而非默认 JAR 。修改 Maven 构建工具下的 `pom.xml` 文件,指定 `<packaging>` 属性为 war 并移除内嵌容器依赖项[^3]。 2. **放置 `web.xml` 文件** 把 `web.xml` 放置于资源目录下 `/src/main/webapp/WEB-INF/` 路径中。注意这里的路径是固定的,不可随意更改位置以免造成找不到部署描述符的情况发生。 3. **确保正确加载** 修改启动类使其继承于 `SpringBootServletInitializer` 类,并覆盖其中的方法以允许外部服务器读取到该文件的内容。例如: ```java import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } } ``` 上述操作完成后,在实际环境中部署至 Tomcat 等标准 Servlet 容器即可生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值