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如下,其中***为自己数据库的信息:
Generated by MyEclipse Hibernate Tools.-->
- 在项目名上点击右键->“myeclipse”->“Add Struts capabilites" 除非改变包名,其他几乎不需要做什么改变。然后finished
- 现在要做struts的工作了。根据表格建立object的一系列code和hbm.xml了。window->open perspective->Myeclipse Database Explorer,切换到数据库管理视图,找到我们为本次实例创建的表格, 这里选取person,点右键->hibernate reverse Engineering“”后出现下图:
![](http://hi.csdn.net/attachment/201111/16/0_13214622585PPc.gif)
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:
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;
}
}
- 接下来要建立DAOFactory了。在hibernateSessionFactory.java 和 Person.java Project.java 的包建立这个DAOFactory.java:
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就可以了!
下面看看结果吧!
完成了!开心哦!