项目框架搭建步骤:
1 用MyEclipse建立一个Web project(demo1_1)
2 鼠标右击工程->MyEclipse->Add Struts Capabilities,出现如下界面:
i) 选择struts的版本1.2
ii) 在Base package for new classes输入框里面,输入自己的包路径.cn.com.book.demo.struts
3 鼠标右击工程->MyEclipse->Add Spring Capabilities,出现如下界面:
如图显示,选择上面的选项:
i) Spring version :Spring 2
ii) MyEclipse Libraries
iii) 在JAR Library Installation里面,选择 Copy checked ….
4 点击下一步,出现如下界面:
点击Finish
5 鼠标右击工程->Add Hibernate Capabilities,出现如下界面:
做如上图显示的选择,点击 Next ,进入如下界面:
6 选择 Spring configuration file,点击 Next
7 选择 Existing Spring configuration file, 在SessionFactory ID后面的输入框输入session工厂名称,可以自己起名.我们这里输入sessionFactory. 点击 Next,进入下面界面
8 在Bean Id后面输入数据源的id,可以自己定义,我们这里输入 dataSource..在DB Driver里面,选择我们在前面配置的数据源,点击 Next ,进入下面界面:
9 在java package中输入Hibernate Session Factory类的包名,如果没有,可以点New生成一个新的包路径.在Class Name后面,输入即将生成的Hibernate Session Factory的类名,我们这是HibernateSessionFactory.选择Java5做为我们编译的JDK
点 Finish 完成
到这里,我们完成了Struts+Spring+Hibernate的框架搭建,还有最后一步,因为同过MyEclipse加入的Spring liberary和Hibernate3的liberary有冲突,要解决这问题,需要将工程web目录立马,lib目录下(WebRoot/WEB-INF/lib)的jar文件都删除,数据库驱动程序除外,然后用将光盘里整理的jar文件copy进去.copy完jar文件,就完成了框架的所有搭建.
接下来,我们介绍怎么样在这框架的基础上,开发我们简单的Web应用:从TUser表中,将用户记录读出来,显示在userList界面上.
编写的过程大体如下:
i) 编写Struts中的userListForm和userListAction
ii) 编写显示用户列表的userList.jsp
iii) 用MyEclipse生成TUser表对应的pojo对象TUser和TUser跟tuser的映射xml文件
iv) 配置struts和spring对应的配置文件
如下是各步的详细过程:
1 编写Struts中的Form和Action
1) 打开struts-config.xml的图形设计界面
2) 在图形设计界面上,点击鼠标右击,选择New功能,出来如下界面
i) 在User case后面输入userList
ii) 从Supperclass的下拉框中,选择org.apache.struts.action.ActionForm
iii) 点击 Finish 按钮
iv) 编辑生成的UserListForm.java代码,在里面添加一个属性userList,用来将从数据库中取出的用户记录,并编写对应的set和get方法,代码详细如下:
UserListForm.java
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.com.book.demo.struts.form;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
/**
* MyEclipse Struts
* Creation date: 11-27-2007
*
* XDoclet definition:
* @struts.form name="userListForm"
*/
public class UserListForm extends ActionForm {
private List userList;
/*
* Generated Methods
*/
public List getUserList() {
return userList;
}
public void setUserList(List userList) {
this.userList = userList;
}
/**
* Method validate
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
}
/**
* Method reset
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
}
}
3) 打开Struts-config.xml图形设计界面,右击鼠标->New->Action,出现如下界面
i) 在 User case后面输入userList
ii) 选择Optional Detail里面的Form标签,在Browse中,选择上一步生成的userListForm
iii) 取消Validate Form前面的复选框
iv) 点击 Finish 按钮
2 编写userList.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<html:form action="/userList.do">
<table>
<tr>
<td>用户名</td><td>姓名</td><td>邮件地址</td>
</tr>
<logic:notEmpty name="userListForm" property="userList">
<logic:iterate id="user" name="userListForm" property="userList">
<tr>
<td><bean:write name="user" property="userName"/></td>
<td><bean:write name="user" property="name"/></td>
<td><bean:write name="user" property="email"/></td>
</tr>
</logic:iterate>
</logic:notEmpty>
</table>
</html:form>
</body>
</html>
3 生成TUser对象,以及TUser对象同tuser表的xm映射文件
1) Window->Open Perspective->MyEclipse Hibernate
2) 用鼠标右击DB Browser中的DemoMySQL,Open Connection
3) 展开里面的Table节点
4) 右击里面的t_user->Hibernate Reverse Engineering,出现如下界面,并做如下界面上的选择
5) 点击 Next ,进入如下界面
i) 选择ID Generator后面的 increment
ii) 点击 Finish 按钮
4 配置struts和spring的配置文件
1) 编辑UserListAction.java文件,注意粗体部分
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.com.book.demo.struts.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.web.struts.ActionSupport;
import cn.com.book.demo.hibernate.dao.TUserDAO;
import cn.com.book.demo.struts.form.UserListForm;
/**
* MyEclipse Struts
* Creation date: 11-27-2007
*
* XDoclet definition:
* @struts.action path="/userList" name="userListForm" scope="request"
*/
public class UserListAction extends ActionSupport {
/*
* 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) {
String path = "success";
UserListForm userListForm = (UserListForm) form;// TODO Auto-generated method stub
TUserDAO userDAO =
TUserDAO.getFromApplicationContext(this.getWebApplicationContext());
List userList = userDAO.findAll();
userListForm.setUserList(userList);
return mapping.findForward(path);
}
}
2) 编辑struts-config.xml,注意粗体部分
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans >
<form-bean name="userListForm" type="cn.com.book.demo.struts.form.UserListForm" />
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action
attribute="userListForm"
name="userListForm"
path="/userList"
input="/userList.jsp"
scope="request"
type="cn.com.book.demo.struts.action.UserListAction"
validate="false">
<forward name="success" path="/userList.jsp" />
</action>
</action-mappings>
<message-resources parameter="cn.com.book.demo.struts.ApplicationResources" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>
</struts-config>
3)另外还有一个Spring Beans的配置文件applicationContext.xml,不用做修改,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/book"></property>
<property name="username" value="root"></property>
<property name="password" value="yyaccp"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
</bean>
<bean id="TUserDAO"
class="cn.com.book.demo.hibernate.dao.TUserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean></beans>
到这里 , 我们的第一基于 Struts+Spring+Hibernate 的例子完成了 .