P
paidopoieo
Gast
Hi,
Ich kann leider keine verbindung zu meiner datenbank herstellen......
mein struts-conf.xml file sieht folgendermassen aus:
zuerst sollte auf die welcome.jsp seite verbunden werden, von dieser dann auf folgende TestForm.jsp:
dort sollte dann der TestActionHandler aufgerufen werden:
dort erkennt er dann folgende Zeile nichtf:
meine Frage: stimmt die Konfiguration in der struts-config.xml, brauch ich das global forward eigentlich oder kann ich nicht gleich die TestForm.jsp aufrufen, wenn ja wie......
wieso erkennt er mir die Action.DATA_SOURCE_KEY nicht, hab das im internet gefunden, das man auf diese weise die verbindung zur mysql datenbank aufbaut....
vielen dank im voraus...
lg
Ich kann leider keine verbindung zu meiner datenbank herstellen......
mein struts-conf.xml file sieht folgendermassen aus:
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<data-sources>
<data-source type="org.apache.commons.dbcp.BasicDataSource">
<set-property
property="description"
value="My MySQL Database Connection" />
<set-property
property="driverClassName"
value="com.mysql.jdbc.Driver" />
<set-property
property="url"
value="jdbc:mysql://ppc7.bio.ucalgary.ca/antimicro_peptides" />
<set-property
property="username"
value="root" />
<set-property
property="password"
value="xxxxxxxxxx" />
<set-property
property="maxActive"
value="10" />
<set-property
property="maxWait"
value="5000" />
<set-property
property="defaultAutoCommit"
value="false" />
<set-property
property="defaultReadOnly"
value="false" />
</data-source>
</data-sources>
<form-beans>
<form-bean name="TestFormBean"
type="meinpackage.TestFormBean"/>
</form-beans>
<global-forwards>
<forward name="welcome" path="/Welcome.do" />
</global-forwards>
<action-mappings>
<action
path="/Welcome"
forward="/pages/welcome.jsp" />
<action path="/TestAction"
type="meinpackage.TestActionHandler"
name="TestFormBean"
validate="false"
scope="request">
<forward name="success" path="/pages/TestResult.jsp"/>
<forward name="failure" path="/pages/Error.jsp"/>
</action>
<action
path="/result_display"
forward="/pages/welcome.jsp" />
</action-mappings>
</struts-config>
zuerst sollte auf die welcome.jsp seite verbunden werden, von dieser dann auf folgende TestForm.jsp:
Code:
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html>
<head>
<title>test form</title>
</head>
<body bgcolor="white">
[B]This is a template STRUTS APP[/b]
Enter your name:
<html:form action="/TestAction">
<html:text property="ipString" size="50"/>
<html:submit property="submit" value="Submit"/>
</html:form>
</body>
</html:html>
dort sollte dann der TestActionHandler aufgerufen werden:
Code:
package meinpackage;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Locale;
import java.util.Vector;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.sql.*;
import java.util.ArrayList;
import javax.sql.*;
import javax.servlet.ServletContext;
import meinpackage.*;
public final class TestActionHandler extends Action {
// --------------------------------------------------------- Public Methods
/**
* Template Action class
*/
public ActionForward perform(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
TestFormBean tform = (meinpackage.TestFormBean) form;
// We will get the emps from the DB based on the short abbreviation entered
/*** Old Code
* String tmpStr = "Welcome " + tform.getIpString() + " !";
* tform.setIpString(tmpStr);
*/
String tmpStr = tform.getIpString();
ArrayList empList = new ArrayList();
HttpSession session = request.getSession();
String target = null;
//getEmps() is defined below ...
empList = getEmps(tmpStr) ;
if(empList != null){
target = "success" ;
/* Addthe arrayList to the session, This is used in Jsp page testResult.jsp */
session.setAttribute("proteinTable" , empList);
}
else{
System.err.println("DEBUG - Got null List. Problem accessing database");
target = "failure" ;
}
return (mapping.findForward(target));
}
private ArrayList getEmps(String searchStr){
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
ArrayList empList = new ArrayList();
StringBuffer resultString ;
ProteinBean emp;
try{
ServletContext context = servlet.getServletContext();
DataSource dataSource = (DataSource) context.getAttribute(Action.DATA_SOURCE_KEY);
con= dataSource.getConnection();
stmt = con.createStatement();
/** Access records from table emptable */
StringBuffer sqlString = new StringBuffer("select accession_id, name_of_protein, length_of_proteinseq from protein'");
rs = stmt.executeQuery(sqlString.toString());
while (rs.next()) {
emp = new ProteinBean();
emp.setAccession_ID(rs.getString("accession_id"));
emp.setName_of_protein (rs.getString("name_of_protein"));
emp.setLength_of_Proteinseq(rs.getInt("length_of_proteinseq"));
empList.add(emp);
}
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 empList;
}
}
dort erkennt er dann folgende Zeile nichtf:
Code:
DataSource dataSource = (DataSource) context.getAttribute(Action.DATA_SOURCE_KEY);
meine Frage: stimmt die Konfiguration in der struts-config.xml, brauch ich das global forward eigentlich oder kann ich nicht gleich die TestForm.jsp aufrufen, wenn ja wie......
wieso erkennt er mir die Action.DATA_SOURCE_KEY nicht, hab das im internet gefunden, das man auf diese weise die verbindung zur mysql datenbank aufbaut....
vielen dank im voraus...
lg