Myeclipse+hibernate+struts+Tomcat 例子

Myeclipse 真的好强大。现在简单的记录一下这次作业的流程。希望对需要的人有帮助。


这次作业是用Tomcat和struts做person 和project 的数据库查询网页。这里我有些包名我可能有些地方不配套。因为我实际的包名和这里不一样。

  • person 和project 还有person_project 的数据库表格如下:



  •  打开myeclipse, 新建web project   file->new->web project:然后输入name其他都是默认值就可以了。
  • 连接数据库。这一部分不做详解。参见lzb821的帖子:http://blog.csdn.net/lzb821/article/details/1408177
  • 在项目名上点击右键->“myeclipse”->“Add Hibernate capabilites”, 这部分和lzb821帖子讲的一样。出来的hibernate.cfg.xml如下,其中***为自己数据库的信息:

  <? xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE hibernate-configuration (View Source for full doctype...)>
<!--
 Generated by MyEclipse Hibernate Tools.                   
  -->
- < hibernate-configuration >
- < session-factory >
  < property name =" dialect " > org.hibernate.dialect.MySQLDialect </ property >
  < property name =" connection.url " > jdbc:mysql://localhost/packagename </ property >
  < property name =" connection.username " > *** </ property >
  < property name =" connection.password " > *** </ property >
  < property name =" connection.driver_class " > com.mysql.jdbc.Driver </ property >
  < property name =" myeclipse.connection.profile " > mysql </ property >
  < mapping resource =" packagename/Project.hbm.xml " />
  < mapping resource =" packagename/Person.hbm.xml " />
  </ session-factory >
  </ hibernate-configuration >
  • 在项目名上点击右键->“myeclipse”->“Add Struts capabilites" 除非改变包名,其他几乎不需要做什么改变。然后finished
  • 现在要做struts的工作了。根据表格建立object的一系列code和hbm.xml了。window->open  perspective->Myeclipse Database Explorer,切换到数据库管理视图,找到我们为本次实例创建的表格, 这里选取person,点右键->hibernate reverse Engineering“”后出现下图:

next:

next: 注意这里一定要把 include referenced tables 和 include referencing tables 勾上。这样所有和他相关的表都会加入, 另外Id Generator最好选成 assigned, 最后finished。


  • 这时候应该创建好了code和hbm.xm;如下

Person

package packagename;


import java.util.HashSet;
import java.util.Set;

/**
 * Person entity. @author MyEclipse Persistence Tools
 */

public class Person implements java.io.Serializable {

    // Fields

    private String personId;
    private String name;
    private String salary;
    private String homecity;
    private String homezip;
    private Set projects = new HashSet(0);

    // Constructors

    /** default constructor */
    public Person() {
    }

    /** full constructor */
    public Person(String name, String salary, String homecity, String homezip,
            Set projects) {
        this.name = name;
        this.salary = salary;
        this.homecity = homecity;
        this.homezip = homezip;
        this.projects = projects;
    }

    // Property accessors

    public String getPersonId() {
        return this.personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSalary() {
        return this.salary;
    }

    public void setSalary(String salary) {
        this.salary = salary;
    }

    public String getHomecity() {
        return this.homecity;
    }

    public void setHomecity(String homecity) {
        this.homecity = homecity;
    }

    public String getHomezip() {
        return this.homezip;
    }

    public void setHomezip(String homezip) {
        this.homezip = homezip;
    }

    public Set getProjects() {
        return this.projects;
    }

    public void setProjects(Set projects) {
        this.projects = projects;
    }

}


hbm.xml:

  <? xml version="1.0" encoding="utf-8" ?>
  <!DOCTYPE hibernate-mapping (View Source for full doctype...)>
-<!--
 
    Mapping file autogenerated by MyEclipse Persistence Tools
  -->
- < hibernate-mapping default-cascade =" none " default-access =" property " default-lazy =" true " auto-import =" true " >
- < class catalog =packeagename " name =" packeagename.Person " table =" person " mutable =" true " polymorphism =" implicit " dynamic-update =" false " dynamic-insert =" false " select-before-update =" false " optimistic-lock =" version " >
- < id name =" personId " type =" java.lang.String " >
  < column name =" PersonId " />
  < generator class =" assigned " />
  </ id >
- < property generated =" never " lazy =" false " name =" name " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Name " />
  </ property >
- < property generated =" never " lazy =" false " name =" salary " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Salary " />
  </ property >
- < property generated =" never " lazy =" false " name =" homecity " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Homecity " />
  </ property >
- < property generated =" never " lazy =" false " name =" homezip " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Homezip " />
  </ property >
- < set catalog =" packeagename " name =" projects " sort =" unsorted " table =" person_project " inverse =" false " mutable =" true " optimistic-lock =" true " embed-xml =" true " >
- < key on-delete =" noaction " >
  < column name =" PersonId " not-null =" true " />
  </ key >
- < many-to-many class =" " entity-name =" packeagename.Project " unique =" false " embed-xml =" true " not-found =" exception " >
  < column name =" ProjectId " not-null =" true " />
  </ many-to-many >
  </ set >
  </ class >
  </ hibernate-mapping >

Project

package packagename;

import java.util.HashSet;
import java.util.Set;

/**
 * Project entity. @author MyEclipse Persistence Tools
 */

public class Project implements java.io.Serializable {

    // Fields

    private String projectId;
    private String workcity;
    private String workzip;
    private Set persons = new HashSet(0);

    // Constructors

    /** default constructor */
    public Project() {
    }

    /** full constructor */
    public Project(String workcity, String workzip, Set persons) {
        this.workcity = workcity;
        this.workzip = workzip;
        this.persons = persons;
    }

    // Property accessors

    public String getProjectId() {
        return this.projectId;
    }

    public void setProjectId(String projectId) {
        this.projectId = projectId;
    }

    public String getWorkcity() {
        return this.workcity;
    }

    public void setWorkcity(String workcity) {
        this.workcity = workcity;
    }

    public String getWorkzip() {
        return this.workzip;
    }

    public void setWorkzip(String workzip) {
        this.workzip = workzip;
    }

    public Set getPersons() {
        return this.persons;
    }

    public void setPersons(Set persons) {
        this.persons = persons;
    }

}


  <? xml version="1.0" encoding="utf-8" ?>
  <!DOCTYPE hibernate-mapping (View Source for full doctype...)>
-<!--
 
    Mapping file autogenerated by MyEclipse Persistence Tools
  -->
- < hibernate-mapping default-cascade =" none " default-access =" property " default-lazy =" true " auto-import =" true " >
- < class catalog =" packagename " name =" packagename Project " table =" project " mutable =" true " polymorphism =" implicit " dynamic-update =" false " dynamic-insert =" false " select-before-update =" false " optimistic-lock =" version " >
- < id name =" projectId " type =" java.lang.String " >
  < column name =" ProjectId " />
  < generator class =" assigned " />
  </ id >
- < property generated =" never " lazy =" false " name =" workcity " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Workcity " />
  </ property >
- < property generated =" never " lazy =" false " name =" workzip " type =" java.lang.String " unique =" false " optimistic-lock =" true " >
  < column name =" Workzip " />
  </ property >
- < set catalog =" packagename " inverse =" true " name =" persons " sort =" unsorted " table =" person_project " mutable =" true " optimistic-lock =" true " embed-xml =" true " >
- < key on-delete =" noaction " >
  < column name =" ProjectId " not-null =" true " />
  </ key >
- < many-to-many class =" " entity-name =" packagename.Person " unique =" false " embed-xml =" true " not-found =" exception " >
  < column name =" PersonId " not-null =" true " />
  </ many-to-many >
  </ set >
  </ class >
  </ hibernate-mapping >


  • 接下来要建立DAOFactory了。在hibernateSessionFactory.java 和 Person.java Project.java 的包建立这个DAOFactory.java:
package packagename;

import org.hibernate.*;
import org.hibernate.criterion.Expression;

import java.util.*;

import javax.swing.JOptionPane;

import java.io.*;
import java.util.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class DAOFactory {
    Session session;
    Transaction tx;

    public void insert(Person p) throws HibernateException {

        try {
            session = HibernateSessionFactory.getSessionFactory().openSession();
        
            if(session==null){
                System.out.println("error!");
            }
            tx = session.beginTransaction();
          
            if(tx==null){
                System.out.println("txerror!");
            }
            session.save(p);
           
            tx.commit();
          
        } catch (HibernateException e) {
            e.printStackTrace();
            System.out.println("aaa");
            if (tx != null) {
                tx.rollback();
            }
        }

    }

    public Person search(String Id) throws HibernateException {

        session = HibernateSessionFactory.getSessionFactory().openSession();
        Person p = (Person) session.get(Person.class, Id);
        HibernateSessionFactory.closeSession();
        return p;

    }
    
    public Project searchproj(String proId) throws HibernateException {

        session = HibernateSessionFactory.getSessionFactory().openSession();
        Project pro = (Project) session.get(Project.class, proId);
        HibernateSessionFactory.closeSession();
        return pro;

    }
    

}



  • 下一步要做struts了!第一步打开WebRoot下的index.jsp然后就可以修改welcome首页了。
  • 打开webboot目录下WEB-INF中的struts配置文件“struts-config.xml” 然后建立action 或者 form具体要看你做什么,如果这个网页有action就选择新建action form jsp 如果不是只是简单的显示,比如这里的result只是显示结果就只需要form就可以了。记得一定要点击create JSP, 让它自动生成jsp。这个在form里面也是的。

insert:

search的:

之后生成的图就是:


  • 这一步骤是设置资源文件,为了struts的国际化和错误提示做准备。找到项目文件夹中src(源文件夹),找到ApplicationResourse.properties,双击打开, 填写内容。如下:
  • 现在要开始编写action和form的javacode。这里form几乎不需要改变。只需要对action做变化。

InsertAction.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.hw6.struts.action;

import java.util.HashSet;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import packagename.*;

import com.hw6.struts.form.InsertForm;

/**
 * MyEclipse Struts
 * Creation date: 11-14-2011
 *
 * XDoclet definition:
 * @struts.action path="/insert" name="insertForm" input="/form/insert.jsp" scope="request" validate="true"
 * @struts.action-forward name="success" path="/index.jsp"
 */
public class InsertAction extends Action {
    /*
     * Generated Methods
     */

    /**
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        InsertForm insertForm = (InsertForm) form;// TODO Auto-generated method stub
        Person p=new Person();
        p.setPersonId(insertForm.getPersonid());
        p.setName(insertForm.getName());
        p.setHomecity(insertForm.getHomecity());
        p.setHomezip(insertForm.getHomezip());
        p.setSalary(insertForm.getSalary());

        String s = insertForm.getproject();
        String[] proId = s.split(";");

        DAOFactory insertDAO = new DAOFactory();
        Set projects = new HashSet(0);
        for (int i = 0; i < proId.length; i++) {
            Project pro=insertDAO.searchproj(proId[i]);
            if(pro!=null){
                pro.getPersons().add(p);
                projects.add(pro);
            }
            else{
                return mapping.findForward("fail");
            }
        }
        p.setProjects(projects);
        try {
            insertDAO.insert(p);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return mapping.findForward("success");
        
        
        
        
    }
}

SearchAction.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.hw6.struts.action;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import packagename.DAOFactory;
import packagename.Person;

import com.hw6.struts.form.SearchForm;

/**
 * MyEclipse Struts
 * Creation date: 11-15-2011
 *
 * XDoclet definition:
 * @struts.action path="/search" name="searchForm" input="/form/search.jsp" scope="request" validate="true"
 * @struts.action-forward name="success" path="/form/result.jsp"
 */
public class SearchAction extends Action {
    /*
     * Generated Methods
     */

    /**
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) {
        SearchForm searchForm = (SearchForm) form;// TODO Auto-generated method stub
        String Id=searchForm.getPersonid();
        
        DAOFactory searchDAO=new DAOFactory();
         
            Person p=searchDAO.search(Id);
            if(p==null){
                
                return mapping.findForward("success");
            }
            request.setAttribute("person", p);
            return mapping.findForward("result");
    
        
    }
}


  • 接下来编写jsp:

Insert.jsp:

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>JSP for InsertForm form</title>
    </head>
    <body>
        <html:form action="/insert">
            <font color="#ff0000"><font size="6"><font face="Comic Sans MS">Please input the information:</font></font></font><br><br><font face="Comic Sans MS" size="4"><br>
personid : <html:text property="personid"></html:text><html:errors property="personid" /></font><br><font face="Comic Sans MS" size="4"><br>name : <html:text property="name"></html:text><html:errors property="name" /><br>
            <br>homecity : <html:text property="homecity"></html:text><html:errors property="homecity" /><br><br>homezip : <html:text property="homezip"></html:text><br></font><font size="4"><html:errors property="homezip" /></font><br><br><font face="Comic Sans MS" size="4">salary : <html:text property="salary"></html:text><html:errors property="salary" /></font><br><br><font face="Comic Sans MS" size="4">Project : <html:text property="project"></html:text><html:errors property="project" /></font><br><br/>
            <html:submit/><html:cancel/>
        </html:form>
    </body>
</html>


Insertsuccess.jsp:


<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>JSP for InsertsuccessForm form</title>
    </head>
    <body><font face="Adobe Garamond Pro"><font size="7">Insert Successed!</font></font>
        
    </body>
</html>

result.jsp: 红色字体为java代码。这一段嵌入的不显示的java代码。

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>JSP for ResultForm form</title>
    </head>
    <body>
    <font size="7" color="#ff0080" face="Adobe Caslon Pro Bold">The result is:</font><br><br>
    <%packagename.Person p = (packagename.Person)request.getAttribute("person");%><font face="Comic Sans MS">PersonId:<%=p.getPersonId() %><br></font>
    <font face="Comic Sans MS"><br>Name:<%=p.getName() %><br><br></font>
    <font face="Comic Sans MS">HomeCity:<%=p.getHomecity() %><br><br></font>
    <font face="Comic Sans MS">HomeZip:<%=p.getHomezip() %><br><br></font>
    <font face="Comic Sans MS">Salary:<%=p.getSalary() %><br>
    <br><br>Project:
    <%  
      java.util.Iterator iter = p.getProjects().iterator();
      while(iter.hasNext()){
     packagename.Project pro = (packagename.Project)iter.next(); %><br></font>
    <font face="Comic Sans MS"><br>ProjectId:<%=pro.getProjectId()  %><br></font>
<font face="Comic Sans MS"><br>WorkCity:<%=pro.getWorkcity() %><br></font>
<font face="Comic Sans MS"><br>WorkZip:<%=pro.getWorkzip() %><br><%}%></font>
     
     
     
 
    <br>
</body>
</html>





search.jsp:


<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html>
    <head>
        <title>JSP for SearchForm form</title>
    </head>
    <body>
        <html:form action="/search">
            <font color="#ff0080"><font size="5"><font face="Adobe Caslon Pro Bold">Please Input the PersonId you want to search </font></font></font><br><br><font face="Comic Sans MS">personid </font>: <html:text property="personid"/><html:errors property="personid"/><br/>
            <html:submit/><html:cancel/>
        </html:form>
    </body>
</html>

  • 基本上大功告成,准备发布了!在项目文件点右键->“myeclipse”->“Add and remove project deployment”

接下来点击选择tomcat然后start就可以了!


下面看看结果吧大笑





完成了!开心哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值