为什么找不到getservletcontext?
我试图使用getServletContext()方法getRealPath( “/”),但我不断收到此错误:为什么找不到getservletcontext?
找不到符号 符号:方法getServletContext()方法 位置:接口的javax。 servlet.http.HttpSession String path = session.getServletContext()。getRealPath(“/”)+“layout/tiles /”+ reportPath;
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
session = request.getSession();
Map params = new HashMap();
String reportPath = "maintenance/jasper/report01.jasper";
exportToPDF(reportPath , response, params);
return null;
}
protected void exportToPDF(String reportPath , HttpServletResponse response, Map jasperParams) throws Exception {
String path = session.getServletContext().getRealPath("/") + "layout/tiles/" + reportPath ;
if (!new File(path).exists()) {
throw new Exception("The path doesn''t exist. </br>" + path);
}
InputStream input = new FileInputStream(path);
jasperParams.put("REPORT_LOCALE", Locale.US);
JasperPrint jasper = JasperFillManager.fillReport(input , jasperParams, new JRBeanCollectionDataSource(Vehicles));
response.setContentType("application/pdf");
ServletOutputStream output = response.getOutputStream();
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasper);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, output);
exporter.exportReport();
output.close();
}
有你为什么发生这种情况的任何想法?
感谢仅限Ritesh,我做了什么,你告诉我,但现在我得到一个新的消息
------编辑--------
检查我的dispatcher-servlet.xml我发现它与此web上显示的代码有所不同。我不知道它是如何影响我的项目的,但我喜欢知道是否有不同的方法来获得与使用会话相同的结果。 的getServletContext() .getRealPath( “/”)
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/tiles.xml</value>
</list>
</property>
</bean>
getServletContext()
在Servlet 2.3的溶液。它在2.2中没有,请参阅Servlet 2.2 javadoc
所以唯一的解释是您的项目正在验证代码与旧版本的对比。
getServletContext()
也出现在Spring的Controller类中,您似乎正在使用它。因此,而不是session.getServletContext().getRealPath("/")
,你将被罚款只有getServletContext().getRealPath("/")
编辑1月30日:Jasper报表的jar文件清理
我已验证jasperreports-3.7.1-project.zip有老版本的servlet。罐。我建议如下:
删除您从jasperreports-3.7.1-project.zip的lib文件夹中添加的所有jar文件,但是从“DIST”文件夹中保存jar文件。
根据编译错误消息逐个添加jar文件。请不要添加任何在TOMCAT-HOME/lib文件夹中可用的jar文件,也不要添加任何Spring jar文件。既然您知道jasper报告项目包含旧的jar文件,请首先查看netbeans是否提供了这些jar文件,如果不是的话,请尝试使用来自其他存储库的最新版本,如http://repo1.maven.org/maven2/。 Spring框架下载与依赖关系也有几个常用的文件,你可以使用。
检查任何在线资源以获取有关所需jar文件的更多信息。以下链接描述了在netbeans中与jasper报告版本1.2.5的集成:http://developers.sun.com/jsenterprise/archive/reference/techart/jse8/jasper_reports.html但是您需要类似与3.7.1版本相关的内容。
您可以查看本文档http:// netbeans。org/kb/68/web/quickstart-webapps-spring.html并查看在项目设置中是否有任何不同之处? – Ritesh 2011-01-30 13:18:34
您正在使用哪个版本的Jasper报告以及您在项目中添加了Jasper报告的哪些罐子? – Ritesh 2011-01-30 17:21:41