Bonjour,
je suis entrain de travailler avec Spring et Jasperreport pour la génération des rapport . mais j'ai rencontré quelques problèmes qui m'ont bloqués voila mon code source .

Web.xml :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">  <servlet>
<servlet-name>jasperSpring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jasperSpring</servlet-name>
<url-pattern>/jasperSpring/*</url-pattern>
</servlet-mapping>
 
</web-app>



Et voila mon fichier views.properties :

report.class=org.springframework.web.servlet.view.jasperreports.JasperReportsPdfView
report.url=/WebContent/reportsusers.jasper
Et voila mon fichier jasperSpring-servlet.xml :


Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.
springframework.org/dtd/spring-beans.dtd">
<beans>
 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location"><value>/WEB-INF/jdbc.properties</value></property>
</bean>
 
<bean id="dataSource"
class="org.springframework.jdbc.datasource.
DriverManagerDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>${jdbc.url}</value>
</property>
<property name="username">
<value>${jdbc.username}</value>
</property>
<property name="password">
<value>${jdbc.password}</value>
</property>
</bean>
<bean id="publicUrlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="report">jasperController</prop>
</props>
</property>
</bean>
<bean id="jasperController"
class="net.ensode.jasperbook.spring.JasperSpringController">
<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.
ResourceBundleViewResolver">
<property name="basename" value="views"/>
</bean>
</beans>


voila ma servlet jasperSpringController

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package net.ensode.jasperbook.spring;
import java.io.IOException;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class JasperSpringController implements Controller
{
private DataSource dataSource;
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException,
IOException, ClassNotFoundException, SQLException
{
return new ModelAndView("report", getModel());
}
private Map getModel() throws ClassNotFoundException, SQLException
{
Connection connection;
Statement statement;
ResultSet resultSet;
HashMap model = new HashMap();
String query = "select * from users";
connection = dataSource.getConnection();
statement = connection.createStatement();
 
resultSet = statement.executeQuery(query);
JRResultSetDataSource resultSetDataSource =
new JRResultSetDataSource(resultSet);
model.put("datasource", resultSetDataSource);
return model;
}
public void setDataSource (DataSource dataSource)
{
this.dataSource=dataSource;
}
}

Enfin ma page jsp qui fait apelle au report :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Generate Report</title>
</head>
<body>
Click on the button to generate the report.
<form name="reportForm" action="jasperSpring/report" method="post">
<input type="submit" name="submitButton" value="Submit"/>
</form>
</body>
</html>



Mais lorque je lance ma page jsp elle me donne une liste de message d'erreur :


exception

javax.servlet.ServletException: "Servlet.init()" pour la servlet jasperSpring a généré une exception
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)


cause mère

org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/jasperSpring-servlet.xml]: Bean class [org.springframework.jdbc.datasource. DriverManagerDataSource] not found; nested exception is java.lang.ClassNotFoundException: org.springframework.jdbc.datasource. DriverManagerDataSource
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:645)
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitionElement(DefaultXmlBeanDefinitionParser.java:531)
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseDefaultElement(DefaultXmlBeanDefinitionParser.java:397)
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.parseBeanDefinitions(DefaultXmlBeanDefinitionParser.java:371)
org.springframework.beans.factory.xml.DefaultXmlBeanDefinitionParser.registerBeanDefinitions(DefaultXmlBeanDefinitionParser.java:206)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:388)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:259)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:209)
org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:184)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:128)
org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:144)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:126)
org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:89)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:279)
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:155)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:308)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:252)