[color=#FF0000]程序本来是单独的struts1.2,在struts.config.xml里配置数据源操作数据库的,现在添加了hibernate3作为持久层来操作数据库。hibernate的配置文件已经配置好了。<session-factory> 和C3P0连接池也弄好了。数据库表的xml文件也创建好了,映射文件也注册了。 相应的DAO接口,实现类,都写了。
但是ActionForward不会改了~~~具体代码该怎么写注意是struts1.2的,给几个例子吧。 我把我原来的代码发一下,你们看一下怎么改,哪里需要改。原ActionForward类:
public class AllNewsAction extends DispatchAction { public ActionForward addnews(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewsForm AllNewsActionForm = (NewsForm) form;
try {
Service actionNews = new Service(AllNewsActionForm);
if (((NewsForm) form).getNews_theme().trim().equals("")
|| ( (NewsForm) form).getNews_author().trim().equals("")
|| ((NewsForm) form).getNews_date().trim().equals(""))
throw new Exception("主题,作者,日期,三者不允许为空!");
else {
actionNews.save((NewsForm)form);
request.setAttribute("info", "保存成功!");
}
} catch (Exception e) {
request.setAttribute("info", e.getMessage());
}
return mapping.findForward("save");
}
public ActionForward showall(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewsForm AllNewsActionForm = (NewsForm) form;
try {
Service actionNews = new Service(AllNewsActionForm);
List<String[]> result = actionNews.search((NewsForm)form);
if (result.size() > 0) {
request.setAttribute("result", result);
request.setAttribute("info_all", "总记录数:"
+ String.valueOf(result.size()));
} else
request.setAttribute("info_all", "没有符合要求的记录!"); } catch (Exception e) {
request.setAttribute("info_all", e.getMessage());
}
return mapping.findForward("searchAll");
}原Service类:
public class Service {
public NewsForm form;
public Service(NewsForm form) throws Exception {
super();
this.form=form;
}
public List<String[]> search(NewsForm form) throws Exception
{
try{
List<String[]> result = new LinkedList<String[]>();
String sql = "select * from s_news";
SQLBean Bean=new SQLBean();
Bean.searchall(sql,result,form);
Bean.close();
return result;
}
catch (Exception e)
{
throw new Exception(e.getMessage());
}
public void save(NewsForm form) throws Exception {
//封装到JavaBean对象中
try{
String news_theme=form.getNews_theme();
String news_author=form.getNews_author();
String news_date=form.getNews_date();
String news_detail=form.getNews_detail();
String news_url=form.getNews_url();
NewsForm bean=new NewsForm();
bean.setNews_theme(news_theme);
bean.setNews_author(news_author);
bean.setNews_date(news_date);
bean.setNews_detail(news_detail);
bean.setNews_url(news_url);
String sql="insert into s_news(news_theme,news_author,news_date,news_detail,news_url)values(?,?,?,?,?)";
//调用模型层
SQLBean Bean=new SQLBean();
Bean.add(sql,form);
Bean.close();
} catch (Exception e)
{
throw new Exception(e.getMessage());
}
}
}
原底层SQLbean类:public class SQLBean{
public NewsForm form;
public Connection conn;
public PreparedStatement pstat;
public ResultSet rs;
public Statement stat;
public DataSource ds;
public void add(String sql,NewsForm form) throws Exception{
try {
this.conn = ds.getConnection();
pstat=conn.prepareStatement(sql);
pstat.setString(1, form.getNews_theme());
pstat.setString(2, form.getNews_author());
pstat.setString(3, form.getNews_date());
pstat.setString(4, form.getNews_detail());
pstat.setString(5, form.getNews_url());
pstat.executeUpdate();
conn.commit();
} catch (Exception e) {
// TODO 自动生成 catch 块
throw new Exception(e.getMessage());
}
}
public List<String[]> searchall(String sql,List<String[]> result,NewsForm form) throws Exception
{
try{
this.conn = ds.getConnection();
pstat=conn.prepareStatement(sql);
ResultSet rs=pstat.executeQuery();
conn.commit();
while(rs.next())
{
String[] row = new String[6];
row[0] = rs.getString(1);
row[1] = rs.getString(2);
row[2] = rs.getString(3);
row[3] = rs.getString(4);
row[4] = rs.getString(5);
row[5] = rs.getString(6);
result.add(row);
}
return result;
} catch (Exception e) {
// TODO 自动生成 catch 块
throw new Exception(e.getMessage());
}
}
但是ActionForward不会改了~~~具体代码该怎么写注意是struts1.2的,给几个例子吧。 我把我原来的代码发一下,你们看一下怎么改,哪里需要改。原ActionForward类:
public class AllNewsAction extends DispatchAction { public ActionForward addnews(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewsForm AllNewsActionForm = (NewsForm) form;
try {
Service actionNews = new Service(AllNewsActionForm);
if (((NewsForm) form).getNews_theme().trim().equals("")
|| ( (NewsForm) form).getNews_author().trim().equals("")
|| ((NewsForm) form).getNews_date().trim().equals(""))
throw new Exception("主题,作者,日期,三者不允许为空!");
else {
actionNews.save((NewsForm)form);
request.setAttribute("info", "保存成功!");
}
} catch (Exception e) {
request.setAttribute("info", e.getMessage());
}
return mapping.findForward("save");
}
public ActionForward showall(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
NewsForm AllNewsActionForm = (NewsForm) form;
try {
Service actionNews = new Service(AllNewsActionForm);
List<String[]> result = actionNews.search((NewsForm)form);
if (result.size() > 0) {
request.setAttribute("result", result);
request.setAttribute("info_all", "总记录数:"
+ String.valueOf(result.size()));
} else
request.setAttribute("info_all", "没有符合要求的记录!"); } catch (Exception e) {
request.setAttribute("info_all", e.getMessage());
}
return mapping.findForward("searchAll");
}原Service类:
public class Service {
public NewsForm form;
public Service(NewsForm form) throws Exception {
super();
this.form=form;
}
public List<String[]> search(NewsForm form) throws Exception
{
try{
List<String[]> result = new LinkedList<String[]>();
String sql = "select * from s_news";
SQLBean Bean=new SQLBean();
Bean.searchall(sql,result,form);
Bean.close();
return result;
}
catch (Exception e)
{
throw new Exception(e.getMessage());
}
public void save(NewsForm form) throws Exception {
//封装到JavaBean对象中
try{
String news_theme=form.getNews_theme();
String news_author=form.getNews_author();
String news_date=form.getNews_date();
String news_detail=form.getNews_detail();
String news_url=form.getNews_url();
NewsForm bean=new NewsForm();
bean.setNews_theme(news_theme);
bean.setNews_author(news_author);
bean.setNews_date(news_date);
bean.setNews_detail(news_detail);
bean.setNews_url(news_url);
String sql="insert into s_news(news_theme,news_author,news_date,news_detail,news_url)values(?,?,?,?,?)";
//调用模型层
SQLBean Bean=new SQLBean();
Bean.add(sql,form);
Bean.close();
} catch (Exception e)
{
throw new Exception(e.getMessage());
}
}
}
原底层SQLbean类:public class SQLBean{
public NewsForm form;
public Connection conn;
public PreparedStatement pstat;
public ResultSet rs;
public Statement stat;
public DataSource ds;
public void add(String sql,NewsForm form) throws Exception{
try {
this.conn = ds.getConnection();
pstat=conn.prepareStatement(sql);
pstat.setString(1, form.getNews_theme());
pstat.setString(2, form.getNews_author());
pstat.setString(3, form.getNews_date());
pstat.setString(4, form.getNews_detail());
pstat.setString(5, form.getNews_url());
pstat.executeUpdate();
conn.commit();
} catch (Exception e) {
// TODO 自动生成 catch 块
throw new Exception(e.getMessage());
}
}
public List<String[]> searchall(String sql,List<String[]> result,NewsForm form) throws Exception
{
try{
this.conn = ds.getConnection();
pstat=conn.prepareStatement(sql);
ResultSet rs=pstat.executeQuery();
conn.commit();
while(rs.next())
{
String[] row = new String[6];
row[0] = rs.getString(1);
row[1] = rs.getString(2);
row[2] = rs.getString(3);
row[3] = rs.getString(4);
row[4] = rs.getString(5);
row[5] = rs.getString(6);
result.add(row);
}
return result;
} catch (Exception e) {
// TODO 自动生成 catch 块
throw new Exception(e.getMessage());
}
}
解决方案 »
- org.dom4j.DocumentException:谁能解决?
- 请问在实际应用中,jsp是怎么连接数据库,提高效利的?
- 晚上好:你可以帮我调试一个jsp程序吗?谢谢
- STRUTS:在Select标签中嵌套String[][]数组,请问怎么写?
- 紧急求助:需注册大量的域名(.com和.com.cn),寻最低价格
- 差不多等于白送分的ORACLE查询问题!!谢谢了兄弟们,在线等.
- 在 线紧急 求救 !
- !$*~~一个令人狂晕的问题~~~~~
- tomcat4.04的servlet目录如何配置?
- 有什么著名的软件是用JAVA编的?
- jquery ajax的$(document).ready()简写 有点不明白。。
- 关于在有返回值的方法中抛出RuntimeException
package com.dao;
import java.util.*;
import com.xwxt.actionform.NewsForm;
public interface SqlDAO {
public void addNews(NewsForm struts);
public List allNews();
public void delNews(String news_id);
public NewsForm loadNews(String news_id);
public void updateNews(NewsForm struts);
}实现DAO接口:
public class SqlDAOImpl implements SqlDAO { //新增会员
public void addNews(NewsForm struts) {
//创建一个Session对象
Session session = MySessionFactory.currentSession();
//定义一个Transaction对象
Transaction ts = null;
try{
//创建一个Transaction对象
ts = session.beginTransaction();
//调用Session对象的save方法将持久化对象保存到数据库
session.save(struts);
//提交事务
ts.commit();
}catch(Exception ex){
//回滚事务
ts.rollback();
System.out.println("【系统错误】在保存持久化对象时出错,原因是:");
ex.printStackTrace();
}finally{
//关闭Session对象
MySessionFactory.closeSession();
}
}service接口:public interface SqlService {
public void addNews(NewsForm struts);
public List allNews();
public void delNews(String news_id);
public NewsForm loadNews(String news_id);
public void updateNews(NewsForm struts);
}实现service:
public class SqlServiceImpl implements SqlService {
//创建一个数据库访问对象dao
private SqlDAO dao = new SqlDAOImpl(); //新增
public void addNews(NewsForm struts) {
dao.addNews(struts);
} //浏览
public List allNews() {
return dao.allNews();
} //删除
public void delNews(String news_id) {
dao.delNews(news_id);
} //装载
public NewsForm loadNews(String news_id) {
return dao.loadNews(news_id);
} //修改
public void updateNews(NewsForm struts) {
dao.updateNews(struts);
}
}
剩下的factory类和bean类就不发了,都一样。不会整合起来,帮忙改一改。谢谢。
何况struts2和struts1区别很大!
private NewsForm model=new NewsForm();//用于封装会员属性模型
public NewsForm getModel() {
return model;
}
//存放会员列表数据
List<NewsForm> newsList;
//存放action之间的提示信息
String actionMsg ;
public ActionForward addnews(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
NewsForm model = (NewsForm) form;
SqlService service = new SqlServiceImpl();
if (((NewsForm) form).getNews_theme().trim().equals("")
|| ( (NewsForm) form).getNews_author().trim().equals("")
|| ((NewsForm) form).getNews_date().trim().equals(""))
throw new Exception("主题,作者,日期,三者不允许为空!");
else {
service.addNews(model);
request.setAttribute("info", "保存成功!");
}
} catch (Exception e) {
request.setAttribute("info", e.getMessage());
}
return mapping.findForward("save");
}
public ActionForward showall(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
SqlService service = new SqlServiceImpl();
newsList = service.allNews();
if (newsList.size() > 0) {
request.setAttribute("result", newsList);
request.setAttribute("info_all", "总记录数:"
+ String.valueOf(newsList.size()));
} else
request.setAttribute("info_all", "没有符合要求的记录!"); } catch (Exception e) {
request.setAttribute("info_all", e.getMessage());
}
return mapping.findForward("searchAll");
}
具体方法:
public List allNews() {
List result = new ArrayList();
//创建一个Session对象
Session session = MySessionFactory.currentSession();
//定义一个Transaction对象
Transaction ts = null;
try{
String HQL = "select * from NewsForm ";
//创建一个Query查询对象
Query query = session.createQuery(HQL);
//创建一个Transaction对象
ts = session.beginTransaction();
//执行查询,取得查询结果
result = query.list();
//提交事务
ts.commit();
if (!Hibernate.isInitialized(result))Hibernate.initialize(result);
}catch(Exception ex){
//回滚事务
ts.rollback();
System.out.println("【系统错误】在查询出所有持久化对象时出错,原因是:");
ex.printStackTrace();
}
给你一个N年前用的strust1的ssh部分代码。。你看懂了 就可以改你自己的了service:
public interface MemberService {
//会员注册
public void save(Member transientInstance);
}
service impl:
public class MemberServiceImpl implements MemberService{
private MemberDAO memberDAO; public MemberDAO getMemberDAO() {
return memberDAO;
} public void setMemberDAO(MemberDAO memberDAO) {
this.memberDAO = memberDAO;
}
//会员注册
public void save(Member member){
memberDAO.save(member);
}
}dao:
public interface MemberDAO {
//会员注册
public void save(Member transientInstance);
}
dao impl:
public class MemberDAOImpl extends HibernateDaoSupport implements MemberDAO{
private static final Log log = LogFactory.getLog(MemberDAOImpl.class);
protected void initDao() {
// do nothing
}
//会员注册
public void save(Member transientInstance) {
log.debug("saving Member instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
}action:
/**
* MyEclipse Struts
* Creation date: 06-07-2008
*
* XDoclet definition:
* @struts.action path="/member" name="memberForm" parameter="method" scope="request" validate="true"
*/
public class MemberAction extends DispatchAction {
/*
* Generated Methods
*/
private MemberService memberService; public MemberService getMemberService() {
return memberService;
} public void setMemberService(MemberService memberService) {
this.memberService = memberService;
} //会员注册
public ActionForward memberregister(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException { DynaActionForm memberForm = (DynaActionForm) form;
try{
Member member=new Member();
member.setUname(memberForm.getString("uname"));
member.setPassword(memberForm.getString("password"));
member.setEmail(memberForm.getString("email"));
member.setMemberregdate(new Date());
member.setConsumeramount(Float.parseFloat("0"));
member.setAccountbalance(Float.parseFloat("0"));
member.setMembergrade("普通");
memberService.save(member);
}catch(Exception e){
e.printStackTrace();
return mapping.findForward("RegisterFailure");
}
return mapping.findForward("RegisterSuccess");
}struts1-config.xml配置:<struts-config>
<data-sources />
<form-beans >
<form-bean name="memberForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="phone" type="java.lang.String" />
<form-property name="documentnumber" type="java.lang.String" />
<form-property name="address" type="java.lang.String" />
<form-property name="re" type="java.lang.String" />
<form-property name="memberimage" type="java.lang.String" />
<form-property name="uname" type="java.lang.String" />
<form-property name="sex" type="java.lang.String" />
<form-property name="age" type="java.lang.Integer" />
<form-property name="truename" type="java.lang.String" />
<form-property name="postcode" type="java.lang.String" />
<form-property name="email" type="java.lang.String" />
<form-property name="birthday" type="java.lang.String" />
<form-property name="validatenumber" type="java.lang.String" />
</form-bean> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings >
<!-- 用户操作 -->
<action name="memberForm" parameter="param" path="/member" scope="request" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="RegisterSuccess" path="/index.jsp" />
<forward name="RegisterFailure" path="/JspPage/memberpage/register.jsp" />
</action>
</action-mappings> <message-resources parameter="com.cloth.struts.ApplicationResources" />
<!-- 模板框架 -->
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
</plug-in>
</struts-config>service配置文件:
<!-- 会员表 -->
<bean id="memberService" class="com.cloth.service.MemberServiceImpl">
<property name="memberDAO" ref="memberDAO" />
</bean>dao配置文件:
<!-- 会员表 -->
<bean id="memberDAO" class="com.cloth.dao.MemberDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>action配置文件:
<!-- 用户操作 -->
<bean name="/member" class="com.cloth.action.MemberAction">
<property name="memberService" ref="memberService" />
</bean>jsp页面请求:
<form action="<%=request.getContextPath()%>/member.do?param=memberregister" id="regform" method="post" onsubmit="return allvalidate()" >
......................
</form>
唉,struts1 真的这么蛋疼吗? 问题是我现在必须会这玩意啊!!!没人指导一下?