SpringMVC下监听项目启动和静态资源配置

本文介绍如何在Spring MVC中实现应用启动监听并配置静态资源路径,通过具体代码示例展示如何创建监听器及静态资源映射。

这个其实很简单
1.在spring-mvc中配置:

<bean class="com.company.listener.StartUpListener"/>

2.新建StartUpListener类

@Service
public class StartUpListener implements ApplicationListener<ContextRefreshedEvent> {
    @Autowired
    public UserMapper userMapper;
    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {
        if(event.getApplicationContext().getParent() != null){
        }
    }
}

ps:网上说会执行两次,需要判断event.getApplicationContext().getParent()为空,但是我测试的时候,发现只执行一次,并且是ServletContext,不为空,所以我加了不为空的判断。

下面是静态资源的配置
1.spring-mvc下配置

 <mvc:resources mapping="/static/**" location="/WEB-INF/static/"/>

2.在/WEB-INF/static/下放任意文件,重新部署项目,都能通过../static/文件名 的地址访问到该文件

### SpringMVC项目在Tomcat启动时访问页面显示404的解决方案 SpringMVC项目在Tomcat启动时访问页面显示404的问题通常由多种因素引起,以下是可能导致该问题的原因及其对应解决方案: #### 1. **Web应用未正确加载** 如果控制台日志中出现`StandardContext.loadOnStartup`错误,则可能是由于SpringMVC框架未能正确初始化。这通常是由于配置文件路径或名称不匹配引起的。确保`web.xml`文件中正确声明了DispatcherServlet,并且其映射路径无误。 ```xml <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` 此外,确认`servlet-api.jar`版本与Tomcat兼容[^4]。 --- #### 2. **资源路径设置不当** 404错误表明客户端请求的URL未找到对应的资源。检查控制器类中的@RequestMapping注解是否与实际访问地址一致。例如,假设有一个Controller如下所示: ```java @Controller public class HelloController { @RequestMapping("/hello") public String sayHello() { return "hello"; // 对应视图名为 hello.jsp 或其他模板引擎渲染的内容 } } ``` 访问路径应该是`http://localhost:8080/your-app-context/hello`。如果路径不对或者缺少上下文根目录(如`your-app-context`),则会触发404错误[^3]。 --- #### 3. **依赖库缺失或冲突** 当Tomcat无法识别某些必要的JAR包时,可能会导致404或其他异常行为。特别是当使用较新的Tomcat版本(如10及以上)时,需注意`javax.servlet`已被替换为`jakarta.servlet`。因此,在构建工具(如Maven或Gradle)中调整相关依赖项非常重要。 Maven示例: ```xml <!-- Jakarta Servlet API --> <dependency> <groupId>jakarta.servlet</groupId> <artifactId>jakarta.servlet-api</artifactId> <version>6.0.0</version> <scope>provided</scope> </dependency> ``` --- #### 4. **静态资源配置问题** 若前端HTML/CSS/JS等静态资源不可用也会引发类似的404现象。通过修改`spring-mvc-config.xml`来指定静态资源处理规则可有效解决问题。 ```xml <mvc:resources mapping="/static/**" location="/resources/" /> ``` 上述配置表示所有以`/static/`开头的请求都将指向`/resources/`下的物理文件夹[^1]。 --- #### 5. **端口冲突检测** 虽然这不是直接造成404的主要原因,但如果Tomcat监听的端口被占用也可能间接影响服务正常运行。按照以下步骤排查并释放冲突端口[^5]: - 使用命令 `netstat -ano | findstr 端口号` 查找具体PID; - 结束相应进程后重新尝试启动Tomcat实例。 --- #### 总结 综合以上分析可知,针对SpringMVC项目在Tomcat上启动失败返回404的情况可以从以下几个方面入手:验证核心组件加载状态、校正路由定义准确性、补充必要外部支持库以及优化静态资产分发机制等方面逐一排除潜在隐患直至恢复正常运作为止。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值