整合SSH--登陆注册

  

//数据库映射 HibernateSpring整合

//1.bean

package org.yeeku.model;

 

import java.io.Serializable;

 

public class User implements Serializable

{

       private int id;

       private String user;

       private String pass;

       private String email;

 

       public void setId(int id)

       {

              this.id = id;

       }

       public int getId()

       {

               return this.id;

       }

 

       public void setUser(String user)

       {

              this.user = user;

       }

       public String getUser()

       {

               return this.user;

       }

 

       public void setPass(String pass)

       {

              this.pass = pass;

       }

       public String getPass()

       {

               return this.pass;

       }

 

       public void setEmail(String email)

       {

              this.email = email;

       }

       public String getEmail()

       {

               return this.email;

       }

 

}

 

//2.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC

       "-//Hibernate/Hibernate Mapping DTD//EN"

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

 

<hibernate-mapping package="org.yeeku.model">

       <class name="User"   table="user_tabler">

              <id    name="id" column="user_id">

                     <generator class="identity"/>

              </id>

              <property name="user" column="user_name" not-null="true" length="50" unique="true"/>

              <property name="pass" column="user_pass" not-null="true" length="50"/>

              <property name="email" length="100"/>

       </class>     

</hibernate-mapping>

 

//3.applicationContext.xml

<?xml version="1.0" encoding="GBK"?>

<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.xsd">

 

       <!-- 定义数据源Bean,使用C3P0数据源实现 -->

       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

              <!-- 指定连接数据库的驱动 -->

              <property name="driverClass" value="com.mysql.jdbc.Driver"/>

              <!-- 指定连接数据库的URL -->

              <property name="jdbcUrl" value="jdbc:mysql://localhost/reg_login"/>

              <!-- 指定连接数据库的用户名 -->

              <property name="user" value="root"/>

              <!-- 指定连接数据库的密码 -->

              <property name="password" value="root"/>

              <!-- 指定连接数据库连接池的最大连接数 -->

              <property name="maxPoolSize" value="20"/>

              <!-- 指定连接数据库连接池的最小连接数 -->

              <property name="minPoolSize" value="1"/>

              <!-- 指定连接数据库连接池的初始化连接数 -->

              <property name="initialPoolSize" value="1"/>

              <!-- 指定连接数据库连接池的连接的最大空闲时间 -->

              <property name="maxIdleTime" value="20"/>

       </bean>

 

    <!--定义了HibernateSessionFactory -->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource" ref="dataSource"/>

        <property name="hibernateProperties">

            <props>

                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

                <prop key="show_sql">true</prop>

                <prop key="hibernate.hbm2ddl.auto">update</prop>

                <prop key="hibernate.jdbc.batch_size">20</prop>

            </props>

        </property>

        <property name="mappingResources">

            <list>

                            <value>org/yeeku/model/User.hbm.xml</value>

            </list>

        </property>

    </bean>

 

</beans>

 

//4.web.xml

<?xml version="1.0" encoding="GBK"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

    version="2.4">

 

       <!-- 用于初始化Spring容器的Listener -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

 

</web-app>

 

 

//添加底层和逻辑层

//5底层DAO interface

package org.yeeku.dao;

 

import java.util.List;

import org.yeeku.model.*;

 

public interface UserDao {

    /**

     * 根据id查找用户

     * @param id 需要查找的种类id

     */ 

    User get(int id);

 

    /**

     * 增加种类

     * @param user 需要增加的种类

     */      

    void save(User user);

 

    /**

     * 修改用户

     * @param user 需要修改的用户

     */ 

    void update(User user);

 

    /**

     * 删除用户

     * @param id 需要删除的用户id

     */ 

    void delete(int id);

 

    /**

     * 删除用户

     * @param user 需要删除的用户

     */ 

    void delete(User user);

 

    /**

     * 查询全部用户

     * @return 获得全部用户

     */

    List<User> findAll();

 

    /**

     * 根据用户名,密码查找用户

     * @param user 查询所需的用户名

     * @param pass 查询所需的密码

     * @return 对应的用户

     */

    User findUserByNameAndPass(String user , String pass);

 

    /**

     * 根据用户名查找用户

     * @param user 查询所需的用户名

     * @return 对应的用户

     */

    User findUserByName(String user);

}

 

//6底层DAO impl

package org.yeeku.dao.hibernate;

 

import java.util.List;

import java.util.ArrayList;

import java.util.Iterator;

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

import org.yeeku.model.*;

import org.yeeku.dao.*;

 

public class UserDaoHibernate extends HibernateDaoSupport implements UserDao 

{

    /**

     * 根据id查找用户

     * @param id 需要查找的用户id

     */ 

    public User get(int id){

        return (User)getHibernateTemplate().get(User.class , id);

    }

 

    /**

     * 增加用户

     * @param user 需要增加的用户

     */      

    public void save(User user){

        getHibernateTemplate().save(user);

    }

 

    /**

     * 修改用户

     * @param user 需要修改的用户

     */ 

    public void update(User user){

        getHibernateTemplate().saveOrUpdate(user);

    }

 

    /**

     * 删除用户

     * @param id 需要删除的用户id

     */ 

    public void delete(int id){

        getHibernateTemplate().delete(getHibernateTemplate().get(User.class , id));

    }

 

    /**

     * 删除用户

     * @param user 需要删除的用户

     */ 

    public void delete(User user){

        getHibernateTemplate().delete(user);

    }

 

    /**

     * 查询全部用户

     * @return 获得全部用户

     */

    public List<User> findAll(){

        return (List<User>)getHibernateTemplate().find("from User");

    }

 

    /**

     * 根据用户名,密码查找用户

     * @param username 查询所需的用户名

     * @param pass 查询所需的密码

     * @return 对应的用户

     */

    public User findUserByNameAndPass(String user , String pass){

        List ul = getHibernateTemplate().find("from User au where au.user = ? and au.pass = ?" , new String[]{user , pass});

        if (ul != null && ul.size() >= 1){

            return (User)ul.get(0);

        }

        return null;

    }

 

    /**

     * 根据用户名查找用户

     * @param user 查询所需的用户名

     * @return 对应的用户

     */

    public User findUserByName(String user){

        List ul = getHibernateTemplate().find("from User au where au.user = ?" , user);

        if (ul != null && ul.size() >= 1){

            return (User)ul.get(0);

        }

        return null;

    }

 

}

 

//7逻辑层Service interface

package org.yeeku.service;

 

import java.util.List;

import org.yeeku.dao.*;

 

public interface UserManager{

    /**

     * 新增用户

     * @param user 新增用户的用户名

     * @param pass 新增用户的密码

     * @param email 新增用户的电子邮件

     * @return 新增用户的主键

     */

    int addUser(String user , String pass , String email)

              throws Exception;

 

    /**

     * 验证用户登陆

     * @param user 需要登陆的用户名

     * @param pass 需要登陆的密码

     * @return 是否登陆成功

     */

    int loginValid(String user , String pass)

              throws Exception;

 

    /**

     * 验证用户名是否可用,如果系统中已有该用户名,则不可用。

     * @param user 需要验证的用户名

     * @return 用户名是否可用

     */

       boolean validateName(String user)

              throws Exception;

}

 

//8逻辑层Service impl

package org.yeeku.service.impl;

 

import org.yeeku.dao.*;

import org.yeeku.model.*;

import org.yeeku.service.UserManager;

 

public class UserManagerImpl implements UserManager{

       private UserDao userDao;

       public void setUserDao(UserDao userDao){

              this.userDao = userDao;

       }

 

    /**

     * 新增用户

     * @param user 新增用户的用户名

     * @param pass 新增用户的密码

     * @param email 新增用户的电子邮件

     * @return 新增用户的主键

     */

       public int addUser(String user , String pass , String email) throws Exception{

              try{

                     User u = new User();

                     u.setUser(user);

                     u.setPass(pass);

                     u.setEmail(email);

                     userDao.save(u);

                     return u.getId();

              }catch (Exception e){

                     e.printStackTrace();

                     throw new Exception("新增用户时出现异常");

              }

       }

 

    /**

     * 验证用户登陆

     * @param user 需要登陆的用户名

     * @param pass 需要登陆的密码

     * @return 是否登陆成功

     */

       public int loginValid(String user , String pass) throws Exception{

              try{

                     User u = userDao.findUserByNameAndPass(user , pass);

                     if (u != null){

                            return u.getId();

                     }

              }catch (Exception e){

                     e.printStackTrace();

                     throw new Exception("验证用户登陆时出现异常");

              }

              return -1;

       }

 

    /**

     * 验证用户名是否可用,如果系统中已有该用户名,则不可用。

     * @param user 需要验证的用户名

     * @return 用户名是否可用

     */

       public boolean validateName(String user) throws Exception{

              try{

                     if (userDao.findUserByName(user) == null){

                            return true;

                     }

                     return false;

              }catch (Exception e){

                     throw new Exception("验证用户名是否有效出错!");

              }

       }

 

}

//Struts2和Spring整合 逻辑层和spring整合

//9实现ICO容器,将dao层注入到Service层,将Service层以mgr名放入Spring容器

<?xml version="1.0" encoding="GBK"?>

<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.xsd">

 

       <!-- 定义数据源Bean,使用C3P0数据源实现 -->

       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

              <!-- 指定连接数据库的驱动 -->

              <property name="driverClass" value="com.mysql.jdbc.Driver"/>

              <!-- 指定连接数据库的URL -->

              <property name="jdbcUrl" value="jdbc:mysql://localhost/reg_login"/>

              <!-- 指定连接数据库的用户名 -->

              <property name="user" value="root"/>

              <!-- 指定连接数据库的密码 -->

              <property name="password" value="root"/>

              <!-- 指定连接数据库连接池的最大连接数 -->

              <property name="maxPoolSize" value="20"/>

              <!-- 指定连接数据库连接池的最小连接数 -->

              <property name="minPoolSize" value="1"/>

              <!-- 指定连接数据库连接池的初始化连接数 -->

              <property name="initialPoolSize" value="1"/>

              <!-- 指定连接数据库连接池的连接的最大空闲时间 -->

              <property name="maxIdleTime" value="20"/>

       </bean>

 

    <!--定义了HibernateSessionFactory -->

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

        <property name="dataSource" ref="dataSource"/>

        <property name="hibernateProperties">

            <props>

                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

                <prop key="show_sql">true</prop>

                <prop key="hibernate.hbm2ddl.auto">update</prop>

                <prop key="hibernate.jdbc.batch_size">20</prop>

            </props>

        </property>

        <property name="mappingResources">

            <list>

                            <value>org/yeeku/model/User.hbm.xml</value>

            </list>

        </property>

    </bean>

 

<!-- 事务管理器 -->

    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

 

<!-- 事务拦截器 -->

    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">

           <!--  事务拦截器bean需要依赖注入一个事务管理器 -->

        <property name="transactionManager" ref="transactionManager"/>

        <property name="transactionAttributes">

                  <!--  下面定义事务传播属性-->

                  <props>

                         <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>

                      <prop key="*">PROPAGATION_REQUIRED</prop>

                  </props>

           </property>

       </bean>

 

    <!-- 定义BeanNameAutoProxyCreator-->

    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

           <!--  指定对满足哪些bean namebean自动生成业务代理 -->

           <property name="beanNames">

            <!--  下面是所有需要自动创建事务代理的bean-->

            <list>

                <value>mgr</value>

            </list>

            <!--  此处可增加其他需要自动创建事务代理的bean-->

           </property>

        <!--  下面定义BeanNameAutoProxyCreator所需的事务拦截器-->

        <property name="interceptorNames">

            <list>

                <!-- 此处可增加其他新的Interceptor -->

                <value>transactionInterceptor</value>

            </list>

        </property>

    </bean>

 

    <bean id="mgr" class="org.yeeku.service.impl.UserManagerImpl">

        <property name="userDao" ref="userDao"/>

    </bean>

 

    <bean id="userDao" class="org.yeeku.dao.hibernate.UserDaoHibernate">

       <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

 

</beans>

 

 

//Struts2和Spring整合 应用层和spring整合

//10.JSP登陆页面

<%@ page contentType="text/html; charset=GBK"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<html>

       <head>

              <title>用户登陆</title>

       </head>

       <body>

              <center>

              <h3>请输入用户名和密码来登陆</h3>

              如果还没有注册,单击此处<a href="Regist.jsp">注册</a>

              <s:actionerror/>

              <s:form action="Login.action">

                     <s:textfield name="user" label="用户名"/>

                     <s:textfield name="pass" label="密码"/>

                     <s:submit value="登陆"/>

              </s:form>

              </center>

       </body>

</html>

 

//11.加载Struts2

<?xml version="1.0" encoding="GBK"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

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

    version="2.4">

 

       <!-- 用于初始化Spring容器的Listener -->

    <listener>

        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

    </listener>

 

       <filter>  

        <filter-name>struts2</filter-name>  

        <filter-class>  

            org.apache.struts2.dispatcher.FilterDispatcher  

        </filter-class>  

    </filter>  

    <filter-mapping>  

        <filter-name>struts2</filter-name>  

        <url-pattern>/*</url-pattern>  

    </filter-mapping>

   

  <welcome-file-list>

    <welcome-file>Login.jsp</welcome-file>

  </welcome-file-list>  

</web-app>

 

//12从容器中取出名为mgrService

package org.yeeku.action.base;

 

import com.opensymphony.xwork2.ActionSupport;

import org.yeeku.service.UserManager;

 

public class BaseAction extends ActionSupport

{

    protected UserManager mgr;

 

    public void setMgr(UserManager mgr)

    {

        this.mgr = mgr;

    }

}

 

//13登陆的action  继承取出ServiceBaseAction类来调用mgr

package org.yeeku.action;

 

import com.opensymphony.xwork2.ActionContext;

import java.util.*;

import org.yeeku.action.base.BaseAction;

 

 

public class LoginAction extends BaseAction

{

       private String user;

       private String pass;

 

 

       public String execute() throws Exception

       {

        if (null != user && null != pass)

        {

            int userId = mgr.loginValid(user , pass);

            if (userId > 0){

                return "input";

            }

            else{

                addActionError("用户名/密码不匹配");

            }

        }

        else{

                     addActionError("验证码不匹配,请重新输入");

        }

              return "failure";

       }

 

       public void setUser(String user)

       {

              this.user = user;

       }

       public String getUser()

       {

               return this.user;

       }

 

       public void setPass(String pass)

       {

              this.pass = pass;

       }

       public String getPass()

       {

               return this.pass;

       }

 

}

 

 

//14success.jsp

<%@ page contentType="text/html; charset=utf-8"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<html>

<head>

   <title>注册/登陆成功</title>

</style>

</head>

<body>

<center>

注册/登陆成功<br>

</center>

</body>

</html>

 

//15error.jsp

<%@ page contentType="text/html; charset=GBK"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

   <title>出错提示页</title>

</style>

</head>

<body>

<TABLE width="780" align="center" CELLSPACING=0 background="images/bodybg.jpg">

<tr>

       <td height="39" valign=top>

       <br><div align="center"><font color="#FF0000" size="+1"><b>系统处理过程中发生了一个错误,信息如下:</b></font></div>

       </td>

</tr>

<tr>

       <td height="100" valign=top>

       <s:property value="exception.message"/>

       <span style="color:red;font:9pt bold"><s:property value="exception.message"/></span>

       </td>

</tr>

<tr>

       <td valign=top><div align="center" style="font:10pt">请您先核对输入,如果再次出现该错误,请与站长联系。kongyeeku@163.com 谢谢。</div><br></td>

</tr>

</table>

</body>

</html>

 

//16注册的页面

<%@ page contentType="text/html; charset=GBK"%>

<%@taglib prefix="s" uri="/struts-tags"%>

<html>

       <head>

              <title>用户注册</title>

       </head>

       <body>

              <center>

              <h3>请输入注册信息</h3>

              <s:actionerror/>

              <s:form action="Regist.action">

                     <s:textfield name="user" label="用户名"/>

                     <s:textfield name="pass" label="密码"/>

                     <s:textfield name="email" label="电邮"/>

                     <s:submit value="注册"/>

              </s:form>

              </center>

       </body>

</html>

 

//17注册的action  继承取出ServiceBaseAction类来调用mgr

package org.yeeku.action;

 

import com.opensymphony.xwork2.ActionContext;

import java.util.*;

import org.yeeku.action.base.BaseAction;

 

 

public class RegistAction extends BaseAction

{

       private String user;

       private String pass;

       private String email;

 

 

       public String execute() throws Exception

       {

        if (null != user && null != pass){

                     if (mgr.addUser(user, pass , email) > 0){

                            return "input";

                     }else{

                            addActionError("注册失败,请重试!");

                            return "failure";

                     }

        }

        else{

                     addActionError("验证码不匹配,请重新输入");

        }

              return "failure";

       }

 

 

       public void setUser(String user)

       {

              this.user = user;

       }

       public String getUser()

       {

               return this.user;

       }

 

       public void setPass(String pass)

       {

              this.pass = pass;

       }

       public String getPass()

       {

               return this.pass;

       }

 

       public void setEmail(String email)

       {

              this.email = email;

       }

       public String getEmail()

       {

               return this.email;

       }

 

}

 

//18struts.xml

<?xml version="1.0" encoding="GBK"?>

<!DOCTYPE struts PUBLIC

        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="lee" extends="struts-default">

              <action name="Login" class="org.yeeku.action.LoginAction">

                     <result name="input">/success.jsp</result>      

                     <result name="failure">/error.jsp</result>

        </action>

        <action name="Regist" class="org.yeeku.action.RegistAction">

                     <result name="input">/success.jsp</result>      

                     <result name="failure">/error.jsp</result>

        </action>

    </package>

</struts>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值