[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());
}
}

解决方案 »

  1.   

    下面这些类是看书上写的,不过书上是整合的struts2,我这个是1.2,从低往高学,拜托看一看,怎么整合起来DAO接口
    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类就不发了,都一样。不会整合起来,帮忙改一改。谢谢。
      

  2.   

    建议你学struts2 现在struts1已经淘汰了
      

  3.   

    现在都是struts2   你得赶快学
      

  4.   

    我在学struts1的时候就是简单的学了一下,并不是说不会struts1就不会struts2
    何况struts2和struts1区别很大!
      

  5.   

    这个add可以执行。showall不执行。
    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();
    }
      

  6.   

    你个东西代码太长了,没有时间去给你改strust1都忘掉了
    给你一个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>
      

  7.   


    唉,struts1 真的这么蛋疼吗? 问题是我现在必须会这玩意啊!!!没人指导一下?
      

  8.   

    虽然说struts1和struts2名字很像, 但完全没有关系,直接去学struts1吧。 性能要比struts1高很多