zoukankan      html  css  js  c++  java
  • struts2、hibernate以及spring是如何配置的

    第一次使用这3大框架进行网站编写的人没有一个清楚的流程,建起网站来会比较头疼,今天来讲讲3大框架的配置

    基本流程:

    用户点击页面之后,服务器收到一个请求,请求经过web.xml的拦截器过滤后进入action,不同的action执行后进入service业务处理层,业务处理层需要访问数据库的话,service将任务

    告知dao数据访问层,dao层访问数据库获取到数据后将数据返回给service层,service将数据处理后返回给action,不同的action依照service的返回值执行不同的过程,然后返回一个字

    符串或者数据(下面并未讲到如何在配置文件中配置返回数据,请读者自行查找),服务器依照struts.xml文件中的配置进行页面的跳转,然后在浏览器,用户便看到了不同的页面。

    具体配置:

    在用户点击一个链接之后,我们需要它执行一段代码,那么我们就要识别这个链接是否符合我们的要求,于是我们就要配合拦截器了

    拦截器的配置需要写在WEB-INF目录下的web.xml中

    类似这个样子

    <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    </filter>
    
    <filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>*.action</url-pattern>
    </filter-mapping>

    通过这个,我们可以拦截action请求了,action是专门用于处理来自页面的各种请求的,相当于是后台的外交官,action在后台的处理流程一般是:

    action  ->  service  ->  dao  (这个和SHH框架没有太大关系,但这样写能让各种功能分开,方便以后维护)

    service是具体的业务逻辑处理层

    dao是和数据库打交道的层

    在action处理完数据之后,我们需要跳转页面或者返回数据,这里就又要进行配置了,我们把action的配置命名为struts.xml(这个是默认的名字,可以在web.xml中修改)

    在struts.xml文件中,我们需要依照action返回的不同结果进行不同的页面跳转,具体配置类似这样子

    <action name="index" class="lee.action.IndexAction">
    <result name="success">/pages/index.jsp</result>
    <result name="input">/error.jsp</result>
    </action>

    当action返回的是字符串“success”,那么页面将跳转到index.jsp页面

    当然了,这里的跳转是支持action之间相互跳转的,需要这么写

    <result name="input" type="redirectAction">login</result>

    如果返回的字符串是“input”,那么程序将回到以login为名字的action进行处理。

    要使用spring框架我们还需要对bean进行配置,将各个类默认以简单名称存储在bean中,我们将配置文件命名为beans.xml和struts.xml保存在相同目录下,在web.xml中配置

    此文件的路径。在web.xml中加上这么一段

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

    然后我们在beans.xml中配置数据库链接:

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
    <list>
    <value>classpath:db.properties</value>
    </list> 
    </property>
    </bean>

    这里的db.properties是数据库连接的配置文件,里面的格式是

    JDBC.DBDriver=
    JDBC.Connection=
    JDBC.User=
    JDBC.Password=

    等号后面需要自己去填。

    数据库链接配置完了之后,我们需要配置sessionFactory

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >
    <!-- 数据源的配置 -->
    <property name="dataSource" ref="dataSource" />
    <property name="configLocation">
    <value>classpath:hibernate.cfg.xml</value>
    </property>
    <!-- 映射文件的配置 -->
    <property name="packagesToScan">
    <list>
    <value>lee/entity</value>
    </list>
    </property>
    </bean>

    在这里hibernate.cfg.xml文件是自己写的映射的配置,lee/entity是映射的路径

    下面是hibernate.cfg.xml的示例代码,大家可以参考一下

    <hibernate-configuration>
    <session-factory>
    <!-- 数据库hibernate的信息 -->
    
    <!-- 显示sql语句 -->
    <property name="show_sql">true</property>
    <!-- 显示方言 -->
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <!-- 若数据库中没有创建表则自动创建表 -->
    <property name="hibernate.hbm2ddl.auto">update</property>
    
    <!-- hibernate映射类 -->
    <mapping resource="lee/entity/Book.hbm.xml" />
    <mapping resource="lee/entity/BookUnChecked.hbm.xml" />
    <mapping resource="lee/entity/BookCategory.hbm.xml" />
    <mapping resource="lee/entity/User.hbm.xml" />
    <mapping resource="lee/entity/UserCategory.hbm.xml" />
    <mapping resource="lee/entity/UserNote.hbm.xml" />
    <mapping resource="lee/entity/UserView.hbm.xml" />
    <mapping resource="lee/entity/BookChapter.hbm.xml" />
    <mapping resource="lee/entity/BookCase.hbm.xml" />
    
    </session-factory>
    </hibernate-configuration>

    然后我们还需要在beans中配置事务管理器

    <!--配置事务管理器 -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    至此,3大框架大概配置基本讲完了

    (最后,谢谢 衍悔 在完善文章给予的帮助)

  • 相关阅读:
    项目中用到的ext及js细节
    《软件调试艺术》读后感六
    同步数据
    数组首地址取地址
    Storm简述及集群安装
    html5之canvas画图 1.写字板功能
    Memcached安装与配置
    WIP完工入库及完工退回的几个重要问题
    赵雅智:service_bindService生命周期
    【Android开发经验】Cannot generate texture from bitmap异常的解决方式
  • 原文地址:https://www.cnblogs.com/zhuxiaoxiao/p/4013576.html
Copyright © 2011-2022 走看看