我用structs2和hibernate3写的小程序总是出错!

nishizhua33 2009-06-09 01:59:56
我用structs2和hibernate3写的小程序总是出错!

我快崩溃来了,都不知道哪出错了,大家帮帮我吧!


这个程序就只有两个jsp页面,一个是添加书名到数据库中,一个是查看书名。

我把源程序放上来了,大家一定要帮我看看啊!

我急等!

index.jsp


<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<center>
输入要添加的书名:
<s:form action="add.action">
<s:textfield name="bookname" />
<s:submit value="确定" />
</s:form>
</center>
</body>
</html>


success.jsp

<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<center>
已插入书名列表:
<br>
<table border="1">
<s:iterator value="list">
<tr>
<td>
<s:property value="bookname" />
</td>
</tr>
</s:iterator>
</table>
</center>
</body>
</html>



然后是 java代码 文件夹的目录结构是:

...全文
41 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
女女321 2009-06-12
  • 打赏
  • 举报
回复
public String addBook() {
Book book = new Book();
book.setBookname(bookname); System.out.println(bookname);
service.add(book);

return SUCCESS;
}
应该是:
public String addBook() {
Book book = new Book();
book.setBookname(this.getBookname());
System.out.println(bookname);
service.add(book);

return SUCCESS;
}
nishizhua33 2009-06-10
  • 打赏
  • 举报
回复
问题还是没解决 谁来救救我啊!
jklot66 2009-06-10
  • 打赏
  • 举报
回复
session这个地方为空,这个congfig不能通过new得来的 要通过加载文件hibernate文件后获得呀
baishengjie 2009-06-10
  • 打赏
  • 举报
回复
学习!
  • 打赏
  • 举报
回复
楼主,建议你看一下BookServiceHibernateImpl.java:27 ,调试看一下到底是什么抛空指针异常
nishizhua33 2009-06-09
  • 打赏
  • 举报
回复
这个hibernate配置文件位置怎么写啊?
zidasine 2009-06-09
  • 打赏
  • 举报
回复
try {
Configuration config = new Configuration();
config.addClass(Book.class);
sessionFactory = config.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
这里的问题 Configuration config = new Configuration();
config.configure("hibernate配置文件位置");
config.addClass(Book.class);
nishizhua33 2009-06-09
  • 打赏
  • 举报
回复
当提交第一个页面后 出现的错误信息

java.lang.NullPointerException
sunyang.service.BookServiceHibernateImpl.add(BookServiceHibernateImpl.java:27)
sunyang.action.BookAction.addBook(BookAction.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.

nishizhua33 2009-06-09
  • 打赏
  • 举报
回复
这个是hibernate.cfg.xml


<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory >
<property name="show_sql">true</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/book</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping resource="sunyang/domain/Book.hbm.xml"/>

</session-factory>
</hibernate-configuration>

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>
<constant name="struts.i18n.encoding" value="GBK" />
<package name="default" extends="struts-default">
<action name="add" class="sunyang.action.BookAction" method="addBook">
<result type="chain">list</result>
</action>
<action name="list" class="sunyang.action.BookAction" method="ListBook">
<result>/success.jsp</result>
</action>
</package>
</struts>


nishizhua33 2009-06-09
  • 打赏
  • 举报
回复
BookAction.java


package sunyang.action;

import java.util.List;

import sunyang.domain.Book;
import sunyang.service.BookService;
import sunyang.service.BookServiceHibernateImpl;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class BookAction extends ActionSupport {
private BookService service;
private String bookname;
private List list;

// 省略对应bookname和list的getter和setter

public BookAction() {
service = new BookServiceHibernateImpl();
}

public String addBook() {
Book book = new Book();
book.setBookname(bookname);
System.out.println(bookname);
service.add(book);

return SUCCESS;
}

public String ListBook() {
List l = service.find();
setList(l);
return SUCCESS;
}

public String getBookname() {
return bookname;
}

public void setBookname(String bookname) {
this.bookname = bookname;
}

public List getList() {
return list;
}

public void setList(List list) {
this.list = list;
}
}

Book.java

package sunyang.domain;

public class Book {

private Integer id;
private String bookname;

public Book() {
}

public Book(Integer id) {
this.id = id;
}

public Book(Integer id, String bookname) {
this.id = id;
this.bookname = bookname;
}

public Integer getId() {
return this.id;
}

public void setId(Integer id) {
this.id = id;
}

public String getBookname() {
return this.bookname;
}

public void setBookname(String bookname) {
this.bookname = bookname;
}

}

Book.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="sunyang.domain.Book" table="book" catalog="book">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="bookname" type="java.lang.String">
<column name="bookname" length="45" />
</property>
</class>
</hibernate-mapping>

BookService.java

package sunyang.service;

import java.util.List;

import sunyang.domain.Book;

public interface BookService {
// 插入信息操作
public void add(Book book);

// 查询所有信息操作
public List find();
}

BookServiceHibernateImpl.java

package sunyang.service;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import sunyang.domain.Book;

public class BookServiceHibernateImpl implements BookService {
//实例化Book对象的session工厂,以便调用Hibernate接口
public static SessionFactory sessionFactory;
static {
try {
Configuration config = new Configuration();
config.addClass(Book.class);
sessionFactory = config.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}

public void add(Book book) {
Session session = sessionFactory.openSession();
//声明并管理事务
Transaction tx = null;
try {
tx = session.beginTransaction();
session.saveOrUpdate(book);
tx.commit();
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}

}

public List find() {
Session session = sessionFactory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
Query query = session.createQuery("from Book");
List list = query.list();
tx.commit();
return list;
} catch (Exception e) {
if (tx != null) {
tx.rollback();
}
} finally {
session.close();
}
return null;
}

}



linuxlsx 2009-06-09
  • 打赏
  • 举报
回复
你出了什么错也不说一下 我们怎么查啊
zidasine 2009-06-09
  • 打赏
  • 举报
回复
错误信息呢 贴出来

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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