hibernate和struts初接触的一些问题。
我"project"是UTF-8中文编码,用的IDE是eclipse3.3,页面全保持UTF-8,但Mysql 插入的中文值全变成了乱码,mysql也是UTF-8字符集,所以怀疑是hibernate连接时需要加个参数。
- 想请问下hofman等各位大大怎么设置这个连接,或者我的问题不是出在这儿的,那么又会是什么问题呢?
另外为什么我看到别人在调用 session.save或update方法时只需要flush一下就能保存,而我一定要再追加上Transaction的commit方法才行。 直接flush也不报错,但数据库里就是没有内容。
- flush和commit的关系是怎么回事?
可能是我没有查阅资料或者没有系统的学习原因吧,有没有需要系统的学习一下呢? 我现在还是入门,学会了用。 如果你没理解看下面的代码:
CategoryForm cf = (CategoryForm) form;// TODO Auto-generated method
// stub
String name = cf.getCatName();
...
Session session = null;
try {
session = HibernateSessionFactory.getSession();
WpTerms wpt = new WpTerms(); //wp_terms表的对象。
wpt.setName(name);
...
session.save(wpt);
session.flush();
System.out.println("新目录创建成功: " + wpt.getTermId());
try {
WpTermTaxonomy wptt = new WpTermTaxonomy(); //wp_term_taxonomy表对象
wptt.setTermId(wpt.getTermId());
...
session.save(wptt);
session.flush();
request
.setAttribute("resultMessage", "目录建立成功:"
+ wpt.getName());
return mapping.findForward("createSuccess");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("errorMessage", "保存目录信息时出错,错误位置:02。");
} finally {
//就是这里,不用使用事物就保存不了,开始以为处理两个或更多表才就要用到,但一个表时也需要commit!
Transaction t = session.beginTransaction();
t.commit();
session.close();
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("errorMessage", "保存目录信息时出错,错误位置:01。");
}
return mapping.findForward("createFailed");
// stub
String name = cf.getCatName();
...
Session session = null;
try {
session = HibernateSessionFactory.getSession();
WpTerms wpt = new WpTerms(); //wp_terms表的对象。
wpt.setName(name);
...
session.save(wpt);
session.flush();
System.out.println("新目录创建成功: " + wpt.getTermId());
try {
WpTermTaxonomy wptt = new WpTermTaxonomy(); //wp_term_taxonomy表对象
wptt.setTermId(wpt.getTermId());
...
session.save(wptt);
session.flush();
request
.setAttribute("resultMessage", "目录建立成功:"
+ wpt.getName());
return mapping.findForward("createSuccess");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("errorMessage", "保存目录信息时出错,错误位置:02。");
} finally {
//就是这里,不用使用事物就保存不了,开始以为处理两个或更多表才就要用到,但一个表时也需要commit!
Transaction t = session.beginTransaction();
t.commit();
session.close();
}
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("errorMessage", "保存目录信息时出错,错误位置:01。");
}
return mapping.findForward("createFailed");
最后还有个简单的问题:
<html:form action="/category">
<p>目录名: <html:text property="catName" />
<html:errors property="catName" /></p>
...
</html:form>
<p>目录名: <html:text property="catName" />
<html:errors property="catName" /></p>
...
</html:form>
- 我用的是struts1.3,怎么从action里或其它地方给他传值呢?
meiking
2008-05-11 01:49:05
评论:1
阅读:53
引用:0
@2008-05-11 02:04:13 hofman
一、中文问题:jdbc:mysql://localhost:3306/yourdb?useUnicode=true&characterEncoding=UTF-8
二、hibernate,用spring+hibernate,一些常规的小问题就不存在了。
三、扔掉struts1.3,直接用struts 2.不要在已经淘汰的框架上浪费时间。
二、hibernate,用spring+hibernate,一些常规的小问题就不存在了。
三、扔掉struts1.3,直接用struts 2.不要在已经淘汰的框架上浪费时间。
