Bonjour,

Je débute sur le JSP et j'ai deux problèmes que je n'arrive pas à résoudre sur un programme assez basique.

J'ai deux blocs :
- Un java+jsp pour enregistrer des données
- Un java+jsp pour afficher les données

Je charge la page :
http://localhost/test/addUf.jsp

Je remplis mes données, je clique sur ajouter.
L'insertion en base se fait et au niveau de la barre d'adresse j'aboutis sur
http://localhost/test/servletRecord


Le problème c'est au moment où j'arrive sur ce servlet Record je tombe en erreur que je ne comprend pas :

05-Mar-2021 12:29:45.046 INFOS [Catalina-utility-1] org.apache.catalina.core.StandardContext.reload Le rechargement de ce contexte est terminé
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:423)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at servletRecord.doGet(servletRecord.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:621)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400)
... 37 more
Caused by: java.lang.IllegalArgumentException: Directive de page : valeur invalide pour import
at org.apache.jasper.compiler.Node$PageDirective.validateImport(Node.java:619)
at org.apache.jasper.compiler.Node$PageDirective.addImport(Node.java:599)
at org.apache.jasper.compiler.Parser.parsePageDirective(Parser.java:366)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:478)
at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1797)
at org.apache.jasper.compiler.Parser.parse(Parser.java:141)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
at org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:127)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:386)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:346)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605)
... 38 more
org.apache.jasper.JasperException: org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:423)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:459)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at servletRecord.doGet(servletRecord.java:71)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1589)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:621)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400)
... 37 more
Caused by: java.lang.IllegalArgumentException: Directive de page : valeur invalide pour import
at org.apache.jasper.compiler.Node$PageDirective.validateImport(Node.java:619)
at org.apache.jasper.compiler.Node$PageDirective.addImport(Node.java:599)
at org.apache.jasper.compiler.Parser.parsePageDirective(Parser.java:366)
at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:478)
at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1797)
at org.apache.jasper.compiler.Parser.parse(Parser.java:141)
at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
at org.apache.jasper.compiler.ParserController.parseDirectives(ParserController.java:127)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:202)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:386)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:346)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605)
... 38 more
Voici mes fichiers:
addUF.java
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.sql.*;
import java.util.*;
import com.microsoft.sqlserver.jdbc.*;
 
public class addUf extends HttpServlet{ 
 
   public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
	{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
 
		Connection connBDUtil = null;
 
		String id_config = request.getParameter("id_config").toString();
		String uf_code = request.getParameter("uf_code").toString();
		String libelle = request.getParameter("libelle").toString();
		String nbLits = request.getParameter("nbLits").toString();
		String actif = "1";
		if(request.getParameter("actif")== null) actif = "0";
 
		Statement stmt;
		try {SQLServerDataSource ds_BD_util = new SQLServerDataSource();
 
			ds_BD_util.setUser(db.UserBD_util);
			ds_BD_util.setPassword(db.PasswordBD_util);
			ds_BD_util.setServerName(db.ServerNameBD_util);
			ds_BD_util.setPortNumber(db.PortNumberBD_util);
			ds_BD_util.setDatabaseName(db.DatabaseNameBD_util);
			connBDUtil = ds_BD_util.getConnection();				
 
			System.out.println("Connected to the database");
 
			//test de validité
 
			String sqlText = "INSERT INTO LitsConfig (id_config, uf_code, libelle, nbLits, actif) " +
					"VALUES ('" + id_config + "', '" + uf_code + "', '" + libelle + "', '" + nbLits + "', '" + actif +"')" ;
 
			System.out.println("SQL : " + sqlText);
 
			stmt = connBDUtil.createStatement();
 
			int i = stmt.executeUpdate(sqlText);
			System.out.println("query" + sqlText);
			if(i>0)
			{
				response.sendRedirect("servletRecord");
			}
			connBDUtil.close();
			System.out.println("Disconnected from database");
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
	}
}

addUF.jsp
Code jsp : 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
<html>
<head></head>
<body>
	<form name="userform" method="post" action="addUf">
	<br><br><br>
		<table align="center" width="300px" style="background-color:#EDF6EA;border:1px solid #000000;">
		<tr><td colspan=2 style="font-weight:bold;" align="center">Ajouter une UF</td></tr>
		<tr><td colspan=2 align="center" height="10px"></td></tr>
			<tr>
				<td style="font-weight:bold;">Id config</td>
				<td><input type="text" name="id_config" value=""></td>
			</tr
 
			<tr>
				<td style="font-weight:bold;">UF</td>
				<td><input type="text" name="uf_code" value=""></td>
			</tr>
			<tr>
				<td style="font-weight:bold;">Libellé</td>
				<td><input type="text" name="libelle" value=""></td>
			</tr>
			<tr>
				<td style="font-weight:bold;">Nombre de lits</td>
				<td><input type="text" name="nbLits" value=""></td>
			</tr>
			<tr>
				<td style="font-weight:bold;">actif</td>
				<td><input type="checkbox" name="actif" value=""></td>
			</tr>
 
			<tr>
				<td></td>
				<td><input type="submit" name="Submit" value="Ajouter" style="background-color:#49743D;font-weight:bold;color:#ffffff;"></td>
			</tr>
			<tr><td colspan=2 align="center" height="10px"></td></tr>
		</table>
	</form>
</body>
</html>

servletRecord.java
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.sql.*;
import java.sql.*;
import java.util.*;
import com.microsoft.sqlserver.jdbc.*;
 
public class servletRecord extends HttpServlet{ 
 
   public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException
	{
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
 
		Connection connBDUtil = null;
 
		Statement stmt;
 
		try 
		{	
			SQLServerDataSource ds_BD_util = new SQLServerDataSource();
 
			ds_BD_util.setUser(db.UserBD_util);
			ds_BD_util.setPassword(db.PasswordBD_util);
			ds_BD_util.setServerName(db.ServerNameBD_util);
			ds_BD_util.setPortNumber(db.PortNumberBD_util);
			ds_BD_util.setDatabaseName(db.DatabaseNameBD_util);
			connBDUtil = ds_BD_util.getConnection();
 
			System.out.println("Connected to the database");
 
			ArrayList arrayConfig = null;
			ArrayList litsConfigList = new ArrayList();
 
			String sqlText = "SELECT * FROM LitsConfig ORDER BY libelle";
			System.out.println("sqlText " + sqlText);
 
			stmt = connBDUtil.createStatement();
			ResultSet  rs = stmt.executeQuery(sqlText);
 
			while(rs.next())
			{
				arrayConfig  = new ArrayList();
 
				arrayConfig.add(rs.getInt(1));		// Id Config
				arrayConfig.add(rs.getString(2));	// Ufs
				arrayConfig.add(rs.getString(3));	// Libellé
				arrayConfig.add(rs.getInt(4));		// Nb Lits
				arrayConfig.add(rs.getInt(5));		// Actif
 
				System.out.println("arrayConfig :: "+arrayConfig);
				litsConfigList.add(arrayConfig);
			}
 
			request.setAttribute("litsConfigList", litsConfigList);
 
			String nextJSP = "/home.jsp";
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
			dispatcher.forward(request,response);
 
			ConnEasily.close();
			connBDUtil.close();
			System.out.println("Disconnected from database");			
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
	}
}

home.jsp
Code jsp : 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<%@ page language="java" import="java.util.*;"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE>Occupation des lits de pédiatrie</TITLE>
 
  <script language="javascript">
	function editrecord(id){	   
		window.location.href="editServlet/"+id; 
	  }
 
 
	  function deleteRecord(id){	   
		window.location.href="deleteUser/"+id; 
	  }
</script>
 </HEAD>
 
 <BODY>
 <br>
<table align="center">
 
</table>
<br>
  <table width="600px"  align="center" style="background-color:#EDF6EA;border:1px solid #000000;">
	<tr><td colspan=9 align="center" height="10px"></td></tr>
 
    <tr><td colspan=9 align="center"><a href="addUf.jsp" style="font-weight:bold;color:#cc0000;">Ajouter une configuration d'UF</a></td></tr>
	<tr><td colspan=9 align="center" height="10px"></td></tr>
 
	<tr style="background-color:#7BA88B;font-weight:bold;">
	 <td>Config Id</td>
	 <td>Codes UF</td>
	 <td>Libellé</td>
	 <td>Nombre de lits</td>
	 <td>Actif</td>	 
	 <td>Edit</td>
	 <td>Delete</td>
	</tr>
 
	<%
        String bgcolor="";
        int count=0;
        List viewList = new ArrayList();
        Iterator  viewitrLitsConfig;
        
        if(request.getAttribute("litsConfigList")!=null && request.getAttribute("litsConfigList")!="")
        {
                List litsConfigList =  (ArrayList)request.getAttribute("litsConfigList");
                Iterator itrLitsConfig = litsConfigList.iterator();
                
                while(itrLitsConfig.hasNext())
                {
                        
                        if(count%2==0)
                        {
                         bgcolor = "#C8E2D1";
                        }
                        else
                        {
                                
                                bgcolor = "#EAF8EF";
                        }
                        
                        viewList = (ArrayList)itrLitsConfig.next();
                        int id = Integer.parseInt(viewList.get(0).toString());
                        viewitrLitsConfig = viewList.iterator();
                        %>
			<tr style="background-color:<%=bgcolor%>;">
			<%      
                        while(viewitrLitsConfig.hasNext())
                        {
                        
                                %>
				<td><%=viewitrLitsConfig.next()%></td>
 
				<%
                                        
                        }
                        count++;
                        %>
				<td><input type="button" name="edit" value="Edit" style="background-color:#49743D;font-weight:bold;color:#ffffff;" onclick="editRecord(<%=id%>);" ></td>
				<td><input type="button" name="delete" style="background-color:#ff0000;font-weight:bold;;color:#ffffff;" value="Delete" onclick="deleteRecord(<%=id%>);"></td>
			</tr>
			<%
                }
        }
        if(count==0)
        {
                %>
		<tr><td colspan="9" align="center">&nbsp;</td></tr>
            <tr><td colspan="9" align="center">Aucun enregistrement disponible</td></tr>
		<%
        }
        %>
    <tr><td colspan=9 align="center" height="2px"></td></tr>
  </table>	
 </BODY>
</HTML>

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
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
47
48
49
50
51
52
53
54
55
56
57
<?xml version="1.0" encoding="ISO-8859-1"?>
 
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
 
  <display-name>Test Config</display-name>
  <description>Test Config</description>
 
 <servlet>
	 <servlet-name>servletrecord</servlet-name>
	 <servlet-class>servletRecord</servlet-class>
 </servlet>
 <servlet-mapping>
	 <servlet-name>servletrecord</servlet-name>
	 <url-pattern>/servletRecord</url-pattern>
 </servlet-mapping>
 
 
 <servlet>
	<servlet-name>addUf</servlet-name>
	<servlet-class>addUf</servlet-class>
 </servlet>
 <servlet-mapping>
	<servlet-name>addUf</servlet-name>
	<url-pattern>/addUf</url-pattern>
 </servlet-mapping>
 
 <servlet>
  <servlet-name>editservlet</servlet-name>
  <servlet-class>userServlet</servlet-class>
 </servlet>
 <servlet-mapping>
	<servlet-name>editservlet</servlet-name>
	<url-pattern>/editServlet/*</url-pattern>
 </servlet-mapping>
 
 <servlet>
	<servlet-name>edituser</servlet-name>
	<servlet-class>editUser</servlet-class>
 </servlet>
 <servlet-mapping>
	<servlet-name>edituser</servlet-name>
	<url-pattern>/editUser</url-pattern>
 </servlet-mapping>
 
<servlet>
	<servlet-name>deleteuser</servlet-name>
	<servlet-class>deleteUser</servlet-class>
</servlet>
 <servlet-mapping>
	<servlet-name>deleteuser</servlet-name>
	<url-pattern>/deleteUser/*</url-pattern>
 </servlet-mapping>
 
</web-app>

Qu'est ce que je rate ?

Niveau jar j'ai:
ojdbc6.jar
servlet-api.jar
sqljdbc.jar

Merci pour votre aide !