zoukankan      html  css  js  c++  java
  • SSH 整合笔记

    1、整合/嵌套 顺序

    SSH 名称 Struts2+Spring+Hibernate 决定了:Hibernate 整合/嵌套 进Spring,Spring 整合/嵌套 进Struts2

    2、具体流程

    1)配置好Struts2 检查无问题

    2)Hibernate配置进Spring内 ,首先applicationContext.xml 加入如下代码:

    <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="root"/>
    <property name="password" value="zhangtao"/>
    </bean>

    <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <!-- <property name="annotatedClasses"><list><value>com.mavict.model.User</value></list></property> -->
    <property name="packagesToScan"><list><value>com.mavict.model</value></list></property>
    <property name="hibernateProperties">
    <value>
    hibernate.dialect=org.hibernate.dialect.MySQLDialect
    hibernate.show_sql=true
    hibernate.hbm2ddl.auto=update
    hibernate.current_session_context_class=thread
    </value>
    </property>
    </bean>

    解释:首先配置数据库数据源myDataSource,然后以此数据源创建名为mySessionFactory的Session工厂。配置到此步之后,程序中就可以直接注入mySessionFactory拿Session了。

    接着配置HibernateTemplate

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="mySessionFactory"></property>
    </bean>

    解释:以上述创建的mySessionFactory为源,创建hibernateTemplate,至此可以在程序内抛弃session,直接以hibernateTemplate来进行数据库操作了。

    至此可以完全删除hibernate的配置文件hibernate.cfg.xml了。配置完成。

    3)Spring 配置进Struts2。过程有一些繁琐。

    首先,要明确,Spring配置进Struts2,即是Struts2首先启动之后,要让内嵌的Spring来创建和管理各个实例Bean,包括Struts的action类的bean...所以,首先将如下代码嵌入web.xml,而且要放在顶部,优先执行:

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

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    注意:此处是按照个人习惯设置了applicationContext.xml放在项目的src目录下。默认应该是放在WEB-INF/lib下的。

    这算是将spring嵌入了struts2。接着,要实现Spring来创建和管理各个实例Bean,还需引入jar包 struts-spring-plugin-...jar

    再引入数据库连接jar包,配置完成。

    __________________________________________________

    需要注意的是,struts2引入spring之后,action类的写法注意举例如下:

    @Component("nickname")
    @Scope("prototype")
    public class FirstAction {

    private UserService us;

    public UserService getUs() {
    return us;
    }

    @Resource

     //直接注入,无需 applicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService us = ctx.getBean("userService");来获取bean了
    public void setUs(UserService us) {
    this.us = us;
    }

    public String execute(){  

    us.result("zhangtao's success!");return "success";  }

    }

    相应的struts.xml配置写法

    <action name="first" class="nickname"> //注意此处class写法与@Component("nickname")中名字一致
    <result>/first.jsp</result>
    </action>

    如果class不这样搞,而按照原样的写法,比如类似 class="com.xxx.action.FirstAction"写法,则struts会自动实例化此action class,没spring什么事了。spring那边即便是加了component,也白搭。务必要注意此处。

    总结完毕

  • 相关阅读:
    相机标定之四个坐标系及其关系
    VR、AR和MR的区别?
    Django 中使用流响应处理视频的方法
    mysql_num_fielfs_php mysql_num_rows和mysql_num_fields获取结果集总行数和总列数
    mysql中文乱码
    redisson分布式锁:Redis分布式锁报错,Redisson出错:Unable to send command!
    SpringBoot整合redis, RedisTemplate默认使用Lettuce客户端超时问题
    spring security登录后访问接口403 forbidden的坑
    redis锁,redis分布式锁: RedisLock
    微信urlscheme.generate:h5跳转到小程序(支持微信内h5,浏览器)
  • 原文地址:https://www.cnblogs.com/appzhang/p/2932813.html
Copyright © 2011-2022 走看看