您的位置:首页 > 编程语言 > Java开发

Struts+Spring+Hibernate框架配置方案 推荐

2007-10-11 23:24 453 查看
[align=left]本文以给出了一个完整的SSH(Struts+Spring+Hibernat)框架配置方案。(附源文件)[/align]

本文的读者[/b]:适合刚刚学习SSH、想体验一下SSH和想用SSH做点事情的朋友。

你需要的知识[/b]:会eclipse的基本操作、tomcat的配置,如果不会你可能犯了“躁进”的毛病,先学基础吧(建议你读一下《学习原来是这样的》)。当然你要有一定的Struts、Spring、Hibernate知识,至少知道struts-config.xml、hibernate.cfg.xml、ApplicationContext.xml是干什么的。 因为要配置的文件比较多,为了给读者一个直观印象,在正式开始前,我先给出配置的路线图。


图中按照hello.do请求的处理顺序,描述了6个配置文件之间的依赖关系。下面我们将一个实际的例子,依次来讲述各个文件的配置。
例子SSHDemo演示了又前台传入请求hello.do,请求,返回一条由数据库中取出的数据。

第一步、建立项目[/b][/b]
[/b]
1.用MyEclipse建立SSHDemo项目。你至少需要下面的jar文件:[/b]

1.Struts.jar 2.commons-beanutils.jar 3.commons-digester.jar
4. commons-collections.jar 5. commons-logging.jar 6.Hibernate3.jar
7. antlr-2.7.6.jar 8.asm.jar 9.cglib-2.1.1.jar
10. dom4j-1.6.1.jar 11.dom4j-1.6.1.jar 12. ehcache-1.2.jar 13.jta.jar
14. log4j-1.2.11.jar 15. mysql-connector-java-5.0.0-beta-bin.jar 16. spring.jar
这些文件你可以在spring的下载包中找到。把上面的jar文件加入classPath中,并拷贝到WEB-INF中的lib中。

第二步、建立相关文件,包括类文件,[/b]jsp[/b]文件等[/b][/b]
[/b]
1 1.[/b]建立[/b]hello.jsp [/b]用来显示由数据库传来的信息[/b][/b]
hello.jsp

[align=left]<%@ [/b]page [/b]language[/b]=[/b]"java" [/b]contentType[/b]=[/b]"text/html; charset=GB2312"[/b][/b][/align]
[align=left] [/b]pageEncoding[/b]=[/b]"GB2312"[/b]%>[/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]HTML [/b]PUBLIC [/b]"-//W3C//DTD HTML 4.01 Transitional//EN"[/b]>[/b][/b][/align]
[align=left]<[/b]html[/b]>[/b][/b][/align]
[align=left]<[/b]head[/b]>[/b][/b][/align]
[align=left]<[/b]meta [/b]http-equiv[/b]=[/b]"Content-Type" [/b]content[/b]=[/b]"text/html; charset=GB2312"[/b]>[/b][/b][/align]
[align=left]<[/b]title[/b]>[/b]Struts Demo[/b]</[/b]title[/b]>[/b][/b][/align]
[align=left]</[/b]head[/b]>[/b][/b][/align]
[align=left]<[/b]body[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]H1[/b]>[/b]Hell, ${userInfo["username"]} ![/b]</[/b]H1[/b]>[/b] [/b][/b][/align]
[align=left]</[/b]body[/b]>[/b][/b][/align]
</[/b]html[/b]>[/b][/b]
2. [/b]建立数据库表[/b][/b]
[/b]

create table us (id int(10) primary key auto_increment, name varchar(20))type=innodb;[/b]
insert into us (name) values([/b]"[/b]zhaoyuan[/b]"[/b]);[/b]
3.创建[/b]User.java[/b]

[align=left]package edu.bjtu.zhao.ssh;[/b][/b][/align]
[align=left] [/b][/align]
[align=left]public [/b]class User {[/b][/b][/align]
[align=left] [/b]private Integer [/b]id[/b];[/b][/b][/align]
[align=left] [/b]private String [/b]name[/b];[/b][/b][/align]
[align=left] [/b]public Integer getId() {[/b][/b][/align]
[align=left] [/b]return [/b]id[/b];[/b][/b][/align]
[align=left] } [/b][/b][/align]
[align=left] [/b]public [/b]void setId(Integer id) {[/b][/b][/align]
[align=left] [/b]this.[/b]id[/b] = id;[/b][/b][/align]
[align=left] }[/b][/b][/align]
[align=left] [/b]public String getName() {[/b][/b][/align]
[align=left] [/b]return [/b]name[/b];[/b][/b][/align]
[align=left] }[/b][/b][/align]
[align=left] [/b]public [/b]void setName(String name) {[/b][/b][/align]
[align=left] [/b]this.[/b]name[/b] = name;[/b][/b][/align]
[align=left] }[/b][/b][/align]
}[/b]
4. [/b]创建[/b]UserDAO.java[/b]
[/b]

package edu.bjtu.zhao.ssh;

import org.hibernate.Hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class UserDAO {
private SessionFactory sessionFactory;
public UserDAO() {
}
public UserDAO(SessionFactory sessionFactory) {
this.setSessionFactory(sessionFactory);
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public User find(Integer id) {
Session session = sessionFactory.openSession();
User user = (User) session.load(User.class, id);
Hibernate.initialize(user);
session.close();
return user;
}}
5[/b].创建[/b]HalloAction.java[/b]

package edu.bjtu.zhao.ssh;

import java.util.*;
import javax.servlet.http.*;
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 org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class HelloAction extends Action {
// private UserChecker userChecker;

public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {

String username = request.getParameter("user");
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//建立DAO对象
UserDAO userDAO = (UserDAO) context.getBean("userDAO");
User user = new User();
user = userDAO.find(new Integer(1));
if(username==null )
{
username=user.getName();
}
Map model = new HashMap();
model.put("username", username);
request.setAttribute("userInfo", model);

return mapping.findForward("helloUser");
}}
第三步,开始配置路线图中的[/b]6[/b]个[/b]xml[/b]文件([/b]你可以参考文章的路线图)

1. [/b]配置[/b]web.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]"1.0" [/b]encoding[/b]=[/b]"UTF-8"[/b]?>[/b][/b][/align]
[align=left]<[/b]web-app [/b]id[/b]=[/b]"WebApp_ID" [/b]version[/b]=[/b]"2.4" [/b]xmlns[/b]=[/b]"http://java.sun.com/xml/ns/j2ee" [/b]xmlns:xsi[/b]=[/b]"http://www.w3.org/2001/XMLSchema-instance" [/b]xsi:schemaLocation[/b]=[/b]"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]session-config[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]session-timeout[/b]>[/b][/b][/align]
[align=left] 30[/b][/b][/align]
[align=left] [/b]</[/b]session-timeout[/b]>[/b][/b][/align]
[align=left] [/b]</[/b]session-config[/b]>[/b][/b][/align]
[align=left] [/b][/b][/align]
[align=left] [/b]<!-- Standard Action Servlet Configuration -->[/b] [/b][/b][/align]
[align=left]<[/b]servlet[/b]>[/b] [/b][/align]
[align=left] [/b]<[/b]servlet-name[/b]>[/b]action[/b]</[/b]servlet-name[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]servlet-class[/b]>[/b][/b][/align]
[align=left] org.apache.struts.action.ActionServlet[/b][/b][/align]
[align=left] [/b]</[/b]servlet-class[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]init-param[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]param-name[/b]>[/b]config[/b]</[/b]param-name[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]param-value[/b]>[/b][/b][/align]
[align=left] /WEB-INF/struts-config.xml[/b][/b][/align]
[align=left] [/b]</[/b]param-value[/b]>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]init-param[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]load-on-startup[/b]>[/b]1[/b]</[/b]load-on-startup[/b]>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]servlet[/b]>[/b] [/b][/b][/align]
[align=left] [/b][/align]
[align=left] [/b]<!-- Standard Action Servlet Mapping -->[/b] [/b][/b][/align]
[align=left] [/b]<[/b]servlet-mapping[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]servlet-name[/b]>[/b]action[/b]</[/b]servlet-name[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]url-pattern[/b]>[/b]*.do[/b]</[/b]url-pattern[/b]>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]servlet-mapping[/b]>[/b][/b][/align]
[align=left] [/b][/b][/align]
[align=left]<!—[/b]配置[/b]Spring[/b]的[/b] [/b]applicationContext.xml[/b]-->[/b] [/b][/b][/align]
[align=left] [/b]<[/b]context-param[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]param-name[/b]>[/b]contextConfigLocation[/b]</[/b]param-name[/b]>[/b][/b][/align]
[align=left] [/b][/b][/align]
[align=left]<[/b]param-value[/b]>[/b][/b][/align]
[align=left] /WEB-INF/classes/applicationContext.xml[/b][/b][/align]
[align=left] [/b]</[/b]param-value[/b]>[/b][/b][/align]
[align=left] [/b]</[/b]context-param[/b]>[/b] [/b][/b][/align]
[align=left]</[/b]web-app[/b]>[/b][/align]
2. [/b]配置[/b]struts-config.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]"1.0" [/b]encoding[/b]=[/b]"UTF-8" [/b]?>[/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]struts-config [/b]PUBLIC[/b][/b][/align]
[align=left] [/b]"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"[/b][/b][/align]
[align=left] [/b]"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"[/b]>[/b][/b][/align]
[align=left] [/b][/align]
[align=left]<[/b]struts-config[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]action-mappings[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]action [/b][/b][/align]
[align=left] [/b]path[/b]=[/b]"/hello" [/b][/b][/align]
[align=left] [/b]type[/b]=[/b]"org.springframework.web.struts.DelegatingActionProxy"[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]forward[/b][/b][/align]
[align=left] [/b]name[/b]=[/b]"helloUser" [/b][/b][/align]
[align=left] [/b]path[/b]=[/b]"/WEB-INF/jsp/hello.jsp"[/b]/>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]action[/b]>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]action-mappings[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<!-- [/b]因为使用了代理类,[/b]DelegatingActionProxy[/b],注册一个插件,让它通过[/b]/Hello[/b]去寻找真正的实现类[/b] -->[/b][/b][/align]
[align=left] [/b]<[/b]plug-in [/b]className[/b]=[/b]"org.springframework.web.struts.ContextLoaderPlugIn"[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]set-property [/b]property[/b]=[/b]"contextConfigLocation" [/b][/b][/align]
[align=left] [/b]value[/b]=[/b]"/WEB-INF/action-servlet.xml"[/b]/>[/b][/b][/align]
[align=left] [/b]</[/b]plug-in[/b]>[/b] [/b][/b][/align]
[align=left]</[/b]struts-config[/b]>[/b][/align]
3.[/b]配置[/b]ApplicationContext.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]"1.0" [/b]encoding[/b]=[/b]"UTF-8"[/b]?>[/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]beans [/b]PUBLIC [/b]"-//SPRING//DTD BEAN//EN" [/b]"http://www.springframework.org/dtd/spring-beans.dtd"[/b]>[/b][/b][/align]
[align=left] [/b][/align]
[align=left]<[/b]beans[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]bean [/b]id[/b]=[/b]"userDAO" [/b]class[/b]=[/b]"edu.bjtu.zhao.ssh.UserDAO"[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"sessionFactory" [/b]ref[/b]=[/b]"sessionFactory"[/b]/>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]bean[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]bean [/b]id[/b]=[/b]"sessionFactory" [/b]class[/b]=[/b]"org.springframework.orm.hibernate3.LocalSessionFactoryBean"[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"configLocation"[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]value[/b]>[/b]hibernate.cfg.xml[/b]</[/b]value[/b]>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]</[/b]bean[/b]>[/b][/b][/align]
</[/b]beans[/b]>[/b]
4. [/b]配置[/b]action-servlet.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]"1.0" [/b]encoding[/b]=[/b]"UTF-8"[/b]?>[/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]beans [/b]PUBLIC [/b]"-//SPRING//DTD BEAN//EN" [/b]"http://www.springframework.org/dtd/spring-beans.dtd"[/b]>[/b][/b][/align]
[align=left]<[/b]beans[/b]>[/b] [/b][/b][/align]
[align=left]<!-- [/b]与[/b]struts-config.xml[/b]里的[/b]"/hello"[/b]对应,由代理类返回[/b]HelloActoine[/b]类[/b][/b][/align]
[align=left]到此[/b]spring [/b]与[/b]struts[/b]配置完毕,也就是还说[/b]spring[/b]只是管理了[/b]action[/b][/b][/align]
[align=left] -->[/b][/b][/align]
[align=left] [/b]<[/b]bean [/b]name[/b]=[/b]"/hello" [/b][/b][/align]
[align=left] [/b]class[/b]=[/b]"edu.bjtu.zhao.ssh.HelloAction"[/b]>[/b][/b][/align]
[align=left] [/b]</[/b]bean[/b]>[/b][/b][/align]
</[/b]beans[/b]>[/b][/b]
5. [/b]配置[/b]hibernate.cfg.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]'1.0' [/b]encoding[/b]=[/b]'UTF-8'[/b]?>[/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]hibernate-configuration [/b]PUBLIC[/b][/b][/align]
[align=left] [/b]"-//Hibernate/Hibernate Configuration DTD 3.0//EN"[/b][/b][/align]
[align=left] [/b]"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"[/b]>[/b][/b][/align]
[align=left]<[/b]hibernate-configuration[/b]>[/b][/b][/align]
[align=left]<[/b]session-factory[/b]>[/b][/b][/align]
[align=left] [/b]<!--[/b]是否使运行时生成的[/b]sql[/b]输出到控制台以供调试[/b] -->[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"show_sql"[/b]>[/b]true[/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"dialect"[/b]>[/b][/b][/align]
[align=left] org.hibernate.dialect.MySQLDialect[/b][/b][/align]
[align=left] [/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"connection.driver_class"[/b]>[/b][/b][/align]
[align=left] com.mysql.jdbc.Driver[/b][/b][/align]
[align=left] [/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"connection.url"[/b]>[/b][/b][/align]
[align=left] jdbc:mysql://localhost:3306/sample[/b][/b][/align]
[align=left] [/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"connection.username"[/b]>[/b]root[/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"connection.password"[/b]>[/b][/b][/align]
[align=left] [/b]</[/b]property[/b]>[/b][/b][/align]
[align=left] [/b]<!-- [/b]以下设置对象与数据库表格的映射文件(所用用到的[/b]hbm[/b]文件在此配置)[/b],[/b]必须是相对于根的全路径[/b] -->[/b][/b][/align]
[align=left] [/b]<[/b]mapping [/b]resource[/b]=[/b]"edu/bjtu/zhao/ssh/User.hbm.xml"[/b]/>[/b][/b][/align]
[align=left]</[/b]session-factory[/b]>[/b][/b][/align]
</[/b]hibernate-configuration[/b]>[/b][/b]
6. [/b]创建映射文件[/b]User.hbm.xml[/b]

[align=left]<?[/b]xml [/b]version[/b]=[/b]"1.0" [/b]encoding[/b]=[/b]"utf-8"[/b]?>[/b] [/b][/b][/align]
[align=left]<![/b]DOCTYPE [/b]hibernate-mapping [/b][/b][/align]
[align=left] [/b]PUBLIC [/b]"-//Hibernate/Hibernate Mapping DTD 3.0//EN" [/b][/b][/align]
[align=left] [/b]"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"[/b]>[/b] [/b][/b][/align]
[align=left] [/b][/align]
[align=left]<[/b]hibernate-mapping[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]class [/b]name[/b]=[/b]"edu.bjtu.zhao.ssh.User" [/b][/b][/align]
[align=left] [/b]table[/b]=[/b]"user"[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]id [/b]name[/b]=[/b]"id" [/b]column[/b]=[/b]"id"[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]generator [/b]class[/b]=[/b]"native"[/b]/>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]id[/b]>[/b] [/b][/b][/align]
[align=left] [/b]<[/b]property [/b]name[/b]=[/b]"name" [/b]column[/b]=[/b]"name"[/b]/>[/b] [/b][/b][/align]
[align=left] [/b]</[/b]class[/b]>[/b] [/b][/b][/align]
</[/b]hibernate-mapping[/b]>[/b][/b]
第四步,测试[/b][/b]
[/b]
1. 打开TOMCAT_HOME/conf/server.xml,在<Host>下配置

<Context path="/SSHDemo" docBase="D:\j2ee\workspace\SSHDemo\WebRoot" reloadable="true" debug="0">[/b]
</Context>[/b]
2. 启动TOMCAT,
在IE中输入http://localhost:8080/SSHDemo/hello.do
将显示“Hello zhaoyuan”

在IE中输入http://localhost:8080/SSHDemo/hello.do?user=yourname
将显示“hello yourname”;

以上程序在
tomcat-5.5.17,jdk1.5.0_06 MySQLversion: 4.0.14-nt 下测试成功。

看到输出的结果,说明配置成功,你拥有了自己的SSH开发框架。这只是一个入门级别的框架配置,用来做个Demo还可以,如果用它来做企业级开发,我基本上可以断言不能。因为至少连接池没配,再说用SSH这种东西来开发,虽然网上炒的比较热,但在具体的项目中还是要慎用。

附件:http://down.51cto.com/data/2348632
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息