首先是web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5"> <display-name>Doctor</display-name> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<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>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping> <taglib>
<taglib-uri>struts-bean</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>struts-logic</taglib-uri>
<taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
</taglib> <resource-ref>
<description>
      Doctor DataSource
    </description>
<res-ref-name>jdbc/doctor</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>然后是:com.doctor.sqlmap.sql-map-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>  <properties resource="com.doctor.database/database.properties"/>  <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
      <property value="${driver}" name="JDBC.Driver"/>
      <property value="${url}" name="JDBC.ConnectionURL"/>
      <property value="${username}" name="JDBC.Username"/>
      <property value="${password}" name="JDBC.Password"/>
    </dataSource>
  </transactionManager>  <sqlMap resource="com.doctor.sqlmap/HospitalMap.xml"/></sqlMapConfig>然后是:com.doctor.sqlmap.HospitalMap.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="HospitalBean">
<typeAlias alias="hospitalBean" type="com.doctor.bean.HospitalBean" />
<select id="getHospitalList" resultClass="hospitalBean">
SELECT
H_Id,
H_Name
FROM Hospital
   </select>
</sqlMap>还有:com.doctor.database/database.properties
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/doctor
username=root
password=123456
最后是com.doctor.bean/HospitalBean.javapackage com.doctor.bean;public class HospitalBean { private Integer H_Id;
private String H_Name;
public Integer getH_Id() {
return H_Id;
} public void setH_Id(Integer id) {
H_Id = id;
} public String getH_Name() {
return H_Name;
} public void setH_Name(String name) {
H_Name = name;
}}我最后是在Service里调用的:com.doctor.service/HospitalService.java
package com.doctor.service;import java.util.List;
import com.ibatis.dao.client.DaoManager;
import com.ibatis.dao.client.template.SqlMapDaoTemplate;public class HospitalService extends SqlMapDaoTemplate { public HospitalService(DaoManager daoManager) {
super(daoManager);
} // 方法:查询医院信息列表
public List showHosptialList() {
return queryForList("getHospitalList", null);
}
}
好多代码,麻烦高手仔细检查下我到底哪里配错了
错误提示是这样的:
HTTP Status 500 - type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException: java.lang.NullPointerException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:545)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:486)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
com.ibatis.dao.client.template.SqlMapDaoTemplate.getSqlMapExecutor(SqlMapDaoTemplate.java:60)
com.ibatis.dao.client.template.SqlMapDaoTemplate.queryForList(SqlMapDaoTemplate.java:203)
com.doctor.service.HospitalService.showHosptialList(HospitalService.java:15)
com.doctor.action.HospitalAction.execute(HospitalAction.java:21)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

解决方案 »

  1.   

    你照JpetStore扒下来的吧...
    重新再看看 你少了不少配置文件
    Service里也没初始化
      

  2.   

    这是报空指针错,把com.doctor.sqlmap.sql-map-config.xml这个文件改成下面试一试(都去掉JDBC的前缀,否则无法和database.properties文件的字段对应起来)
    <dataSource type="SIMPLE">
          <property value="${driver}" name="Driver"/>
          <property value="${url}" name="ConnectionURL"/>
          <property value="${username}" name="Username"/>
          <property value="${password}" name="Password"/>
        </dataSource>
      

  3.   

    我以前遇到过这个问题,也是这个原因造成的。
    com.doctor.database/database.properties文件中的字段没有加JDBC的前缀,上面那个文件也就不要加。
    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/doctor
    username=root
    password=123456
      

  4.   

    扫了一眼
    sql-map-config.xml文件中
    <sqlMap resource="com.doctor.sqlmap/HospitalMap.xml"/>
    错了,应是
    <sqlMap resource="com/doctor/sqlmap/HospitalMap.xml"/>