blogjava's web log

blogjava's web log
...

struts+hibernate+spring 开发入门


1.先建张表
用的是mysql数据库..
文章表.

  CREATE     TABLE   `t_article` (
  `a_id`  
int  (  11  )   NOT     NULL   auto_increment,
  `a_sort`  
int  (  11  )   NOT     NULL     default     '  0  '  ,
  `a_title`  
varchar  (  50  )   default     NULL  ,
  `a_body`  
text  ,
  `a_author`  
varchar  (  11  )   default     ''  ,
  `a_hit`  
int  (  11  )   NOT     NULL     default     '  0  '  ,
  `c_id`  
int  (  11  )   default     '  0  '  ,
  `a_date`  
varchar  (  20  )   default     NULL  ,
   
PRIMARY     KEY    (`a_id`)
)  

2:写vo

package  firstspring.vo;
public   class  articleVO  {
    
private   int  a_id;
    
private   int  a_sort;
    
private   int  a_hit;
    
private   int  c_id;
    
private  String a_title;
    
private  String a_body;
    
private  String a_author;
    
private  String a_date;


    
public  articleVO()  {
    }

   
// 写上get() set()方法

3 写VO映射文件

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 2.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"
>
< hibernate-mapping >
    
< class  name ="firstspring.vo.articleVO"  table ="t_article"   >
    
< id  name ="a_id"  column ="a_id"  unsaved-value ="0"   >
      
< generator  class ="native" />
 
</ id >
     
< property  name ="c_id"     column ="c_id" />
     
< property  name ="a_title"  column ="a_title" />
     
< property  name ="a_sort"   column ="a_sort" />
     
< property  name ="a_date"   column ="a_date" />
     
< property  name ="a_body"   column ="a_body" />
     
< property  name ="a_hit"    column ="a_hit" />
     
< property  name ="a_author"  column ="a_author" />    
  
</ class >
</ hibernate-mapping >

4: 写dao层接口和bll层接口
  4.1 dao层接口

package  firstspring.idao;
import  firstspring.vo.articleVO;
public   interface  ArticleIdao  {
    
    
void  addArticle(articleVO vo);         
}

4.2 bll层接口

package  firstspring.idao;
import  firstspring.vo.articleVO;
public   interface  IArticleBLL  {
     
void  addArticle(articleVO vo);  
}

5:写Articledao类

package  firstspring.dao;
import  org.springframework.orm.hibernate.support.HibernateDaoSupport;
import  firstspring.idao.ArticleIdao;
import  firstspring.vo.articleVO;
public   class  ArticleDal  extends  HibernateDaoSupport  implements  ArticleIdao  {
    
public  ArticleDal()  {
    }

    
public   void  addArticle(articleVO vo)
    
{
        
this .getHibernateTemplate().save(vo);
        
this .getHibernateTemplate().flush();
        
    }

}

6.写Articlebll类
package firstspring.bll;
import firstspring.idao.ArticleIdao;
import firstspring.idao.IArticleBLL;
import firstspring.vo.articleVO;

public class ArticleBll implements IArticleBLL {
   
private ArticleIdao dal=null;
    
public ArticleBll() {
    }

    
public void addArticle(articleVO vo)
    
{
        dal.addArticle(vo);
    }


    
public ArticleIdao getDal() {
        
return dal;
    }


    
public void setDal(ArticleIdao dal) {
        
this.dal = dal;
    }

}
7:添加struts框架。
  7.1 建个BaseAction类继承Action
package firstspring.struts;

import org.apache.struts.action.*;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import javax.servlet.ServletContext;

public abstract class BaseAction extends Action {
    
    
private WebApplicationContext wac;
    
public BaseAction() {
    }

    
public void setServlet(ActionServlet actionServlet)
    
{
        
super.setServlet(actionServlet);
        ServletContext servletContext
=actionServlet.getServletContext();
       wac
=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
       
//wac.get
    }

    
public WebApplicationContext getweb()
    
{
        
return wac;
    }

  
}
8:添加articleForm
package firstspring.struts;

import javax.servlet.*;
import javax.servlet.http.*;

import org.apache.commons.validator.*;
import org.apache.struts.action.*;
import org.apache.struts.validator.*;

public class articleForm extends ValidatorForm {
    
private String a_auhor;
    
private String a_body;
    
private String a_date;
    
private Integer a_hit;
    
private Integer a_id;
    
private Integer a_sort;
    
private String a_title;
    
private Integer c_id;

    
public String getA_auhor() {
        
return a_auhor;
    }


    
public void setA_auhor(String a_auhor) {
        
this.a_auhor = a_auhor;
    }


    
public void setC_id(Integer c_id) {
        
this.c_id = c_id;
    }


    
public void setA_title(String a_title) {
        
this.a_title = a_title;
    }


    
public void setA_sort(Integer a_sort) {
        
this.a_sort = a_sort;
    }


    
public void setA_id(Integer a_id) {
        
this.a_id = a_id;
    }


    
public void setA_hit(Integer a_hit) {
        
this.a_hit = a_hit;
    }


    
public void setA_date(String a_date) {
        
this.a_date = a_date;
    }


    
public void setA_body(String a_body) {
        
this.a_body = a_body;
    }


    
public String getA_body() {
        
return a_body;
    }


    
public String getA_date() {
        
return a_date;
    }


    
public Integer getA_hit() {
        
return a_hit;
    }


    
public Integer getA_id() {
        
return a_id;
    }


    
public Integer getA_sort() {
        
return a_sort;
    }


    
public String getA_title() {
        
return a_title;
    }


    
public Integer getC_id() {
        
return c_id;
    }


    
public ActionErrors validate(ActionMapping actionMapping,
                                 HttpServletRequest httpServletRequest) 
{
        ServletContext application
=this.getServlet().getServletContext();
        ActionErrors errors
=new ActionErrors();
        String validationKey
=this.getValidationKey(actionMapping,httpServletRequest);
        Validator validator
=Resources.initValidator(validationKey,this,application,httpServletRequest,errors,page);//String,Object,ServletContext,HttpServletRequest,ActionMessages,int
        try
        
{
            validatorResults
=validator.validate();
        }

        
catch(ValidatorException e)
        
{
            
//log.error(e.getMessage(),e);
        }

        
return null ;

    }


    
public void reset(ActionMapping actionMapping,
                      HttpServletRequest servletRequest) 
{
    }

}

9:添加ArticleAction继承刚刚建的BaseAction

package firstspring.struts;

import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForward;
import firstspring.vo.articleVO;
import firstspring.idao.IArticleBLL;

public class articleAction extends BaseAction {
    
public ActionForward execute(ActionMapping mapping, ActionForm form,
                                 HttpServletRequest request,
      
                    HttpServletResponse response) {
                                //这里有几个数据直接写上了,没有从前台表单取。。     
        articleForm f = (articleForm) form;
        articleVO vo
=new articleVO();
        vo.setA_author(f.getA_auhor());
        vo.setA_body(f.getA_body());
        vo.setA_hit(
100);
        vo.setA_date(f.getA_date());
        vo.setA_sort(
0);
        vo.setC_id(
1);
        vo.setA_title(f.getA_title());
        
//IArticleBLL 
     IArticleBLL ibll=(IArticleBLL)this.getweb().getBean("articlebll");
     ibll.addArticle(vo);
     
       
return null;
    }

}
好了。到这就快差不多了。。还有个重要的东西。写个appcontext.xml配置文件。工厂就在这了。。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd"
>
<beans>


<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  
<property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property>
  
<property name="url"><value>jdbc:mysql://localhost:3306/wjcms</value></property>
  
<property name="username"><value>root</value></property>
  
<property name="password"><value>wujun</value></property>
</bean>


    
<bean id="sessionFactory"
        class
="org.springframework.orm.hibernate.LocalSessionFactoryBean">

        
<property name="dataSource">
            
<ref local="dataSource"/>
        
</property>


        
<property name="mappingResources">
            
<list>
                
<value>
                    articleVO.hbm.xml
                
</value>
       
            
</list>
            
        
</property>

        
<property name="hibernateProperties">
            
<props>
                
<prop key="hibernate.dialect">
                    net.sf.hibernate.dialect.MySQLDialect
                
</prop>
                
<prop key="hibernate.show_sql">
                    true
                
</prop>
            
</props>
        
</property>
    
</bean>

    
<bean id="articledal" class="firstspring.dao.ArticleDal">
       
<property name="sessionFactory"><ref local="sessionFactory"/></property>
    
</bean>
    
    
<bean id="articlebll" class="firstspring.bll.ArticleBll">
       
<property name="dal"><ref local="articledal"/></property>   
    
</bean>
</beans>

建个jsp页面。测试添加一条记录看看。这是前台的代码。。
<html:form action="/articleAction.do" method="POST">
<html:text property="a_auhor"/>
<br>
<html:text property="a_body"/>
<br>
<html:text property="a_date"/>
<br>
<br>
<br>
<br>
<html:text property="a_title"/>
<br>
<br>
<html:submit property="submit" value="Submit"/><br>
<html:reset value ="Reset"/>
</html:form>
到这就快差不多了。还有一个小事情,在web.xml里记的加上一句
 <servlet>
    
<servlet-name>context</servlet-name>
    
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
    
<load-on-startup>1</load-on-startup>
  
</servlet>

好,运行一下。。OK 。数据进数据库了。

专家多指点。。......

posted on 2006-04-04 01:17 record java and net 阅读(10567) 评论(46)  编辑  收藏 所属分类: Spring

评论

# re: struts+hibernate+spring 开发入门 2006-04-04 08:48 linian

好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
不错,简单明了,通俗易懂!!!!!
值得推荐  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-04 16:20 xx

确实入门...  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-04 17:47 gavin

确实不错!通俗易懂!!!!!
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-04 19:44 java生存下来的乌鸦

哈哈哈
不错呀,非常棒,我喜欢
在此一游学到不少东西
希望以后能有更多好东西和大家共享呀  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-04 19:44 java生存下来的乌鸦

哈哈哈
不错呀,非常棒,我喜欢
在此一游学到不少东西
希望以后能有更多好东西和大家共享呀  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-04 19:54 吴某人-不断地学习

哈。。。

那是肯定的。

我将把我平常练习发上来。

一起进步嘛。。


  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-05 00:09 fanse

哈哈,想直接把这个作为教材转载,作者还允许阿?



欢迎访问 http://www.shuangzixing.net 双子星Java开源技术门户  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-05 01:00 吴某人-不断地学习

呵呵。

可以的。

  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-06 09:08 龙卷风驿站

action应该继承dispatchaction比较好吧,还有怎么不用动态表单  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-06 13:23 吴某人-不断地学习



呵呵,,。我这只是一个练习。是啊。

动态表单 和dispatchaction 类是能减少写太多的类。。

真正在做的时候还是应该用
dispatchaction 类比较方便 。。
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-07 17:54 linian

吴某人-不断地学习
请问我想把你的这个代码:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"><value>org.gjt.mm.mysql.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost:3306/wjcms</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>wujun</value></property>
</bean>

中的:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
换成:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

请问我应该怎么办呢?????
请指教!小弟多多感谢!!!  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-07 17:55 linian

麻烦 吴某人-不断地学习 多多指教!
我的QQ是:382510252  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-07 17:57 linian

我的目的就是想把:
class="org.apache.commons.dbcp.BasicDataSource">
换成springframe的数据库连接:
class="org.springframework.jdbc.datasource.DriverManagerDataSource">   回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-07 19:43 吴某人-不断地学习

@to linian

也是一样的啊。。你把org.apache.commons.dbcp.BasicDataSource类换一下就可以了。。

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>
jdbc:mysql://localhost/wjcms
</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>wujun</value>
</property>
</bean>

你再试一下把。。。

我QQ不经常上的。。。不要意思啊。。

有问题一起研究啊。。  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-08 15:57 linian

哦,谢谢你的回复!
那样要手动才可以吗???
我的意思是想要在自动生成的时候就让他生成:
class="org.springframework.jdbc.datasource.DriverManagerDataSource">

而不是生成:
org.apache.commons.dbcp.BasicDataSource类  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-08 15:59 linian

麻烦 吴某人-不断地学习 多多指导!谢谢!!  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-08 17:18 吴某人-不断地学习

啊。。

你用的是什么开发工具。。是eclipse吗。。

配置文件我都是直接copy的。。手工写。。


我也刚学。。很多东西还不是很懂。。

一起进步。。

  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-09 19:49 linian

哦,我用的是Myeclipse开发工具

配置文件是自己写的呀??

可以自动生成的呀

请 struts+hibernate+spring 开发那个hibernate.cfg.xml文件要不要的拉???

请多多指教,谢谢!!  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-11 12:42 乱码

不懂!
一个简单的插入也要这么长的代码?!

  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-11 22:31 吴某人-不断地学习

hibernate.cfg.xml

文件可以不要。。
appcontext.xml配置文件 已经写上了。。
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-16 13:11 lengfeng

不错 支持!
我也是刚学习,
qq332127069
希望能一起研究
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-18 16:23 tom

我照着你的代码试着做了一下,
当运行到this.getweb()的时候出现空指针错误,为什么?  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-18 16:51 吴某人-不断地学习


你是不是把配置文件放错了。。
把appcontext.xml 和articleVO.hbm.xml
放在WEB-INF\classes目录下。。
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-18 17:17 tom

现在发生的错误是:
org.hibernate.LazyInitializationException:could not initialize proxy - the owing Session was closed  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-18 17:43 吴某人-不断地学习

你用的版本是hibernate3吧。。

配置文件改lazy="false"试一下。。

  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-20 16:43 tom

问一个问题:
在<hibernate-mapping>中加入:
<sql-query name="selsetUser">
……
然后调用
getHibernateTemplate().findByNamedQuery(“selsetUser”, Object[]);

为什么说找不到这个名称呢  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-25 14:08 happybea

wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
我为什么执行到这就报错了啊


java.lang.ExceptionInInitializerError
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.springframework.util.ClassUtils.forName(ClassUtils.java:108)
......

什么原因啊?
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-25 18:24 吴某人-不断地学习

你把appcontext.xml 放在那里?
要不就是
配置文件有问题。。


  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-26 14:00 小月

String validationKey=this.getValidationKey(actionMapping,httpServletRequest);


这句为什么有错误啊!!!!  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-26 19:39 吴某人-不断地学习

String validationKey=this.getValidationKey(actionMapping,httpServletRequest);


这句为什么有错误啊!!!!


晕。。光看这句我怎么知道你那里有错啊。。

说具体点。。  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-27 20:24 寒晴天

我加你的QQ了.  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-04-27 20:43 吴某人-不断地学习

今天停电一天。。

没有在线。。

  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-07 17:22 初学者

articleForm类中:
String validationKey=this.getValidationKey(actionMapping,httpServletRequest);
Validator validator=Resources.initValidator(validationKey,this,application,httpServletRequest,errors,page);


出现了错误。继承的那个ValidatorForm根本就没有这个方法。
  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-08 19:20 初学者求教

struts-config.xml文件没有贴出来,楼主可以把目录结构贴出来吗?
我的mail是:vrc-vrl@163.com,楼主能把整个文件压缩后发到我邮箱吗,谢谢  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-09 13:18 吴某人-不断地学习


邮件我已经发过去了。。

是jbilder 工程。。相应的包 你加进去就可以运行了。



  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-12 14:54 菜鸟求教

你好,我也是刚刚再学Spring
我按照你的步骤做下来,没有成功
能不能把你的整个工程打包发我
我的邮箱是cnhzliye@gmail.com
谢谢  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-12 17:37 bluebaby

我今天弄了一天 还没看到结果. 楼主 能将整个工程打包后发到我的邮箱里吗? 我对照一下 看看自己什么地方没弄好
Email:bluebaby65685@tom.com 谢谢 !  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-13 12:22 吴某人-不断地学习

http://www.blogjava.net/wujun/archive/2006/07/13/57944.html

这里下载  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-13 14:47 yan_1203

可不可以打包也给我发一份。谢谢你。
email:yan_1203@sina.com
QQ:5580172  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-13 14:47 yan_1203

可不可以打包也给我发一份。谢谢你。
email:yan_1203@sina.com
QQ:5580172  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2006-07-13 16:54 吴某人-不断地学习


这里下载
http://www.blogjava.net/Files/wujun/FirstSpring.rar  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2007-01-09 15:07 徐波

按照你的列子写了,所有的包也加了,启动Tomcat总是说AbstractAutowireCapableBeanFactory.class 找不到资源
我用的是Eclipse3.2+Tomcat5.517,帮忙解决谢谢  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2007-02-01 21:04 kingea

既然用了Spring,为什么不把Struts 的Action 交由Spring处理哇?还有你那个dataSource,为什么不用现成的Weblogic 的JNDI邦定哇?,虽说不是大型的项目,但用了三合一,就要体现松散藕合、高扩展性、高伸缩性.还有Spring的事务代理都不用 XXXDaoProxyFactoryBean.  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2007-02-01 21:09 kingea 用Spring现成的比较好,减少代码量

Spring 内建对JNDI的支持:org.framework.jndi.JndiObjectFactoryBean.  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2007-02-01 21:14 kingea

闪了,这上面的我记不到地址,随便看了一下,有空的各位加我:

e-mail:kingeakingea616@msn.com
kingea@21cn.com
QQ:15891550  回复  更多评论   

# re: struts+hibernate+spring 开发入门 2007-03-30 02:05 it468

还是不错的入门材料,楼主挺不错  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

常用链接

留言簿(44)

新闻档案

2.动态语言

3.工具箱

9.文档教程

友情链接

搜索

最新评论