`

Struts2-Spring2.5_Hibernate3.2整合示例(简单注册)

阅读更多

用Struts2-Spring2.5_Hibernate3.2实现一个非常非常简单的登录注册示例,附件中有项目的源码。加入相应的包后,就可以直接使用

项目的结构如下:

如附件中图片所示。

下面就一步一步进行说明

1)首先需要将Struts2、Spring2.5、Hibernate3.2所需要的jar包全部导入到项目中(本例中Hibernate3.2用的是MyEclipse自带的jar包,如何导入请查看其他博文,相关文章都有介绍)

2)配置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">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
    <!-- 配置spring的监听器 -->
    <!-- 
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext*.xml</param-value>
    </context-param>
        如果Spring配置文件在/WEB-INF下,则用上面的内容进行配置,如果Spring配置文件直接放在工程src下,则用下面的
        内容进行配置
     -->
   <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath*:applicationContext-*.xml</param-value>
     </context-param>
     <!-- 开启监听 -->
  <listener>
         <listener-class>
             org.springframework.web.context.ContextLoaderListener
         </listener-class>
     </listener>
     <!-- 配置OpenSessionInViewFilter,必须在struts2监听之前 -->
    <filter>
       <filter-name>hibernateFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
        <!-- 设置监听加载上下文 -->
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
     <filter-name>hibernateFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern> 	
  </filter-mapping>
</web-app>

 

3)编写model类---User

package com.chenfei.model;

public class User {
   private Long id;
   private String username;
   private String password;
public String getUsername() {
	return username;
}
public void setUsername(String username) {
	this.username = username;
}
public String getPassword() {
	return password;
}
public void setPassword(String password) {
	this.password = password;
}
public void setId(Long id) {
	this.id = id;
}
public Long getId() {
	return id;
}
}

 

 

4)编写Struts Action

      

package com.chenfei.action;

import com.chenfei.model.User;
import com.chenfei.service.LoginManager;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	private User user;
	private LoginManager loginManager;

	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		if(loginManager.isLogin(user.getUsername(),user.getPassword()))
				return "success";
		else
			return "error";
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public LoginManager getLoginManager() {
		return loginManager;
	}
	public void setLoginManager(LoginManager loginManager) {
		this.loginManager = loginManager;
	}
}

 

5)编写业务处理层(尽量是面向接口的编程)

  

package com.chenfei.service;

public interface LoginManager {
	public boolean isLogin(String username,String password);

}

 

上面是接口,下面是他的实现

   

package com.chenfei.service;

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

import com.chenfei.dao.UserDao;
import com.chenfei.model.User;

public class LoginManagerImpl implements LoginManager {
	private User user;//需要注入一个
	private UserDao userDao;
	public boolean isLogin(String username, String password) {
		// TODO Auto-generated method stub

		if(username!=null&&password!=null&&!username.equals("")&&!password.equals(""))
		{
			user.setUsername(username);
			user.setPassword(password);
			userDao.addUser(user);
			return true;
		}
		else
		{
			System.out.println("~~~~~~~~~~~~~~~~~~Wrong~~~~~~~~~~~~~~~~~");
			return false;
		}
	}
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	public UserDao getUserDao() {
		return userDao;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}


}

 

 

6)编写Dao(尽量是面向接口的编程)

package com.chenfei.dao;

import com.chenfei.model.User;

public interface UserDao {
	public void addUser(User user);

}

 

 

上面是接口,下面是他的实现

package com.chenfei.dao;

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

import com.chenfei.model.User;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
//继承自HibernateDaoSupport 
	public void addUser(User user) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().save(user);

	}

}

 

7)为了测试AOP,编写一个简单的切面

package com.chenfei.aspect;

public class CheckUser {
	public void beforeLogin()
	{
		System.out.println("登录前的状态");
	}
	public void afterLogin()
	{
		System.out.println("登录后的状态");
	}

}

 

 

 8)配置Struts的配置文件

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts> 
    <package name="default" extends="struts-default" >	
       <action name="login" class="loginAction">
          <result>/welcome.jsp</result>
          <result name="error">/error.jsp</result>
       </action>
    </package>      
</struts>

 

 

9)编写Spring的配置文件applicationContext-bean.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-2.5.xsd 
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
  
  <bean id="user" class="com.chenfei.model.User">
  </bean>

   <bean id="loginAction" class="com.chenfei.action.LoginAction"
        scope="prototype">
        <property name="loginManager" ref="loginManager"></property>
        <property name="user" ref="user">
        </property>
    </bean>
    
     <bean id="loginManager" class="com.chenfei.service.LoginManagerImpl">
          <property name="user" ref="user"></property>
          <property name="userDao" ref="userDao"></property> 
       </bean>
       
      <bean id="userDao" class="com.chenfei.dao.UserDaoImpl">
           <property name="sessionFactory" ref="sessionFactory"></property>
      </bean> 
       
       <!-- 显示AOP的用法 -->
       <bean id="checkUser" class="com.chenfei.aspect.CheckUser"></bean>
       <aop:config>
          <aop:aspect ref="checkUser">
               <aop:pointcut id="check" expression="execution(* *.isLogin(..))"/>
               <aop:before method="beforeLogin"  pointcut-ref="check"/>
               <aop:after method="afterLogin"  pointcut-ref="check"/>
          </aop:aspect>
       </aop:config> 
  
        <!-- 配置sessionFactory -->         
       <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation">
                <value>classpath:hibernate.cfg.xml</value>
            </property>
       </bean>
       
        <!-- 事务管理器 --> 
      <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
         <property name="sessionFactory" ref="sessionFactory"/>
      </bean>
      
      <!-- 配置事务传播特性,本例仅以配置add开始的方法,事务传播特性为required -->
      <tx:advice id="txAdvice" transaction-manager="transactionManager">
          <tx:attributes>
              <tx:method name="add*" propagation="REQUIRED"/>
          </tx:attributes>
      </tx:advice>
      
      <!-- 配置哪些类的方法参与事务,当前com.chenfei.dao包中的子包,
                             类中所有方法需要,还需要参考tx:advice的设置 -->
      <aop:config>
         <aop:pointcut id="addManagerMethod" expression="execution(* com.chenfei.dao.*.*(..))"/><!--expression写的时候一定注意,否则会出现问题-->
         <aop:advisor advice-ref="txAdvice" pointcut-ref="addManagerMethod"/>
      </aop:config>

</beans>

 

10)编写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>
		<property name="connection.username">root</property>
		<property name="connection.url">
			jdbc:mysql://localhost:3306/user
		</property>
		<property name="dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="myeclipse.connection.profile">
			MyDriver
		</property>
		<property name="connection.password">113801</property>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="current_session_context_class">thread</property>
		<mapping resource="./User.hbm.xml" />

	</session-factory>

</hibernate-configuration>

 

                                                            User.hbm.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">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping package="com.chenfei.model">
    <class name="User" table="user">
        <id name="id" type="long">
            <column name="id" />
            <generator class="increment"></generator>
        </id>
        <property name="username" type="string">
            <column name="username" length="45" not-null="true" />
        </property>
        <property name="password" type="string">
            <column name="password" length="45" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

  

11)相关页面

                                                                login.jsp

        

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>登陆</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
     <form action="login" method="post">
       <s:textfield name="user.username" label="用户名"></s:textfield> 
       <s:password name="user.password" label="密码"></s:password>
       <s:submit value="submit" align="left"></s:submit>
     </form>
  </body>
</html>

 

                                                                  error.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>欢迎您的光临</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
         登录错误,请检查您的用户名跟密码,<a href="login.jsp">重新登录。</a>
  </body>
</html>

 

                                                                   welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>欢迎您的光临</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
            欢迎您,<s:property value="user.username"/>
            <s:debug></s:debug>
  </body>
</html>

 

经过以上步骤,就可实现一个非常非常弱智的注册系统~~

  • 大小: 35.2 KB
分享到:
评论

相关推荐

    struts2+spring2.5+Hibernate3.2整合示例

    Struts2、Spring和Hibernate是Java Web开发中的三...以上就是关于“Struts2+Spring2.5+Hibernate3.2整合示例”的主要知识点,这个整合实例涵盖了Java Web开发中的重要技术,对于开发者来说,深入学习和实践将非常有益。

    struts2+spring2.5+hibernate3.2

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,被称为SSH(Struts2、Spring、Hibernate)集成。这个整合包可能是为了帮助开发者快速搭建基于这些技术的项目环境。 Struts2是MVC(Model-View-...

    Struts1.2+Spring2.5+Hibernate3.2框架搭建(一)

    文档"Struts1.2+Spring2.5+Hibernate3.2框架搭建(周禄康).doc"和"Struts1.2+Spring2.5+Hibernate3.2框架搭建(原版)(周禄康).doc"可能包含了详细的步骤和示例代码,帮助读者理解如何实际操作。"Struts+...

    struts2-spring2.5-hibernate3.3.rar

    Struts2-Spring2.5-Hibernate3.3是一个经典的Java Web开发框架组合,通常被称为SSH框架。这个压缩包提供了这三个框架集成的完整资源,帮助开发者构建基于MVC(Model-View-Controller)架构的高效、可维护的Web应用...

    struts2+spring2.5+hibernate3.2所需的包

    Struts2、Spring2.5和Hibernate3.2是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。下面将详细解释这三个框架以及它们如何协同工作。 **Struts2** 是一个基于MVC(Model-View-...

    Struts2 + Spring 2.5 + Hibernate 3.2 整合文档及事例程序

    Struts2、Spring和Hibernate是Java企业级开发中三大核心框架,它们的整合应用被称为SSH(Struts2-Spring-Hibernate)集成。本教程旨在帮助开发者理解如何在Eclipse环境中搭建一个基于SSH的完整应用程序。 Struts2是...

    struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合笔记(二)

    以上是关于"struts2.1.8+spring2.5+hibernate3.2+ext3.0框架整合"的主要知识点,整合过程涉及到多个层次的配置和调优,对于开发者来说,理解这些框架的核心原理和整合机制至关重要。在实际项目中,根据具体需求选择...

    (struts2_spring2.5_hibernate3)ssh完整可运行示例呵呵

    这个是一个完全可运行的struts+spring+hibernate的运行程序,呵呵,都是网上找的,只是针对了ssh,当然,其实大家都可以去下,不过给大家弄来,呵呵,希望不要介意.对于大家学习struts2+spring2.5+hibernate3

    Java SSH框架整合搭建Web系统(Struts1.2+Spring2.5+Hibernate3.2)

    ### Java SSH框架整合搭建Web系统(Struts1.2+Spring2.5+Hibernate3.2) #### 一、准备工作 在开始构建基于Struts1.2+Spring2.5+Hibernate3.2的Web应用之前,需要进行一系列的基础设置工作。 **1.1 创建工程** ...

    SSH实用整合例子,Struts2+spring2.5+Hibernate3.2

    5. **整合步骤**:将Struts2的Action实例和Hibernate的DAO注入到Spring容器中,Struts2的动作映射指向Spring管理的Action,Hibernate的DAO通过Spring获取Session工厂进行数据库操作。 6. **创建示例应用**:创建一...

    struts2.0 spring2.5 hibernate3.2 注解最新框架

    Struts2.0、Spring2.5和Hibernate3.2是经典的Java企业级开发框架,它们在2000年代末至2010年初广泛应用于构建大型Web应用程序。这三大框架的集成提供了完整的MVC(Model-View-Controller)架构,支持服务层和持久层...

    SSH(struts2.0.16+spring2.5+hibernate3.2)简单示例 MyEclipse7 sqlserver2005 附数据库

    struts2最新版本,内含APACHE官网下载struts核心jar包,附数据库文件,MyEclipse 7.0开发,使用struts2 iterator标签,绝对是初学SSH的绝佳范例,互联网上仅此一份,没有更全的 注:如果自己用tomcat重新部署,需...

    struts1+spring2.5+hibernate3.0集成带数据库

    Struts1、Spring2.5和Hibernate3.0是Java Web开发中经典的SSH(Spring、Struts、Hibernate)集成框架的三个组件,它们在2000年代末期至2010年代初广泛应用于企业级应用开发。SSH框架组合为开发者提供了模型-视图-...

    struts2.3.2_spring3.2_hibernate_4.1整合

    Struts2、Spring3.2和Hibernate4.1是Java Web开发中三个非常重要的框架,它们的整合在Java EE应用程序中被广泛使用,为开发者提供了强大的MVC(模型-视图-控制器)架构支持,以及服务层管理和持久化管理的能力。...

    struts2+spring2.5+hibernate3整合

    Struts2、Spring2.5和Hibernate3是Java Web开发中的三大框架,它们各自负责不同的职责,协同工作可以实现高效且灵活的企业级应用。这里我们将深入探讨这三个框架整合的细节,以及如何在Oracle Database 10g Express ...

    struts2+spring2.5+hibernate3.1登陆示例

    这是一个struts2+spring2.5+hibernate3.1整合登陆示例,适合于初学struts2.0的学者,数据库用的是mysql,具体的数据库文件在压缩包里,由于上传文件大小有限制,所以我把里面的lib包给删除了,读者可以自己加上去,...

    Struts2+Spring2.5+Hibernate3.3整合开发

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合应用极大地提升了开发效率和项目的可维护性。这篇文章将深入探讨如何将Struts2、Spring2.5和Hibernate3.3集成到一个项目中,以及它们各自的核心...

    整合Struts2,Spring2.5,Hibernate3.3操作参考

    **整合Struts2、Spring2.5与Hibernate3.3操作参考** 在Java Web开发中,Struts2、Spring和Hibernate是三个非常重要的框架,它们分别负责MVC(Model-View-Controller)模式中的控制层、业务逻辑层和服务数据访问层。...

    在Netbeans中使用Struts2.0+Spring2.5+Hibernate框架

    本文旨在通过一个简单的登录示例项目,详细介绍如何在Netbeans IDE环境下构建基于Struts2.0、Spring2.5与Hibernate框架的应用程序。 #### 二、环境搭建与准备 ##### 1. 软件需求 - JDK 1.6:确保安装了正确的Java...

Global site tag (gtag.js) - Google Analytics