Ich folgte ein Beispiel online, aber wenn ich die bestimmte Funktion request.getServletContext() verwenden. GetServletRegistrations(). Es erkennt nicht diese FunktionDer Typ getServletContext() ist nicht definiert für den Typ HttpServletRequest in einem Maven-Projekt für Eclipse
// Check the target of the request is a servlet?
private boolean needJDBC(HttpServletRequest request) {
System.out.println("JDBC Filter");
String servletPath = request.getServletPath();
// => /abc/mnp
String pathInfo = request.getPathInfo();
String urlPattern = servletPath;
if (pathInfo != null) {
// => /spath/*
urlPattern = servletPath + "/*";
}
// Key: servletName.
// Value: ServletRegistration
Map<String, ? extends ServletRegistration> servletRegistrations = request.getServletContext()
.getServletRegistrations();
// Collection of all servlet in your webapp.
Collection<? extends ServletRegistration> values = servletRegistrations.values();
for (ServletRegistration sr : values) {
Collection<String> mappings = sr.getMappings();
if (mappings.contains(urlPattern)) {
return true;
}
}
return false;
}
Wenn ich diese gleiche Funktion in einem normalen dynamischen Web-Projekt verwenden, funktioniert es ohne Fehler in Ordnung, aber mit Maven dieser gleichen Methoden sind nicht definiert. Ich habe versucht, die request.getServletContext() zu ändern. GetServletRegistrations();
bis request.getSession(). GetServletContext(). GetServletRegistrations();
Ich erkannte die getSession.getServletContext(), aber es erkennt dann nicht die getServletRegistrations(). Ich dachte, es könnte ein Problem Abhängigkeiten so habe ich mehrere Abhängigkeiten zu meinem pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ers</groupId>
<artifactId>ERSProject</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>ERSProject Maven Webapp</name>
<url>http://maven.apache.org</url>
<repositories>
<!-- Repository for ORACLE ojdbc6. -->
<repository>
<id>codelds</id>
<url>https://code.lds.org/nexus/content/groups/main-repo</url>
</repository>
</repositories>
<dependencies>
<!-- Oracle database driver -->
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.5-b03</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/javax.servlet.jsp.jstl-api -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>ERSProject</finalName>
</build>
Jede Hilfe wäre sehr geschätzt habe. Danke.
Einfach halten diese javax.servlet-api auf Ihrer pom.xml. Und achten Sie darauf, dass sich Ihre pom.xml an der richtigen Stelle im Hauptprojektordner befindet. Geben Sie den Befehl mvn clean install ein und überprüfen Sie die Protokolle, die erfolgreich installiert wurden, und überprüfen Sie dann, ob Ihr .m2-Ordner javax.servlet-api jar existiert. Wenn alles in Ordnung ist, müssen Sie sicherstellen, dass es einen Pfadkonflikt zwischen Maven und Eclipse gibt. – erhun
Überprüfen Sie diese Antwort https://stackoverflow.com/questions/29314336/how-to-figure-out-wy-certain-javax-servlet-dependency-is-added-to-a-maven-proje –