`
高级java工程师
  • 浏览: 409353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
最近的struts2-hibernate -spring整合开发

1.简单讲解spring和struts2整合

首先导入struts的jar,hibernate的jar,spring的jar,数据库的驱动包XX.jar放入lib包中。

接下来编写实体类
User.java
package com.s2sh.mobel;

import java.io.Serializable;

public class User implements Serializable{

	private static final long serialVersionUID = -2974230401163436730L;
	private Integer id;
	private String name;
	private String password;
	private String firstname;
	private String lastname;
	private Integer age;
	
	private User(){}
	
	private User(Integer id , String firstname , String lastname , Integer age,String name,String password){
		this.id = id;
		this.firstname = firstname;
		this.lastname = lastname;
		this.age = age;
		this.name=name;
		this.password=password;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getFirstname() {
		return firstname;
	}
	public void setFirstname(String firstname) {
		this.firstname = firstname;
	}
	public String getLastname() {
		return lastname;
	}
	public void setLastname(String lastname) {
		this.lastname = lastname;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getPassword() {
		return password;
	}

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

	public String getName() {
		return name;
	}
}




将User.xml放在同一包下,模版与数据库映射。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


<hibernate-mapping>
	<class name="com.s2sh.mobel.User" table="users">
		<id name="id" column="id" type="integer">
			<generator class="native"></generator>
		</id>
        <property name="name" column="name" type="string"/>
		<property name="password" column="password" type="string"/>
		<property name="firstname" column="firstname" type="string" not-null="false"/>
		<property name="lastname" column="lastname" type="string" not-null="false"/>
		<property name="age" column="age" type="integer" not-null="false"/>	
	</class>
</hibernate-mapping>     


提供hibernate配置文件
hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

    <session-factory>
    
    </session-factory>

</hibernate-configuration>



在spring中,本身没有提供ORM的实现,但是提供了一些帮助类他们会提供ORM工具的支持,例如Hibernate、Ojdbc、iBatis等。


<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 数据源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	<property name="driverClassName">
		<value>com.mysql.jdbc.Driver</value>
	</property>
	<property name="url">
		<value>jdbc:mysql://localhost:3306/s2sh</value>
	</property>
	<property name="username">
		<value>root</value>
	</property>
	<property name="password">
		<value>wj</value>
	</property>
</bean>


注意:bean的id 可以随便写,sessionfactory依赖数据源,所以要注射进来bean id=“”,接下来<property name="driverClassName">要设置成数据源,

工厂:
<!-- sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	<property name="dataSource">
		<ref local="dataSource"/>
	</property>
	
	<property name="mappingResources">
		<list>
			<value>com/s2sh/mobel/User.hbm.xml</value>
		</list>
	</property>
	<property name="hibernateProperties">
		<props>
			<prop key="hibernate.dialect">
				org.hibernate.dialect.MySQLDialect
			</prop>
			<prop key="hibernate.show_sql">
				true
			</prop>
		</props>
	</property>
</bean>



还有一个,mvc三层架构,dao实现类注入,Servce业务逻辑注入,action注入
<!--实现层  -->
<bean id="userDao" class="com.s2sh.dao.impl.UserDaoImpl" scope="singleton">
	<property name="sessionFactory">
		<ref bean="sessionFactory"/>
	</property>
</bean>
<!--service层 -->
<bean id="userService" class="com.s2sh.service.impl.UserServiceImpl">
	<property name="userDao" ref="userDao"/>
</bean>
<!-- action -->
<bean id="saveUserAction" class="com.s2sh.action.user.UserAction" scope="prototype">
	<property name="userService" ref="userService" />
</bean>


简单的用户登录填写:

<!-- login -->
<bean id="loginUserAction" class="com.s2sh.action.user.UserAction" scope="prototype">
	<property name="userService" ref="userService" />
</bean>

注意,url请求找web.xml,通过拦截器和监听器进行操作,然后寻找struts.xml,然后struts class=“”会告诉继续找spring,spring的class=“”,会告诉具体找那个struts的action类,找到之后 获取rquest 参数,然后调用业务逻辑,把记过放进作用于,返回。在这里,我采用action注入servce,action注入user对象,servce类中注入dao,dao类中注入hibernateTemplate。


2.可以使用spring中的HibernateDaoSupport和HibernateTemplate类简化HibernateDao的实现类的编写。

public void delete(User id){
//获得hibernate事务
 template =getHiberanteTemplate();
//获得对象
user =(User)template.get(User.class,id);
//spring事务会进行操作删除对象
template.delete(user);
}



注意:因为dao继承HibernateDaoSupper 所以要重写delete(),然后获取hibernateTemplate,HibernateTemplate封装了session的操作,user =(User)template.get(User.class,id);查找User对象,查找后在通过template在把这个对象删除掉。现在不用管session,因为我们用到spring,我们注射进来了,所以session关闭交给spring。


3.修改web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
</filter-mapping>


注意:url请求过来首先找web.xml,通过过滤器进行拦截,找对应的action。

4.接着编写web.xml

<!--监听器-->
</filter-mapping>
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>


注意:监听器是spring,其实就是struts不管事务了,交给spring进行管理,对象交给spring进行管理。


5.web.xml架构
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!--过滤器-->
<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
</filter-mapping>
<!--监听器-->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>



编写struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
<package name="s2sh"  namespace="/" extends="struts-default" >

<!-- login 用户登录-->
		<action name="loginUser" class="loginUserAction" method="login">
		<result name="success">/list.jsp</result>
		<result name="error">/error.jsp</result>
		</action>
</struts>




注意name可以随便写,真正的寻找action类交给了spring,所以class=“”是spring的id=“”。他会继续到spring中找。

applicationContext.xml
<bean id="loginUserAction" class="com.s2sh.action.user.UserAction" scope="prototype">
	<property name="userService" ref="userService" />
</bean>


注意:spring的id一定是struts的class =“”,然后spring的class=“”会告诉这个action类在哪里?jurisdiction 另外<property name="userService" ref="userService" />说名action要调业务逻辑,所以要注入业务逻辑类。

action编写:
package com.s2sh.action.user;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.s2sh.mobel.User;
import com.s2sh.service.UserService;

public class UserAction extends ActionSupport {

	private static final long serialVersionUID = -7467352669343037994L;
	
	private User user;
	private UserService userService;
	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public UserService getUserService() {
		return userService;
	}
	private String name;
	private String password;
	
	public void setUserService(UserService userService) {
		this.userService = userService;
	}

	public User getUser() {
		return user;
	}
	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getPassword() {
		return password;
	}
	public void setUser(User user) {
		this.user = user;
	}
public String login()throws Exception{
		System.out.println(user.getName());
	if(null!=this.userService.findUser(user)){
			return SUCCESS;
		}else {
			return ERROR;
		}
		   
	}



dao接口编写

package com.s2sh.dao;

import java.util.List;

import com.s2sh.mobel.User;

public interface UserDao {
//根据用户用户来登录,不过你可以根据自己需求来写
	public User findUser(User user);
}


dao接口实现类

package com.s2sh.dao.impl;

import java.util.List;

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

import com.s2sh.dao.UserDao;
import com.s2sh.mobel.User;

public class UserDaoImpl extends HibernateDaoSupport implements UserDao{
//用户登录
		public User findUser(User user) {
			try{
			String hql="from User where name=? and password=?";
			List list = (List) this.getHibernateTemplate().find(hql,new String[]{user.getName(),user.getPassword()});
			if(list.size()>=1){
				return (User)list.get(0);
			}else {
				return null;
			}
			}catch (Exception e) {
				e.printStackTrace();
			}
			return null;
		}
}

编写servce接口

package com.s2sh.service;

import java.util.List;

import com.s2sh.mobel.User;

public interface UserService {
          //根据user登录
	public User findUser(User user);
}


编写servce实现类

package com.s2sh.service.impl;

import java.util.List;

import com.s2sh.dao.UserDao;
import com.s2sh.mobel.User;
import com.s2sh.service.UserService;

public class UserServiceImpl implements UserService{

	private UserDao userDao;
	//注入
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	//用户登录
	public User findUser(User user){
		return (User)this.userDao.findUser(user);
	}
}



编写jsp名为login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@ taglib uri="/struts-tags" prefix="s" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>用户登录</title>
</head>

<script type=text/javascript></script>
<script>
function longin(){
  var name = document.getElementById("UserName").value;
  var password = document.getElementById("UserPassword").value;
  if(name.length==""){
  alert("用户名不能为空");
  return false;
  }else if(password.length<6){
  alert("密码长度不能小于6位");
  return false;
  }else if(password.length>6){
  alert("密码长度不能大于6位");
  }
  return login.submit();
}
</script>

<body>
 <!-- 
    <s:form action="loginUser" method="post">
        <s:textfield name="user.name" label="name" id="username"></s:textfield>
        <s:textfield name="user.password" label="password" id="UserPassword"></s:textfield>
    	<s:submit value="登录"/>	
    </s:form>
          -->
      
     <form action="loginUser" name="login" method="post">
    用户名: <input type="text"  name="user.name" id="UserName"/>
     <br/>
   密码:&nbsp;&nbsp;<input type="password" name="user.password" id="UserPassword"/>
     <br/>
     <input type="button" value="登录" onclick="longin()"/>
     </form>

</body>
</html>


失败页面 error.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@ taglib uri="/struts-tags" prefix="s" %>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
     ------------------>程序失败<--------------------------------
</body>
</html>

注意:如果有什么需要帮助的可以加我QQ503229799 备注:s2sh寻求帮助,我会同意添加好友,另外我有QQ开发群,看我的首页,在群里喊我也行!这只是简单的登录,如果想要整个模块的增删改查的代码,请在本片评价上留言!我会给你们整合一个完整的代码,包括jar包上传····数据库设计····另外加注释·····

接下来咱们开始演示吧~~~~

url输入地址:http://localhost:8088/s2sh/login.jsp

  • 大小: 55.7 KB
  • 大小: 56.4 KB
分享到:
评论
6 楼 高级java工程师 2015-05-25  
文思涌动 写道
楼主新年好。可否再传一遍给我,我没有收到, 不清楚您的邮箱地址是哪个。

最近比较忙,很久没弄博客了,刚看到
5 楼 文思涌动 2015-02-19  
楼主新年好。可否再传一遍给我,我没有收到, 不清楚您的邮箱地址是哪个。
4 楼 高级java工程师 2014-02-26  
文思涌动 写道
楼主传我一个w.ang-chao08@163.com

已给你发到你邮箱
3 楼 文思涌动 2014-02-25  
楼主传我一个w.ang-chao08@163.com
2 楼 EyeJava6688 2012-08-31  
非常不错的例子,希望大家多多关注。
1 楼 DYF123CXL123 2012-05-30  
版主给一个增删改查的全代码!邮箱zzu_dyf@163.com 谢谢!

相关推荐

    S2SH整合 S2SH整合

    S2SH整合指的是Struts2、Spring和Hibernate这三个开源框架的集成应用,它们分别是MVC(Model-View-Controller)架构中的控制层、业务层和数据持久层的优秀解决方案。在Java Web开发中,S2SH整合能提供一个强大、灵活...

    s2sh整合所需jar包大全

    **S2sh整合所需jar包大全** 在Java Web开发领域,Struts 2、Spring 和 Hibernate(简称S2SH)是一种常见的集成框架,用于构建高效、可维护的企业级应用程序。这个压缩包“s2sh整合所需jar包大全”提供了一整套支持...

    s2sh整合实例

    **S2SH整合详解** S2SH,全称为Struts2、Spring和Hibernate的整合,是Java Web开发中一种常见的框架组合,用于构建高效、可维护的Web应用程序。这三个框架分别负责不同的职责:Struts2作为MVC(模型-视图-控制器)...

    s2sh整合详细jar

    本压缩包"**s2sh整合详细jar**"显然是一份包含了这三个框架核心组件的集合,旨在帮助初学者快速搭建SSH整合环境。以下是对每个框架及其整合细节的详细解释: 1. **Struts2**:Struts2是一个基于MVC设计模式的Java ...

    S2SH 整合 导入即可完整包

    **S2SH整合详解** S2SH,全称为Spring、Struts、Hibernate的组合,是经典的Java Web开发框架。这个框架结合了Spring的依赖注入、事务管理,Struts的MVC设计模式,以及Hibernate的对象关系映射(ORM)工具,为开发者...

    s2sh整合所有的jar包

    标题 "s2sh整合所有的jar包" 指的是将Struts、Spring和Hibernate这三种技术集成所需的Java档案(JAR)文件集合在一起,便于在项目开发中快速引用和使用。这种整合通常被称为SSH框架,它是Java Web开发中的一个流行...

    s2sh整合完全包

    【标题】"s2sh整合完全包"指的是一个包含了所有必要组件的压缩文件,用于支持基于Struts2、Spring和Hibernate(简称s2sh)的Web应用开发。这个包简化了开发过程,因为它包含了这三个框架的库文件,使得开发者无需...

    s2sh整合demo源码

    在S2SH整合中,Hibernate 3.5.6版本作为ORM(对象关系映射)工具,允许开发者通过对象模型来操作数据库,而无需编写SQL。它支持懒加载、缓存策略和复杂查询,使得数据库操作更加便捷。 **整合过程** S2SH的整合...

    s2sh整合所需 辅助包

    s2sh整合 所需其他jar包 打包下载 spring-dao.jar mysql-connector-java-5.1.6-bin.jar commons-dbcp.jar cglib-nodep.jar

    最新S2SH整合所需jar包

    这个"最新S2SH整合所需jar包"是开发者为了方便快速搭建基于这三个框架的应用而准备的资源集合。以下是这些标签所代表的框架和它们的主要知识点: 1. **Struts2**:Struts2是一个强大的MVC(Model-View-Controller)...

    S2SH整合demo

    这三者结合,被称为S2SH整合,能够构建出高效、灵活且可维护的Java Web应用程序。 **Struts2框架**: Struts2是Struts1的升级版,它引入了拦截器(Interceptor)的概念,增强了动作(Action)与结果(Result)的...

    s2sh整合实现增删改查源代码(带s2sh整合包)

    这个压缩包提供了实现增删改查功能的源代码,以及完整的S2SH整合包,使得开发者可以直接运行项目,无需从零开始配置环境。 **Struts2** 是一个基于MVC设计模式的Action驱动框架,它负责处理用户的请求,并通过...

    S2SH整合完美教程

    【S2SH整合完美教程】 在Java Web开发中,Struts2、Spring和Hibernate的整合是常见的技术栈,被广泛用于构建MVC架构的应用程序。S2SH整合旨在实现业务逻辑与控制层、持久化层的高效协同,提高代码的可维护性和可...

    S2SH整合的学生宿舍管理系统(对技术有一定的提高)

    【S2SH整合的学生宿舍管理系统】是一个针对Java开发者和学习者设计的项目,它结合了Struts、Spring和Hibernate三个框架,简称S2SH。这个系统不仅提供了对学生宿舍的全面管理功能,还能够帮助开发者提升自己的技能...

    s2sh整合,s2sh

    【s2sh整合详解】 `s2sh` 是一个常见的Web应用程序开发框架的简称,它结合了Struts、Spring和Hibernate这三个流行的开源Java框架。Struts提供了MVC(Model-View-Controller)架构,Spring提供了依赖注入(DI)和...

    S2SH整合_注册_登录

    下面将详细讲解这个"S2SH整合_注册_登录"项目中的关键知识点。 首先,Struts2作为控制器层,负责处理HTTP请求,并将这些请求转发给相应的业务逻辑处理。在注册和登录功能中,Struts2配置文件(struts.xml)定义了...

    ssh三大框架整合s2sh整合总结(struts2.1.8-spring2.5-hibernate3.2)

    在S2SH整合中,Hibernate负责将Java对象持久化到数据库,Spring通过HibernateTemplate或JPA接口与Hibernate进行交互,实现数据的增删改查。 整合步骤: 1. **配置Struts2**:在web.xml中配置Struts2的过滤器,设置...

    S2SH整合jar包

    【S2SH整合详解】 S2SH,全称为Struts2、Hibernate和Spring的整合,是一种常见的Java Web开发框架组合,用于构建高效、灵活的企业级应用程序。这三个组件各自扮演着不同的角色,共同构建了一个强大的MVC(Model-...

    s2sh整合lib

    如果在描述中提到"S2SH整合lib缺数据库驱动自己视情况去下载",这意味着在进行S2SH整合时,可能缺少了对应数据库的JDBC驱动。例如,如果你的项目连接的是MySQL数据库,那么需要下载并添加`mysql-connector-java`的...

    S2SH整合的jar

    这个"S2SH整合的jar"文件可能是为了方便开发者快速搭建基于这三个框架的项目而制作的。 标题中的"S2SH整合的jar"意味着这个文件包含Struts2、Spring和Hibernate的核心库以及可能的整合配置,旨在帮助开发者避免繁琐...

Global site tag (gtag.js) - Google Analytics