我用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代码 文件夹的目录结构是:
我快崩溃来了,都不知道哪出错了,大家帮帮我吧!
这个程序就只有两个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代码 文件夹的目录结构是:
解决方案 »
- 为何不能访问继承了json-default的action
- hibernate javabean 的构造方法
- 请教Win 7系统下安装java_ee_sdk-5_08-jdk-6u18-windows怎么定义环境变量啊?
- s2sh
- 我们正学JDBC呢,可是我觉得书讲得太深太少了,请问谁能给我推荐几个介绍这方面的电子书
- hibernate中怎样配置联合主键
- 用SSH开发的两个卖场网站
- java小菜鸟求助各位大神编辑个OOP Simple GUI Builder
- 关于j2ee server中的web server
- 如何写一个方法(利用反射泛型都可以)用来排序
- 求助!!求助啊!!关于Hibernate的问题!那位大侠把我看哈啊!!!?
- asp 调用java的webservices
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.javapackage 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.javapackage sunyang.service;import java.util.List;import sunyang.domain.Book;public interface BookService {
// 插入信息操作
public void add(Book book); // 查询所有信息操作
public List find();
}BookServiceHibernateImpl.javapackage 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;
}}
<!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>
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.
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);
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;
}