action包
DataControl.java
service包
serviceCL.java
service.impl包
serviceCLimpl.javaDataControl.java代码如下:
package action;
import service.serviceCL;
import com.opensymphony.xwork2.ActionSupport;
public class DataControl extends ActionSupport{
private serviceCL service;
private static final long serialVersionUID = 1L;
public serviceCL getService() {
return service;
} public void setService(serviceCL service) {
this.service = service;
}
public String execute() throws Exception {
service.gettest();
return SUCCESS;
}
}serviceCL.java代码如下:
package service;
public interface serviceCL {
public void gettest();
}serviceCLimpl.java代码如下:
package service.impl;
import service.serviceCL;
public class serviceCLimpl implements serviceCL{
public void gettest(){
System.out.print("测试方法");
}
}
applicationContext.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://127.0.0.1:1433;databaseName=SSHData">
</property>
<property name="username" value="sa"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>bean/Data.hbm.xml</value></list>
</property></bean>
<bean id="service" class="service.impl.serviceCLimpl"></bean>
</beans>错误提示:HTTP Status 500 -
java.lang.NullPointerException
action.DataControl.execute(DataControl.java:24)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
DataControl.java
service包
serviceCL.java
service.impl包
serviceCLimpl.javaDataControl.java代码如下:
package action;
import service.serviceCL;
import com.opensymphony.xwork2.ActionSupport;
public class DataControl extends ActionSupport{
private serviceCL service;
private static final long serialVersionUID = 1L;
public serviceCL getService() {
return service;
} public void setService(serviceCL service) {
this.service = service;
}
public String execute() throws Exception {
service.gettest();
return SUCCESS;
}
}serviceCL.java代码如下:
package service;
public interface serviceCL {
public void gettest();
}serviceCLimpl.java代码如下:
package service.impl;
import service.serviceCL;
public class serviceCLimpl implements serviceCL{
public void gettest(){
System.out.print("测试方法");
}
}
applicationContext.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://127.0.0.1:1433;databaseName=SSHData">
</property>
<property name="username" value="sa"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>bean/Data.hbm.xml</value></list>
</property></bean>
<bean id="service" class="service.impl.serviceCLimpl"></bean>
</beans>错误提示:HTTP Status 500 -
java.lang.NullPointerException
action.DataControl.execute(DataControl.java:24)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
<property id="service" ref=""/>
</bean>是不是还少这个Action bean 的配置啊,报的错误是空指针……
是不是我配置错了?
配置如下
applicationContext.xml <bean id="service" class="service.impl.serviceCLimpl">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="DataControl" class="action.DataControl" scope="prototype">
<property name="service">
<ref bean="service"/>
</property>
</bean>serviceCLimpl.javapackage service.impl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import service.serviceCL;
public class serviceCLimpl extends HibernateDaoSupport implements serviceCL{
省略....
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="book" extends="struts-default">
<action name="index" class="action.DataControl">
<result >/index.jsp</result>
</action>
</package>
</struts>
web.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
如果在DataControl.java里
直接这样写是正常的
public String execute() throws Exception {
System.out.print("测试方法");
return SUCCESS;
}
class属性配置改成spring bean的名字DataControl试试