空指针问题 NullPointerException

hexudonghot 2010-12-30 05:27:50
我采用的是s2sh框架
struts.xml文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="users" namespace="/" extends="struts-default">
<!--<action name="reg" class="reg">
<result name="success">/regSuc.jsp</result>
<result name="error">/regFail.jsp</result>
</action>
<action name="queryUser" class="queryUser">
<result name="userlist">/userlist.jsp</result>
</action>

<action name="publishNews" class="publishNews">
<result name="newslist">/newslist.jsp</result>
</action> -->
<action name="reg" class="action.UserAction">
<result name="success">/regSuc.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">
<!-- 配置Spring --><!--
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:application-*.xml
</param-value>
</context-param>
-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/spring/*-Context.xml</param-value>
</context-param>
<!-- 配置Spring的监听 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- 配置Hibernate -->
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>




<!-- 配置Struts2 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- 配置Spring的过滤器,解决乱码问题 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>ConnectorServlet</servlet-name>
<servlet-class>
net.fckeditor.connector.ConnectorServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 登录检查过滤器_Satrt
<filter>
<filter-name>loginFilter</filter-name>
<filter-class> com.datainfo.util.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/reg.jsp</url-pattern>
</filter-mapping>
-->
<!-- 配置fckedit -->
<servlet-mapping>
<servlet-name>ConnectorServlet</servlet-name>
<url-pattern>
/fckeditor/editor/filemanager/connectors/*
</url-pattern>
</servlet-mapping>
</web-app>
下面连个是spring的配置文件
application.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://192.168.0.50:3306/zhhb</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>rstd</value>
</property>
</bean>

<!-- 创建sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource">
<ref bean="dataSource"/>
</property>
<!-- 注入映射文件 -->
<property name="mappingLocations">
<list>
<value>/WEB-INF/classes/vo/*.hbm.xml</value>
</list>
</property>
<!-- 注入其它一些配置属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
<prop key="hibernate.show_sql">
true
</prop>
</props>
</property>
</bean>

<!-- ************************************************************************** -->

<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes">
<props>
<!-- PROPAGATION_REQUIRED:事务传播行为
如果事务存在,则将语句加入事务,否则新建事务
-->
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>

</beans>
下面是admin_context.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id="userDao" class="dao.impl.UserDaoImpl" autowire="byName"></bean>
</beans>
reg.jsp内容如下
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
out.println(path);
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>SSH2用户注册</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="fckeditor/fckeditor.js"> </script>
</head>

<body>
<h2>用户注册</h2> <a href="<%=path %>/SlideTrans.html">图片动态显示效果 
</a>       <a href='newspublish!newsView.action' target="_blank"><strong>后台管理</strong></a>
<h1><a href=""><br></a></h1>
<form action="reg.action" method="post">
用户名:<input type="text" name="user.username " /><br />
密  码:<input type="password" name="user.password "><br />
性别:<input type="text" name="user.sex " /><br />
电话:<input type="text" name="user.mobile " /><br />
信箱:<input type="text" name="user.email " /><br />
<input type="submit" value="注册" /><input type="reset" value="重置" />
</form>
</body>
</html>
当我点击注册后提示
Action中的那条语句是能够打印出前台提交的内容的
[color=#FF0000]严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at action.UserAction.execute(UserAction.java:24)
[/color]

...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
G_beginner 2011-01-04
  • 打赏
  • 举报
回复
private UserDao userDaoImpl;
改为:
private UserDao userDao;
你的sping配置文件时这么写的,
<bean id="userDao" class="dao.impl.UserDaoImpl" autowire="byName"></bean>
没映射上,所以会出现空指针异常
reggiekiller 2010-12-31
  • 打赏
  • 举报
回复
licip 2010-12-31
  • 打赏
  • 举报
回复
你的struts.xml的配置文件好像没有吧。
你的Dao要注入进去,有可能是你的set方法没有做吧。
sustbeckham 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 haixiang710 的回复:]

UserActin : flag = userDaoImpl.insertUser(user);
估计是这行的userDaoImpl为空吧,,
看LZ的applicationContext是对service进行事物管理,而不是对dao
而且也看不出哪里有把userDao注入到action
[/Quote]



+1

flag = userDaoImpl.insertUser(user); 在spring配置文件里没有发现你什么时候给userDaoImpl注入东西了。你直接用,当然就nullpointer了。
haixiang710 2010-12-31
  • 打赏
  • 举报
回复
UserActin : flag = userDaoImpl.insertUser(user);
估计是这行的userDaoImpl为空吧,,
看LZ的applicationContext是对service进行事物管理,而不是对dao
而且也看不出哪里有把userDao注入到action
Jlins 2010-12-30
  • 打赏
  • 举报
回复
UserAction 代码看不到...
hexudonghot 2010-12-30
  • 打赏
  • 举报
回复
漏泄的类
public class UserAction extends ActionSupport {
private static final long serialVersionUID = -8534550171421612227L;
private User user = new User();
private UserDao userDaoImpl;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public static long getSerialVersionUID() {
return serialVersionUID;
}
public String execute() throws Exception {
boolean flag = false;
System.out.println("DDD"+getUser().getUsername());
flag = userDaoImpl.insertUser(user);
if(flag){
return SUCCESS;
}else{
return ERROR;
}
}
public UserDao getUserDaoImpl() {
return userDaoImpl;
}
public void setUserDaoImpl(UserDao userDaoImpl) {
this.userDaoImpl = userDaoImpl;
}
}



public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

public boolean insertUser(User user) {
boolean b = false;
this.getHibernateTemplate().save(user);
b = true;
return b;
}
public List getUserByUserName(String userName)
{
DetachedCriteria criteria=DetachedCriteria.forClass(User.class) ;
criteria.add(Restrictions.eq("username", userName));
List list=this.get(criteria);
if(list.size()>0)
return list;
else
return null;
}
public List get(DetachedCriteria criteria) {
return getHibernateTemplate().findByCriteria(criteria);
}

}


81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧