`

登录系统-基于struts2+spring+hibernate分层架构

阅读更多

1、创建mysql数据库,结构如下图所示:

 



 

2、新建数据连接:

 



 

3、新建NetBeans项目,在第四步“框架”中选择“Spring Web MVC”、“Struts2和“Hibernate”选项,如果IDE不包含“Struts2选项,则需要下载插件安装:

 



  

系统自动生成如下配置文件:web.xmlapplicationContext.xmlhibernate.cfg.xmlstruts.xmldispatcher-servlet.xml

web.xml中的重要内容

<context-param>配置引入spring配置文件applicationContext.xml

<context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>/WEB-INF/applicationContext.xml</param-value>

</context-param>

Struts2过滤器:

<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>

<filter-mapping>修改为:

       <filter-mapping>

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

        <url-pattern>*.action</url-pattern>

</filter-mapping>

<filter-mapping>

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

        <url-pattern>*.jsp</url-pattern>

</filter-mapping>

删除web.xml中的dispatcher<servlet>配置:

<servlet>

        <servlet-name>dispatcher</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <load-on-startup>2</load-on-startup>

    </servlet>

    <servlet-mapping>

        <servlet-name>dispatcher</servlet-name>

        <url-pattern>*.htm</url-pattern>

</servlet-mapping>

删除dispatcher-servlet.xml文件及JSP文件夹。

 

hibernate.cfg.xml:配置了数据源

<hibernate-configuration>

  <session-factory>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/book</property>

    <property name="hibernate.connection.username">root</property>

    <property name="hibernate.connection.password">123456</property>

  </session-factory>

</hibernate-configuration>

4、创建如下的包结构:

 



 

5、新建hibernate逆向工程:注意在hibernate.cfg.xml文件中连接数据库的语句一定要正确,如果在hibernate.cfg.xml文件中没有下面的语句,则一定要加入,否则无法找到可用表。

<property name="hibernate.connection.password">********</property>

 



  

6、通过“”新建“Hibernate映射文件”和POJO

 



  

完成后新增了Admin类:

public class Admin  implements java.io.Serializable {

 

     private int UId;

     private String UName;

     private String UPass;

 

    public Admin() {

    }

      

    public Admin(int UId) {

        this.UId = UId;

    }

    public Admin(int UId, String UName, String UPass) {

       this.UId = UId;

       this.UName = UName;

       this.UPass = UPass;

    }

  

    public int getUId() {

        return this.UId;

    }

   

    public void setUId(int UId) {

        this.UId = UId;

    }

    public String getUName() {

        return this.UName;

    }

   

    public void setUName(String UName) {

        this.UName = UName;

    }

    public String getUPass() {

        return this.UPass;

    }

   

    public void setUPass(String UPass) {

        this.UPass = UPass;

    }

}

 

新增了Admin.hbm.xml映射文件,给出数据库book中的数据表admin和类Admin之间的映射关系:

<hibernate-mapping>

    <class name="book.model.Admin" table="admin" catalog="book">

        <id name="UId" type="int">

            <column name="u_id" />

            <generator class="assigned" />

        </id>

        <property name="UName" type="string">

            <column name="u_Name" length="20" />

        </property>

        <property name="UPass" type="string">

            <column name="u_Pass" length="20" />

        </property>

    </class>

</hibernate-mapping>

hibernate.cfg.xml文件中增加了映射语句:

<mapping resource="book/model/Admin.hbm.xml"/>

7、在applicationContext.xml文件中添加如下语句,创建“sessionFactory”工厂,整合HibernateSpring

 

<bean id="sessionFactory"

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

        <!--确定配置文件hibernate.cfg.xml的位置-->

        <property name="configLocation">

            <value>classpath:hibernate.cfg.xml</value>

        </property>

    </bean>

8、在idao包中新建IUserDao接口,完成系统的DAO规范(面向数据):

package book.idao;

import book.model.Admin;

import java.util.List;

public interface IUserDao {

    Admin getAdmin(Integer id);

    Admin getAdmin(String usernaem);

    Admin getAdmin(String username,String password);

    List getAdmins(String username);

    List getAll();

    void saveAdmin(Admin admin);

    void removeAdmin(String username);

    void removeAdmin(Integer id);

}

iservice包中新建IUserService接口,完成系统的业务逻辑规范(面向应用):

package book.iservice;

 

import book.model.Admin;

import java.util.List;

public interface IUserService {

    Admin findAdmin(String username);

    List findAdmins(String username);

    void addAdmin(Admin admin);

    void deleteAdmin(Integer id);

    Admin findByUsernameAndPassword(String username,String password);

}

9、实现IUserDao接口:需要继承HibernateDaoSupport,使用HibernateTemplate模板实现DAO接口,需要注意的是queryString查询语句类似SQL查询语句,但queryString查询语句针对的是类和它的属性,这里是AdminUNameUPassUId,而SQL查询语句针对的是数据表和它的字段。

package book.dao;

 

import book.idao.IUserDao;

import book.model.Admin;

import java.util.List;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

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

 

public class UserDao extends HibernateDaoSupport implements IUserDao{

 

    @Override

    public Admin getAdmin(String  username) {       

        String queryString="select o from Admin o where o.UName=?";

        Admin admin=null;

        List list=getHibernateTemplate().find(queryString,username);

        if(!list.isEmpty()){

            admin=(Admin) list.get(0);

        }      

        return admin;

    }

 

    @Override

    public Admin getAdmin(String username, String password) {

        String queryString="select o from Admin o where o.UName=? and o.UPass=?";

        Admin admin=null;

        List list=getHibernateTemplate().find(queryString,username,password);

        if(!list.isEmpty()){

            admin=(Admin) list.get(0);

        }

        return admin;

    }

 

    @Override

    public void saveAdmin(Admin admin) {      

        getHibernateTemplate().saveOrUpdate(admin);

        getHibernateTemplate().flush();

    }

 

    @Override

    public void removeAdmin(String username) {

        getHibernateTemplate().delete(getAdmin(username));

    }

 

    @Override

    public Admin getAdmin(Integer id) {

       

        Admin admin=null;

        admin=(Admin)getHibernateTemplate().get(Admin.class, id);

        return admin;

    }

 

    @Override

    public void removeAdmin(Integer id) {

        getHibernateTemplate().delete(getAdmin(id));

    }

 

    @Override

    public List getAdmins(String username) {

        String queryString="select o from Admin o where o.UName=?";

        List list=getHibernateTemplate().find(queryString,username);

        return list;

    }

 

    @Override

    public List getAll() {

        String queryString="select o from Admin o";

        List list=getHibernateTemplate().find(queryString);

        return list;

    }

}

10、在applicationContext.xml文件中添加如下语句,配置接口注入,实现面向接口IUserDao的编程:

<!--配置DAO组件-->

    <bean id="IUserDao" class="book.dao.UserDao">

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

</bean>

11、实现IUserService接口:

package book.service;

 

import book.idao.IUserDao;

import book.iservice.IUserService;

import book.model.Admin;

import java.util.List;

 

public class UserService implements IUserService{

    private IUserDao idao;

    public void setIUserDao(IUserDao idao){

        this.idao=idao;

    }

    @Override

    public Admin findAdmin(String username) {

        return idao.getAdmin(username);

    }

 

    @Override

    public List findAdmins(String username) {

        return idao.getAdmins(username);

    }

 

    @Override

    public void addAdmin(Admin admin) {

        idao.saveAdmin(admin);

    }

 

    @Override

    public void deleteAdmin(Integer id) {

        idao.removeAdmin(id);

    }

 

    @Override

    public Admin findByUsernameAndPassword(String username, String password) {

        return idao.getAdmin(username, password);

    }

   

}

接口实现类UserService中的setIUserDao方法实现了set注入实现了使用接口IUserDao的编程。

12applicationContext.xml文件中添加如下语句,配置业务逻辑组件:

<!--配置业务逻辑组件的事务代理,使用了bean的继承-->

    <bean id="IUserService"  parent="txProxyTemplate">

        <!--配置事务代理时,指定代理的目标,此处的目标是嵌套bean-->

        <property name="target">

            <!--嵌套bean无需使用id属性-->

            <bean class="book.service.UserService">

                <!--为业务逻辑组件注入DAO组件-->

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

            </bean>

        </property>

    </bean>

 

13applicationContext.xml文件中添加如下语句,配置Hibernate事务管理器:

 

    <!--配置Hibernate对应的事务管理器-->

<bean id="transactionManager"

 class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <!--为事务管理器注入sessionFactory引用-->

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

    </bean>

    <!--定义事务模板类,模板类增加abstract="true"属性-->

    <bean id="txProxyTemplate" abstract="true"

        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

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

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

            <!--配置事务属性-->

            <property name="transactionAttributes">

                <props>

                    <!--所有以add开头的方法的事务属性-->

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

                    <!--所有以delete开头的方法的事务属性-->

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

                    <!--其他方法的事务属性-->

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

                </props>

            </property>

</bean>   

14、创建UserAction.java,实现struts2架构的MVC

package book.action;

import com.opensymphony.xwork2.ActionContext;

import book.iservice.IUserService;

import book.model.Admin;

public class UserAction {

   

    private String userName;

    private String userPassword;

    private String msg;

   

    private IUserService iuserService;

    public void setIUserService(IUserService iuserService){

        this.iuserService=iuserService;

    }

   

    public String execute()throws Exception{

        Admin user=iuserService.findByUsernameAndPassword(userName, userPassword);

        if(user!=null){

            msg="登录成功!"+user.getUName();

            ActionContext.getContext().getSession().put("user",user);

        }else{

            msg="登录失败!<a href=\"JavaScript:window.history.back()\">返回</a>";

        }

        return "msg";

    }

    public void setUserName(String userName){

        this.userName=userName;

    }

    public void setUserPassword(String userPassword){

        this.userPassword=userPassword;

    }

    public String getMsg(){

        return msg;

    }

}

15、在文件中在applicationContext.xml文件中添加如下语句,配置action注入:

<!--配置Struts2Action组件-->

    <bean name="UserAction" class="book.action.UserAction">

        <!--注入IUserService-->

        <property name="IUserService">

            <ref bean="IUserService"/>

        </property>

    </bean>

16、配置struts.xml文件:

<struts>   

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

        <action name="UserAction" class="book.action.UserAction">

            <result name="msg">/index.jsp</result>

        </action>

    </package>

</struts>

17、创建如下两个页面

Login.jsp:

<%@ page pageEncoding="gb2312" %>

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

<% request.setCharacterEncoding("gb2312"); %>

<%@ page language="java" %>

<html>  

         <head><title>登录网页</title></head>

       <body>

       <form method="POST" action="UserAction.action">

 

       <table  >

           <tr>

             <td width="890" align="left" colspan="2">

              <b><font size="5">系统登录</font></b>

               <hr>

             </td>

           </tr>

            <% if (request.getAttribute("error") != null){ %>

       <tr>

              <td width=100% align=center colspan=4 height=36>

                   <font color=red><b><%=request.getAttribute("error")%></b></font>

              </td>

       </tr>

       <%

     }

       %>

           <tr>

             <td width="75" align="center">

               <p align="right">账号:</p>

             </td>

             <td width="809" align="center">

               <p align="left">

                <input type="text" name="userName" size="20"></td>

           </tr>

           <tr>

             <td width="75" align="center">

               <p align="right">密码:</p>

             </td>

             <td width="809" align="center">

               <p align="left">

               <input type="password" name="userPassword" size="20">

               <input type="submit" value="登录" name="loginButton"></td>

           </tr>

         </table>

       </form>

       </body>

       </html>

在这个页面中,下面的form标记语句:

<form method="POST" action="UserAction.action">

表示该页面提交一个名为:"UserAction"action,注意和struts.xml文件中的actionname相对应。

index.jsp:

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>显示信息</title>

    </head>

    <body>

        <h1>Hello World!</h1>

        <div id="content">

            <center>

                <br/><%=request.getAttribute("msg")%>

            </center>

        </div>

    </body>

</html>

该页面的标记语句:

<%=request.getAttribute("msg")%>

表示接收来自actionmsg字符串。

18. 生成项目,并运行http://localhost:8080/login/login.jsp

 

 

分享到:
评论
2 楼 chengeng 2012-10-08  
图片没有显示。
1 楼 zxd543 2012-09-19  
图怎么都看不见呢? 

相关推荐

    基于Struts2+Hibernate+Spring的图片分享网

    该图片分享网基于三大框架实现的,使用的是MyEclipse2016,deng.登录角色分为用户与管理员,用户功能:1、注册、登录、修改个人信息 2、上传、下载、搜索、查看图文,管理员功能:1、注册、登录、修改个人信息 2、...

    轻量级Java EE企业应用实战(第3版)-Struts2+Spring3+Hibernate全本 part1

    《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。  《轻量级Java EE企业...

    Struts_2+Spring_3+Hibernate整合开发.part5.rar

     《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。其中Struts 2升级到2.2.1,Spring升级到3.0.5,Hibernate升级到了...

    Struts2+Spring3+Hibernate

    《轻量级Java EE企业应用实战:Struts2+Spring3+Hibernate整合开发(第3版)》是《轻量级Java EE企业应用实战》的第3版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。  《轻量级Java EE企业...

    struts1+spring+hibernate整合所用全部jar包

    Struts1、Spring和Hibernate是Java Web开发中的三大框架,它们各自解决了一部分问题,而将它们整合在一起,可以构建出高效、灵活的企业级应用程序。这里我们主要探讨这三者整合时所需的核心jar包以及它们的功能。 ...

    Struts1.2+Spring1.2+Hibernate2.0搭建详解

    Struts1.2、Spring1.2和Hibernate2.0是经典的Java企业级开发框架组合,它们分别负责不同的职责,共同构建了一个强大的后端架构。Struts1.2作为MVC(模型-视图-控制器)框架,主要处理前端请求并控制页面展示;Spring...

    权限管理系统struts2+spring+hibernate+mysql

    Struts2、Spring、Hibernate和MySQL是Java Web开发中常用的技术栈,它们组合起来可以构建一个功能完善的权限管理系统。下面将分别介绍这四个组件及其在权限管理中的应用。 1. **Struts2**:Struts2是一个基于MVC...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    通过整合Struts2、Spring与Hibernate,学生成绩管理系统不仅实现了基本的登录、学生信息和成绩管理功能,还通过分页技术增强了用户体验。更重要的是,这一整合展示了如何利用现代Java EE框架构建复杂企业级应用的...

    Dwr2+Struts2+Spring2.5+Hibernate3实战——用户登录注册系统

    Dwr2、Struts2、Spring2.5和Hibernate3各自扮演着关键的角色,共同实现了分层架构,确保各组件专注于自身的核心功能。 Dwr2,即Direct Web Remoting 2,是一个JavaScript到服务器端Java的远程调用框架,主要用于...

    SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip

    SSH是Java开发中的一种经典架构组合,代表Spring、Struts和Hibernate这三个开源框架的结合。在本项目"SSH - SpringMVC4 + Spring4 + Hibernate4 + c3p0 + Mysql.zip"中,开发者使用了SpringMVC4作为表现层,Spring4...

    struts2+hibernate+spring整合的管理系统

    Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用在企业级Web应用开发中极为常见。这个管理系统就是基于这三个框架的集成,提供了高效、灵活且可维护的解决方案。 Struts2作为MVC(Model-View-...

    网上订餐系统(struts+spring+hibernate).rar

    《基于Struts、Spring和Hibernate的网上订餐系统详解》 网上订餐系统是一种便捷的在线服务,它结合了互联网技术与餐饮业,为用户提供方便快捷的订餐体验。本系统采用主流的Java企业级开发框架——Struts、Spring和...

    struts2+spring2.5+hibernate3.3例子(增删改)

    Struts2、Spring2.5和Hibernate3.3是经典的Java Web开发框架组合,它们各自在应用程序的不同层面提供了强大的功能。这个例子展示了如何将这三个框架整合在一起,实现一个简单的图书管理系统的增删改操作。 **Struts...

    struts2+spring+hibernate整合实例

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责Web应用程序的不同层面:Struts2处理表现层逻辑,Spring提供业务层管理和依赖注入,而Hibernate则专注于持久化层,管理数据库交互。将这三者...

    使用struts+spring+hibernate+Mysql架构的在线订餐系统!!!

    本系统采用的是经典的“Struts+Spring+Hibernate+Mysql”架构,也被称为SSH框架,这是一套广泛应用于Java Web开发的技术栈,具有良好的分层设计和组件化特性。 **Struts** 是一个基于MVC(Model-View-Controller)...

    Struts2+Spring2+Hibernate3整合方案

    **Struts2** 是一个基于MVC设计模式的开源框架,它提供了一种分层架构来组织应用,包括Action、Result和Interceptor等组件。Struts2通过拦截器实现了请求的处理,允许开发者定义自定义拦截器来实现特定功能,如日志...

    struts-2.3.24.1+spring4.2.1+hibernate5.0

    Struts 2.3.24.1、Spring 4.2.1 和 Hibernate 5.0 是三个在 Java 开发领域中广泛使用的开源框架,它们分别负责 Web 应用的 MVC(Model-View-Controller)架构、依赖注入与服务管理以及对象关系映射(ORM)。...

    Struts2+Spring4+Hibernate4框架整合小项目,包含ssh源码及SQL文件(MySQL)

    Struts2、Spring4和Hibernate4是Java Web开发中经典的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。这个整合项目提供了SSH框架的基础应用实例,适合初学者学习和理解这三大框架如何协同...

Global site tag (gtag.js) - Google Analytics