gpt4 book ai didi

java - 我无法使用 javax.servlet 版本 2.5 导入 javax.servlet.FilterRegistration

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:44 24 4
gpt4 key购买 nike

我正在使用 Spring MVC Web 应用程序,但在处理这些导入时遇到了问题:

import javax.servlet.FilterRegistration;
import javax.servlet.ServletRegistration;

错误提示无法解析导入javax.servlet.FilterRegistration

这是我的初始化应用程序(我正在使用 java confgi)

 public class InitApp implements WebApplicationInitializer {

@Override
public void onStartup(ServletContext container)
{
// Create the 'root' Spring application context
AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();
rootContext.register(RootConfig.class);

// Manage the lifecycle of the root application context
container.addListener(new ContextLoaderListener(rootContext));

// Create the dispatcher servlet's Spring application context
AnnotationConfigWebApplicationContext dispatcherServlet = new AnnotationConfigWebApplicationContext();
dispatcherServlet.register(MvcConfig.class);

// Register and map the dispatcher servlet
ServletRegistration.Dynamic dispatcher = container.addServlet("dispatcher", new DispatcherServlet(dispatcherServlet));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");

}

private void registerCharacterEncodingFilter(ServletContext servletContext) {
CharacterEncodingFilter encodingFilter = new CharacterEncodingFilter();
encodingFilter.setEncoding("UTF-8");
encodingFilter.setForceEncoding(true);
FilterRegistration.Dynamic characterEncodingFilter = servletContext.addFilter("characterEncodingFilter", encodingFilter);
characterEncodingFilter.addMappingForUrlPatterns(null, false, "/*");
}
}

this is my maven dependency
<!-- Servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

如果我放置此 Maven 依赖项,错误将不再显示

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>

但是我的服务器给了我这个错误“Dynamic Web Module 3.1需要Java 1.7或更高版本”

这些导入仅在我使用 javax.servlet-api 版本 3.1.0 时才可用

最佳答案

如果您需要使用 Java Servlet 3.1 中的类,您需要一个实现该规范级别的服务器(例如:Tomcat 8、Wildfly、Glassfish 4)。

否则,如果您的应用程序包含带有某些 Servlet API 的 JAR,应用程序服务器将不会加载它。您将得到:jar not returned

顺便说一句,在我看来,Servlet 3.0 可能就足够了(Tomcat 7、JBoss AS 7、Glassfish 3.x)。

另一个解决方案是使用 older version Spring 的。

关于java - 我无法使用 javax.servlet 版本 2.5 导入 javax.servlet.FilterRegistration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28242355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com