Bonjour,
je suis nouvelle sur struts, j'ai essayé un exemple banal d'accès à la base de donnée et j'ai eu l'erreur suivante:
"Etat HTTP 404 - Servlet action n'est pas disponible"
mon fichier de départ base.jsp :
<body>
<h1>Hello</h1>
<html:link action="/MaBase" linkName="Voir Liste" >Voir Liste</html:link>
</body>
le fichier struts-config.xml:
<struts-config>
<data-sources>
<data-source type="org.apache.tomcat.dbcp.dbcp.BasicDataSource" key="empTable">
<set-property property="driverClassName" value="com.mysql.jdbc.Driver" />
<set-property property="url" value="jdbc:mysql://localhost:3306/revue" />
<set-property property="username" value="" />
<set-property property="password" value="admin" />
<set-property property="validationQuery" value="SELECT * FROM redacteur" />
</data-source>
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
<message-resources parameter="com/myapp/struts/ApplicationResource"/>
mon fichier pour afficher le résultat resultat.jsp :
<body>
<%
session.getAttribute("allMyCustomers");
%>
<h1>Welcome!</h1>
<bean:write name="client" property="name"/>
<logic:notPresent name="allMyCustomers">
<h2>Data not in Scope</h2>
</logic:notPresent>
<logic:present name="allMyCustomers">
<logic:empty name="allMyCustomers">
<h2>DataSource in scope but no data found</h2>
</logic:empty>
</logic:present>
<logic:present name="allMyCustomers">
<p>Tese are our users</p>
<table border="1">
<thead>
<tr>
<th><bean:message key="Name"/></th>
<th><bean:message key="Prenom"/></th>
</tr>
</thead>
<tbody>
<logic:iterate id="redacteur" name="allMyCustomers">
<tr>
<td><bean:write name="redacteur" property="name"/></td>
<td><bean:write name="redacteur" property="prenom"/></td>
</tr>
</logic:iterate>
</tbody>
</table>
</logic:present>
</body>
l'action servlet:
package com.myapp.struts;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.sql.*;
import java.util.ArrayList;
import javax.sql.*;
import org.apache.struts.Globals;
public class NewStrutsAction extends Action {
private DataSource dataSource;
public ArrayList customerList = new ArrayList();
private final static String SUCCESS = "success";
private HttpSession session;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
session = request.getSession();
/** Ici, la méthode qui fait la connection à la DataSource est appelée: */
customerList = getCustomers() ;
/** Ici, nous mettons le customerList dans le scope, pour pouvoir l'utiliser dans la page
JSP: */
if(customerList != null){
session.setAttribute("allMyCustomers" , customerList);
}
return (mapping.findForward(SUCCESS));
}
private ArrayList getCustomers(){
Connection conn = null;
Statement stmt = null;
PreparedStatement prpStmt = null;
ResultSet rs = null;
StringBuffer resultString ;
try{
/** Ici, 'empTable' est associé à la clef de la DataSource dans struts-config.xml: */
dataSource = (DataSource)servlet.getServletContext().getAttribute("empTable");
conn = dataSource.getConnection();
row r=new row("ali","baba");
session.setAttribute("client",r);
String sqlQuery = "SELECT * FROM redacteur";
prpStmt = conn.prepareStatement(sqlQuery);
rs = prpStmt.executeQuery();
/** Ici, nous avons mis le champs 4 (le nom) et le champs 7 (la ville) dans la
customerList: */
while (rs.next()) {
customerList.add(new row(rs.getString(2), rs.getString(3)));
System.out.println("nom="+rs.getString(2));
}
rs.close();
} catch ( SQLException e ) {
System.err.println("SQL Exception occured while accessing the table" );
e.printStackTrace();
return null;
} catch ( Exception e ) {
e.printStackTrace();
return null;
}
return customerList;
}
}
et la classe row.java:
package com.myapp.struts;
public class row {
/** Creates a new instance of Row */
private String name;
private String prenom;
/** Creates a new instance of Row */
public row(String name, String prenom) {
this.name = name;
this.prenom = prenom;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
}
S'il vous plais si qq peut me sauver !je suis vraiment coinçée
merci
remarque : je travaille sur netBeans5.5.1


