type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception javax.servlet.ServletException
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:54)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.老是出现这样的毛病,具体代码由于太多所以贴不了了、、、、
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:54)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs.老是出现这样的毛病,具体代码由于太多所以贴不了了、、、、
com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:54) 空指针异常么检查54行代码吧看看是不是调用了未实例化的对象啊什么的
这是CheckAction里面的代码:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.yourcompany.struts.action;import java.util.Iterator;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.hibernate.Transaction;
import com.yourcompany.struts.form.CheckForm;import dao.Customer;
import dao.CustomerDAO;/**
* MyEclipse Struts
* Creation date: 02-16-2009
*
* XDoclet definition:
* @struts.action scope="request" validate="true"
*/
public class CheckAction extends Action
{
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
String name=(String)((CheckForm)form).getName();//获取表单信息
String pass=(String)((CheckForm)form).getPassword();
Customer c = new Customer(); //持久化类
c.setName(name);
c.setPassword(pass);
CustomerDAO dao = new CustomerDAO();
Transaction tx = dao.getSession().beginTransaction();
dao.save(c);
tx.commit();
request.setAttribute("personbean",name);
request.removeAttribute(mapping.getAttribute());
return new ActionForward(mapping.getInput());
}
}
由于余下代码过长,我就不一一列举。
再列举几个XML映射文件:(检查过好多次了,没看出什么问题来)
Customer.hbm.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="Customer" table="customer" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="increment"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="45" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" length="19" />
</property>
<property name="registeredTime" type="java.util.Date">
<column name="REGISTERED_TIME" length="19" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="45" not-null="true" />
</property>
</class>
</hibernate-mapping>
hibernate.cfg.xml:<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration><session-factory>
<property name="connection.username">root</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/test
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">test</property>
<property name="connection.password">tea110</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<mapping resource="Customer.hbm.xml" /></session-factory></hibernate-configuration> 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 />
<form-beans >
<form-bean name="checkForm" type="com.yourcompany.struts.form.CheckForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="check"
input="/index.jsp"
name="checkForm"
path="/check"
scope="request"
type="com.yourcompany.struts.action.CheckAction">
<forward name="sucess" path="/sucess.jsp" />
</action>
</action-mappings>
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>
dao.save(c);
tx.commit(); Action里尽量不要写数据访问层的代码 上面的代码应该放在DAO里
com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:54)Action中的某个对象为NULL没有被实例化造成的~
int ret = CommonErr.RET_OK;
if (obj == null)
return CommonErr.RET_COMMON_ERR;
if (CommonErr.RET_OK == ret) {
org.hibernate.Session ses;
org.hibernate.Transaction tx;
try {
ses = HibernateSessionFactory.currentSession();
tx = ses.beginTransaction(); ses.save(obj); ses.flush();
tx.commit();
} catch (Exception e) {
e.printStackTrace();
ret = CommonErr.RET_DATABASE_ERR;
} finally {
HibernateSessionFactory.closeSession();
}
}
return ret;
}
String pass=(String)((CheckForm)form).getPassword();
你怎么这样写
String pass=(String)((CheckForm)form).getPassword(); 如果你在CheckForm 里封装了 name,password等字段 没必要强转了
((CheckForm)form).getName(); 本来取得就是你表单里的信息 注意CheckForm里的字段名要和你表单里的name标签里的名字一致。 检查一下看看是否一致。LZ没有写数据访问层吧
Transaction tx = dao.getSession().beginTransaction();
dao.save(c);
tx.commit();
这些代码应该放在数据访问层里Action 里就调用业务层(数据访问层) 然后控制页面跳转
LZ项目不大 象你这么写也没什么问题