以下是我的代码,希望大家给予指点迷津。在这里谢谢大家了!
1.ShowAttackSolutionAction.do
package com.test.action;import java.util.ArrayList;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import com.test.dao.AttackSolutionDAO;public class ShowAttackSolutionAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
try{
//业务逻辑层利用AttackSolutionDAO对象来实现
AttackSolutionDAO attackSolutionDAO=new AttackSolutionDAO(getDataSoure(request,"mysqlDB"));
//返回全部的记录并从setAttribute传递到页面显示
ArrayList arrayList=(ArrayList)attackSolutionDAO.retrieveAllAttackSolution();
request.setAttribute("allAttackSolution", arrayList);
return mapping.findForward("success");
}catch(Exception ex){
ex.printStackTrace();
return mapping.findForward("error"); }
}public  DataSource getDataSource(HttpServletRequest request, String string) {
DataSource datasource=(DataSource)servlet.getServletContext().getAttribute("mysqlDB");
  return  datasource;
}
}
2.struts-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources>
<data-source key="mysqlDB" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName" value="org.gjt.mm.mysql.Driver" />
<set-property property="url" value="jdbc:mysql://localhost:3306/attack" />
<set-property property="username" value="root" />
<set-property property="password" value="root" />
</data-source>
</data-sources>
<action-mappings>
<action path="/showAttackSolutionAction"
        type="com.test.action.ShowAttackSolutionAction"
        name="attacksolutionactionform" 
        scope="request"
         >
         <forward name="success" path="/showAttackSolution.jsp"></forward>
         <forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
3.web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
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">
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
   <param-name>debug</param-name>
   <param-value>3</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4.AttackSolutionDAO:
package com.test.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;import javax.sql.DataSource;import com.test.entity.AttackSolution;public class AttackSolutionDAO {
//提供一个JDBC的连接变量,该变量将会子构造方法中被调用并赋值
//DataSource是一个接口,是一个抽象类,必须得实现它里面的方法
private DataSource dataSource;
public AttackSolutionDAO() {

}
public AttackSolutionDAO(DataSource ds) {
dataSource=ds;
}
         public Collection retrieveAllAttackSolution(){
   PreparedStatement ps=null;
   ResultSet rs=null;
   ArrayList list=new ArrayList();
   String sql="select attact_event_code,attack_mean,attack_action from fw_attacksolution order by attack_event_code";
   Connection con=null;
   
   try{
//取得JDBC连接
con=dataSource.getConnection();
//判断JDBC连接是否被关闭,如果被关闭,直接抛出IllegalStateException异常
if(con.isClosed()){
throw new IllegalStateException("ERROR.THE connection is closed"); 
}
ps=con.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
AttackSolution attackSolution=new AttackSolution();
attackSolution.setAttack_event_code(rs.getString(1));
attackSolution.setAttack_mean(rs.getString(2));
attackSolution.setAttack_action(rs.getString(3));
list.add(attackSolution);
}

               

}catch(SQLException ex){
ex.printStackTrace();
}finally{
try{
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
if(con!=null){
con.close();
}
}catch(SQLException ex){
ex.printStackTrace();
throw new RuntimeException("Error.Unexcepted");
}
}
return list;

}
它会在我标记的这两行红线处出错,报空指针异常,希望大伙予以解析!