• Struts2 Spring hibernate 整合示例 .


    示例工具:MyEclipse 8.5Tomcat 6.0MySql

    步骤:

    1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名);

    2.导入struts2的核心jar包,也就是在WEB-INF下的lib文件夹中放入jar包文件,

    freemaker-2.3.8.jar

    ognl-2.6.11.jar

    struts2-core-2.0.14.jar

    struts2-spring-plugin-2.0.14.jar

    xwork-2.0.7.jar

    3.加载spring,选中工程名,右击并选择【MyEclipse】选项下的【Add Spring Capabilities...】(或者在工具栏中选择【MyEclipse】下的【Add Spring Capabilities...】),在弹出的对话框中进行如下选择:

     Spring 2.5 AOP Libraries

     Spring 2.5 Core Libraries

     Spring 2.5 Persistence Core Libraries

     Spring 2.5 PersistenceJDBC Libraries

     Spring 2.5 Web Libraries

    点击【Next】,点击Folder文本框后的【Browse】,在弹出对话框中选择spring配置文件存储位置为WEB-INF文件夹:


    点击【OK】后,再点击【Finish】完成。至此,已经完成加载spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。

    4.加载Hibernate,选择【MyEclipse】下的【Add Hibernate Capabilities...】,在弹出对话框中进行如下所示操作:  

    全选 MyEclipse Libraries, 然后选择 Copy checked Library.......


    点击【Next】后,选择Existing Spring configuration file单选框,在SessionFactory Id文本框中填入"sessionFactory",如下所示 :
    选择 Existing Spring configuration file,选择前面的 applicationContext.xml
    SessionFactory Id : sessionFactory

    点击【Next】,进行如下所示操作:
    这里需要选择一个之前在 MyEclipse 中配置好的一个数据库链接

    该操作中,只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大。然后在DB Driver下拉列表中,选择MyEclipse中创建好的数据库源xiaoqi,其他信息将自动填写。点击【Next】,在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击【Finish】完成(创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,问全部保存【Keep Exiting】,还是替换掉【Replace】,可以选择替换掉【Replace】)。

    5.创建struts.xml文件,在src包下新建一个struts.xml文件,该文件内容如下:

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

    <struts>

    <!--下述语句是将struts2交给spring管理 -->

    <constant name="struts.objectFactory" value="spring" />

    <!--导入struts-default.xml文件 -->

    <include file="struts-default.xml"></include>

    <!--将action内容放在package元素下,package元素的name值与extends值可以使用默认值,如下所示 -->

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

    <!--例如与用户登录相关的LoginAction,配置如下,其中,class值与applicationContext.xml文件中该action的id值相对应,name值作为标识-->

       <action name="loginAction" class="LoginAction">

    <!--result元素设置页面跳转值,其中name值为目标页面的字符串标识,如下,登录失败时回到login.jsp页面,成功时,转向success.jsp页面 -->

        <result name="fail">/login.jsp </result>

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

       </action>

    </package>

    </struts>

    6.配置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">

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>

    <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>index.jsp</welcome-file>
    </welcome-file-list>

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

    </web-app>

    7.反向生成实体类文件

    在src包下新建一个entity包,将前面数据源xiaoqi所示数据库bookshop中的user表反向生成Hibernate实体类文件。

    8.创建数据操作文件

    在src包下创建dao包,在该包下新建类文件PersonManage.java,其内容如下所示:

    package dao;

    import java.util.*;

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

    import entity.*;

    public class PersonManage extends HibernateDaoSupport {

    //普通用户登录验证
    @SuppressWarnings("unchecked")
    public boolean checkUser(String userName,String userPassword){
       boolean flag = false;
       String hql = "from User as user where user.userName = '"+userName+"' and user.userPassword = '"+userPassword+"'";
       List<User> userList = this.getHibernateTemplate().find(hql);
       if(userList.size()>0){
        flag = true;
       }
       return flag;
    }

    }

    9.创建Action

    在src包下新建一个包,名为"com.xiaoqi.action"(名字仅为示例,只写一个com也可以,示例写法是采取struts中的action包名写法),在该包下新建一个action类LoginAction.java,其内容如下:

    package com.xiaoqi.action;

    import com.opensymphony.xwork2.ActionSupport;

    import dao.PersonManage;

    public class LoginAction extends ActionSupport{

    private String userName;
    private String userPassword;
    private PersonManage personManage;
    public String getUserName() {
       return userName;
    }
    public void setUserName(String userName) {
       this.userName = userName;
    }
    public String getUserPassword() {
       return userPassword;
    }
    public void setUserPassword(String userPassword) {
       this.userPassword = userPassword;
    }
    public void setPersonManage(PersonManage personManage) {
       this.personManage = personManage;
    }
    public String execute(){
       String page = "fail";
       boolean flag = false;
       flag = personManage.checkUser(userName, userPassword);
       if(flag){
        page = "success";
       }
       return page;
    }
    }

    10.创建页面,创建登录页面login.jsp,内容如下:

    <%@ page language="java" pageEncoding="gb2312"%>

    <!-- 导入struts2标签库 -->

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

    <html>
    <head>
       <title>用户登录</title>
    </head>
    <body>
    <center>

    <div id="login">
        <s:form action="loginAction">
         <s:textfield label="用户名" name="userName"></s:textfield>
         <s:password label="密码" name="userPassword"></s:password>
         <s:submit value="登录"></s:submit>
        </s:form>
       </div>

    </center>
    </body>
    </html>

    页面中,先导入struts2标签库,用来创建form表单。form表单提交给与登录相关的LoginAction.java文件,而LoginAction.java在struts.xml文件中相应的name值为"loginAction”,所以这里的action值为"loginAction"。至于用户名文本框与密码文本框的name值则与LoginAction.java文件中的userName与userPassword完全匹配。

    11.配置applicationContext.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="
    http://www.springframework.org/schema/beans"
    xmlns:xsi="
    http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!--   以下为数据源配置,自动生成 -->

    <bean id="candy" class="org.apache.commons.dbcp.BasicDataSource">
       <property name="driverClassName"
        value="com.mysql.jdbc.Driver">
       </property>
       <property name="url"
        value="jdbc:mysql://localhost:3306/bookstore">
       </property>
       <property name="username" value="root"></property>
       <property name="password" value="sa"></property>
    </bean>

    <!--   以下为sessionFactory配置,自动生成 -->

    <bean id="sessionFactory"
       class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
       <property name="dataSource">
        <ref bean="candy" />
       </property>
       <property name="hibernateProperties">
        <props>
         <prop key="hibernate.dialect">
          org.hibernate.dialect.MySQLDialect
         </prop>
        </props>
       </property>
       <property name="mappingResources">
        <list>
         <value>entity/User.hbm.xml</value></list>
       </property></bean>

    <!--   配置PersonManage.java类文件 -->

    <bean id="personManage" class="dao.PersonManage" abstract="false"
       lazy-init="default" autowire="default" dependency-check="default">
       <property name="sessionFactory" >
        <ref local="sessionFactory"/>
       </property>
    </bean>

    <!--   配置LoginAction.java类文件 -->

    <bean id="LoginAction" class="com.xiaoqi.action.LoginAction" >

           <property name="personManage">
               <ref bean="personManage" />
           </property>

    </bean>
    </beans>

  • 相关阅读:
    (剑指Offer)------二进制中1的个数
    LeetCode#58:最后一个单词的长度解析
    js 生成四个随机字母或数字+js获取当前日期
    ES6学习笔记----数组的扩展
    No component factory found for ListenerAddComponent. Did you add it to @NgModule.entryComponents?
    Can't bind to 'formGroup' since it isn't a known property of 'form'
    算法初相识---插入排序,冒泡排序,选择排序,以及分析算法
    Deno MongoDB 增删查改 接口
    Deno MySQL 增删查改接口
    Deno 几种常用的传参方式
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3226176.html
Copyright © 2020-2023  润新知