第一次使用这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大框架大概配置基本讲完了

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

struts2、hibernate以及spring是如何配置的的更多相关文章

  1. 【hibernate】spring+ jpa + hibername 配置过程遇到的问题

    org.springframework.data.jpa.domain.support.AuditingEntityListener Auditing: 审计:查账Hades:Hades是一个开源库, ...

  2. C3P0连接池在hibernate和spring中的配置

    首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...

  3. Struts2+hibernate+spring 配置事物

    今天自信看了看hibernate的事物配置问题,转载了其他人的日志,仅用来学习. struts+hibernate+spring事务配置 (2009-01-14 21:49:47) 转载▼ 标签: i ...

  4. SSH整合(Struts2+hibernate+spring)

    1.创建表 create table t_user( id int primary key auto_increment, username varchar(50), password varchar ...

  5. 整合Struts2、Hibernate、Spring

    将项目中的对象和对象之间的管理,纳入spring容器,由spring管理 1 实现spring+hibernate集成 1.1 新建web项目 建立项目的包结构(package) 1.2加入jar包 ...

  6. Struts2,Hibernate和Spring之间的框架整合关系

    1.首先要认清,hibernate和struts没有半点关系,所以他们之间没有任何可以整合的东西.a:struts 作为中心控制器,肯定要调用一些类来完成一些逻辑.而hibernate开发中,经常使用 ...

  7. struts2,hibernate,spring整合笔记(2)

    上一话struts2,hibernate,spring整合笔记(1) 接下来继续 配置完struts之后就要开始hibernate的配置 hibernate的环境并不依赖web开发环境,在我第一次配置 ...

  8. 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境

    上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...

  9. struts1,struts2,hibernate,spring的运行原理结构图

    一.struts1运行原理 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...

随机推荐

  1. Android 软件管理工具类Utils

    Android 软件管理工具类Utils /** * Created by uilubo on 2015/9/30. * 工具类 */ public class Utils { public stat ...

  2. 决策树模型组合之随机森林与GBDT(转)

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  3. Codeforces Round #539 (Div. 2) 异或 + dp

    https://codeforces.com/contest/1113/problem/C 题意 一个n个数字的数组a[],求有多少对l,r满足\(sum[l,mid]=sum[mid+1,r]\), ...

  4. s5 Docker的持久化存储和数据共享

    数据库容器的数据如何才能不会丢失?Docker的持久化存储技术.Docker的数据共享技术能极大提高开发人员的开发效率,边写代码,边看运行结果. 数据持久化之Data Volume Docker持久化 ...

  5. TensorFlow环境搭建

    1.使用pip安装TensorFlow 第一步安装pip: 先安装python 官网下载地址https://www.python.org在里面选择适合自己的版本 安装python的过程中pip也会随之 ...

  6. 让IE8支持html5中的video标签

    这是一篇综合几个前辈的解决方案. 使用video的时候,要遇到的问题. ①不兼容ie9及其以下版本 在<head>里添加两行, 参考张鑫旭前辈的博客,但是在ie8中薄播放. <!-- ...

  7. 搭建repo服务器和上传源码

    https://blog.csdn.net/qq_28449863/article/details/79992191 https://blog.csdn.net/qq_28449863/article ...

  8. SpringMVC+JQuery实现头像编辑器

    一.简单说明 本头像编辑器主要实现了图片的上传.显示(不溢出父窗口).旋转.裁剪功能! 图片的上传用到的是异步上传,页面不进行刷新,原理是通过JQuery的异步提交+SpringMVC的上传 上传完毕 ...

  9. XCode 无法识别设备

    XCode 取消Unpair Device 后不能读取设备 1:退出XCode 2:断开设备连接 3:在终端执行‘sudo pkill usbmuxd’ 4:重启XCode 5:连接设备即可

  10. Javascript高级编程学习笔记(10)—— 作用域、作用域链

    昨天介绍了,JS中函数的作用域 什么词法环境之类的,可能很多小伙伴不太明白. 在今天的内容开始之前,先做个简短的声明: 词法环境这一概念是在ES5中提出的,因为词法环境主要用于保存let.const声 ...