jpetstore 学习的好例子 struts+spring+hibernate

来源:互联网 发布:明解c语言中级篇 pdf 编辑:程序博客网 时间:2024/05/21 15:40

 

 

 今天看spring的jpetstore,不知从何看起,看到这个帖子,一时有如遇知音,好文啊

引自http://blog.csdn.net/lvchaoxv/archive/2006/11/09/1375351.aspx

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>
原创粉丝点击