Java 对于Eclipse的maven项目中的HttpServletRequest类型,未定义getServletContext()类型
我在线上遵循了一个示例,但当我使用某个函数request.getServletContext().getServletRegistrations()时。它无法识别此功能Java 对于Eclipse的maven项目中的HttpServletRequest类型,未定义getServletContext()类型,java,eclipse,maven,servlets,servlet-filters,Java,Eclipse,Maven,Servlets,Servlet Filters,我在线上遵循了一个示例,但当我使用某个函数request.getServletContext().getServletRegistrations()时。它无法识别此功能 // Check the target of the request is a servlet? private boolean needJDBC(HttpServletRequest request) { System.out.println("JDBC Filter"); String servletP
// 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;
}
//检查请求的目标是否为servlet?
私有布尔需求JDBC(HttpServletRequest){
System.out.println(“JDBC过滤器”);
字符串servletPath=request.getServletPath();
//=>/abc/mnp
字符串pathInfo=request.getPathInfo();
字符串urlPattern=servletPath;
如果(路径信息!=null){
//=>/spath/*
urlPattern=servletPath+“/*”;
}
//关键字:servletName。
//值:ServletRegistration
Map servletRegistrations=request.getServletContext()
.getServletRegistrations();
//webapp中所有servlet的集合。
收集
com.oracle
ojdbc6
11.2.0.3
朱尼特
朱尼特
3.8.1
测试
org.glassfish.web
javax.servlet.jsp.jstl
1.2.5-b03
javax.servlet.jsp.jstl
javax.servlet.jsp.jstl-api
1.2.1
javax.servlet
javax.servlet-api
3.0.1
假如
埃尔斯项目
任何帮助都将不胜感激。谢谢。解决方案
替换:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
javax.servlet
这些也是glassfish捆绑包,在这个过程中重新打包并制作成osgi捆绑包,这样它们就可以在osgi环境中与jetty一起使用……不过它们应该可以正常工作,我们将它们打包到我们的jetty7
发行版中。只需将这个javax.servlet-api保存在pom.xml上,并确保pom.xml位于正确的位置主项目文件夹。键入mvn clean install命令并检查是否成功安装了日志,然后检查您的.m2文件夹是否存在javax.servlet-api jar。如果一切正常,您必须确保maven和eclipse之间存在任何路径冲突。在欢迎使用此代码段的同时检查此答案,并可能提供一些帮助,它是这将是如何解决问题以及为什么解决问题的。请记住,你是在回答未来读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependency>
</groupId>`org.mortbay`.jetty</groupId>
</artifactId>servlet-api</artifactId>
</version>3.0.20100224</version>
</dependency>