您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页整合Struts+Spring+Hibernate简单例子开发

整合Struts+Spring+Hibernate简单例子开发

来源:五一七教育网
Eclipse + MyEclipse整合Struts+Spring+Hibernate简单例子开发

功能介绍:由用户输入用户的ID,输出用户的相关信息,包括用户名和毕业学校。前台包括两个jsp页面,index.jsp用来接受用户输入查询条件;result.jsp用来显示查询结果。数据库采用MySQL,创建user表:

Create table user(ID int(11) primary key,name varchar(100),school varchar(100)); Insert into user values(0001,’matthew’,’YunNan University’); Insert into user values(0002,’zhangzili’,’YunNan University’); Insert into user values(0003,’yangxiaopeng’,’HuaNan University’); 环境:Eclipse3.1.2+MyEclipse4.1.1GA+MySql4.1.10 一 新建项目:login,方法参见我的另一篇日志:Struts+Spring+Hibernate之搭建Eclipse + MyEclipse 开发环境。整个项目的结构如下:

二 为项目增加Struts、Spring、Hibernate功能。方法大致一样,细节会因为MyEclipse的版本会有点不一样。

1 增加Struts功能:右激项目名称》MyEclipse》Add Struts Capabilities

接下来,只需要根据你的情况设置下Base package for new classes:如,com.lnic.struts。然后点finish即可。完成后,会在你的项目里面增加一些struts的jar包。

2 增加Spring功能,方法和前面一样。这里需要注意点选:Copy checked Library…项,要不然在我这里会出现找不到build-path错误。

然后,选择applicationContext.xml文件的位置,选择WEB-INF文件夹下。即可。

这个时候,项目下的包结构又会增加一些jar包。

3 增加Hibernate功能。方法和前面的一样。配置如下图:

到此,完成Hibernate功能增加。 三 创建代码:如下图结构

在创建BaseAction.java过程中会出现import org.springframework.web.context.WebApplicationContext;这个包没有加进来,所以要手工把它加进来:spring-web.jar,这个是myeclipse自带的有。如图:

四 创建JSP页面:index.jsp和result.jsp.具体如下图:

五 部署项目和测试。项目部署方法请看我的另一篇日志:Struts+Spring+Hibernate之搭建Eclipse + MyEclipse 开发环境

输入:http://localhost:8080/login/ 如下图:

显示结果如下:

六 详细代码:

1 com.lnic.dao包里面有两个类: UserDao.java

package com.lnic.dao;

import java.util.List;

public interface UserDao { public List getName(String id); }

UserDaoImpl.java /**

* 数据访问对象,实现UserDao接口,并调用Hibernate的映射来获得用户的信息。 */

package com.lnic.dao;

import java.sql.SQLException; import java.util.List;

import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session;

import org.springframework.orm.hibernate3.HibernateCallback; import

org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao { public UserDaoImpl(){ super(); } public List getName(final String id) { return getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { int studID = Integer.parseInt(id); StringBuffer sb = new StringBuffer(100); sb.append(\"select user \"); sb.append(\"from User user \"); sb.append(\"where user.id = :id\"); Query query = session.createQuery(sb.toString()); query.setInteger(\"id\ List list = query.list(); return list; } }); } }

2 com.lnic.hibernate包里面有个User.java的hibernate映射类。它的属性和数据库中的User表字段对应。 package com.lnic.hibernate;

import java.io.Serializable;

public class User implements Serializable { private java.lang.Integer id; private java.lang.String name; private java.lang.String school;

public User(){}

public User(java.lang.Integer id){ this.setId(id); }

public java.lang.Integer getId(){ return id;

}

public void setId(java.lang.Integer id){ this.id = id; }

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

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

public java.lang.String getSchool(){ return this.school; }

public void setSchool(java.lang.String school){ this.school = school; } }

User类的hibernate映射文件:user.hbm.xml

\"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"

\"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" >

3 m.lnic.struts包里面有两个类:BaseAction.java和SearchAction.java BaseAction.java,在这个类中继承了struts的action。并且覆盖了setServlet方法,在此方法中初始化Web应用上下文,获得Spring的Ioc容器,并在容器中获取UserDao接口的实现类的对象,然后使用该对象初始化本类中的成员变量userDao。可以参见applicationContext.xml配置文件。 package com.lnic.struts;

import javax.servlet.ServletContext; import org.apache.struts.action.Action;

import org.apache.struts.action.ActionServlet;

import org.springframework.web.context.WebApplicationContext; import

org.springframework.web.context.support.WebApplicationContextUtils; import com.lnic.dao.UserDao;

public class BaseAction extends Action { private UserDao userDao; public void setServlet(ActionServlet actionServlet) { super.setServlet(actionServlet); ServletContext servletContext = actionServlet.getServletContext(); WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); this.userDao = (UserDao)wac.getBean(\"userDao\"); } public UserDao getUserDao() { return userDao; } public void setStuDao(UserDao userDao) { this.userDao = userDao; } }

SearchAction.java这个类继承了BaseAction,并覆盖了Action的execute方法,它是Struts的Action类中用来处理业务逻辑的方法,并将处理结果转发给下个页面,在本例子中,它直接调用BaseAction中的getUserDao方法获得userDao对象,并调用该对象的getName方法完成查询工作。 package com.lnic.struts;

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;

public class SearchAction extends BaseAction { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) { String id = req.getParameter(\"factor\"); List list = this.getUserDao().getName(id); req.setAttribute(\"Students\ return mapping.findForward(\"result\"); } }

4 前台jsp页面:index.jsp和result.jsp index.jsp

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"GBK\"%> <%@ taglib uri=\"/WEB-INF/struts-html.tld\" prefix=\"html\" %>

请输入用户ID:

result.jsp

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"GBK\"%> <%@ page import=\"com.lnic.hibernate.User\" %>

您查询的用户信息如下:

<%

java.util.List l =

(java.util.List)request.getAttribute(\"Students\"); java.util.Iterator iter = l.iterator(); User user = new User(); while(iter.hasNext()){ user = (User)iter.next(); %>

学生编号:<%=user.getId() %>
学生姓名:<%=user.getName() %>
学生专业:<%=user.getSchool() %>
<%}%>

5 配置文件:applicationContext.xml和hibernate.cfg.xml,struts-config.xml,web.xml

Spring的配置文件:applicationContext.xml,在这个配置文件,配置了个数据源组件:dataSource,用来获取数据库源,它是个DBCP的BasicDataSource对象,其属性根据不同的数据库,会有不同。另外,在sessionFactory这个Bean组件中配置了Spring 的LocalSessionFactoryBean类的对象,该类包装了Hibernate的SessionFactory类。在这个组件中,我们可以配置该组件的数据源以及Hibernate相关属性,比如数据库方言、hibernate映射文件所在的包路径。

class=\"org.apache.commons.dbcp.BasicDataSource\" destroy-method=\"close\"> /> />

class=\"org.springframework.orm.hibernate3.LocalSessionFactoryBean\">

key=\"hibernate.dialect\">org.hibernate.dialect.MySQLInnoDBDialect

true

classpath:/com/lnic/hibernate

Struts配置文件:struts-config.xml。配置FormBean组件,这里使用的是动态FormBean。它的属性“factor”必须与index.jsp和Form中的属性名字一样。

\"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd\">

type=\"org.apache.struts.action.DynaActionForm\">

name=\"testForm\" input=\"/index.jsp\">

这个地方配置行为映射,指定映射路径,此处为“/search”,它必须和index.jsp的form

的action属性相对应。指定用来处理该行为的Action类。

Web配置文件:web.xml

version=\"2.4\" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">

action *.do

org.apache.struts.action.ActionServlet

config

/WEB-INF/struts-config.xml

ass>

action

org.springframework.web.context.ContextLoaderList ener

contextConfigLocation

/WEB-INF/applicationContext.xml

debug 3

detail 3

2

Hibernate配置文件:hibernate.cfg.xml

\"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"

\"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">

root name=\"connection.url\">jdbc:mysql://localhost:3306/test name=\"dialect\">org.hibernate.dialect.MySQLMyISAMDialect mysql 131421 name=\"connection.driver_class\">com.mysql.jdbc.Driver

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务