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大框架大概配置基本讲完了
(最后,谢谢 衍悔 在完善文章给予的帮助)
struts2、hibernate以及spring是如何配置的的更多相关文章
- 【hibernate】spring+ jpa + hibername 配置过程遇到的问题
org.springframework.data.jpa.domain.support.AuditingEntityListener Auditing: 审计:查账Hades:Hades是一个开源库, ...
- C3P0连接池在hibernate和spring中的配置
首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...
- Struts2+hibernate+spring 配置事物
今天自信看了看hibernate的事物配置问题,转载了其他人的日志,仅用来学习. struts+hibernate+spring事务配置 (2009-01-14 21:49:47) 转载▼ 标签: i ...
- SSH整合(Struts2+hibernate+spring)
1.创建表 create table t_user( id int primary key auto_increment, username varchar(50), password varchar ...
- 整合Struts2、Hibernate、Spring
将项目中的对象和对象之间的管理,纳入spring容器,由spring管理 1 实现spring+hibernate集成 1.1 新建web项目 建立项目的包结构(package) 1.2加入jar包 ...
- Struts2,Hibernate和Spring之间的框架整合关系
1.首先要认清,hibernate和struts没有半点关系,所以他们之间没有任何可以整合的东西.a:struts 作为中心控制器,肯定要调用一些类来完成一些逻辑.而hibernate开发中,经常使用 ...
- struts2,hibernate,spring整合笔记(2)
上一话struts2,hibernate,spring整合笔记(1) 接下来继续 配置完struts之后就要开始hibernate的配置 hibernate的环境并不依赖web开发环境,在我第一次配置 ...
- 工作笔记3.手把手教你搭建SSH(struts2+hibernate+spring)环境
上文中我们介绍<工作笔记2.软件开发经常使用工具> 从今天開始本文将教大家怎样进行开发?本文以搭建SSH(struts2+hibernate+spring)框架为例,共分为3步: 1)3个 ...
- struts1,struts2,hibernate,spring的运行原理结构图
一.struts1运行原理 1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(s ...
随机推荐
- modal 永久移除遮盖层
样式中直接加入: .modal-backdrop { opacity: 0 !important; filter: alpha(opacity=0) !important;}
- 位图法bitmap
1.概念 1)所谓bitmap,就是用每一位(bit)来标记某个元素对应的value, 而key即是该元素,通常bitmap是一个int数组,用每一个int数的每一个bit来映射某个数据 2)由于采用 ...
- 【转】B树、B+树、B*树
出处:http://blog.csdn.net/v_JULY_v 1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Se ...
- Python之路(一)-python简介
一.python简介,python2.x与python3.x的区别 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Py ...
- 在Word中插入Excel对象
using Word = NetOffice.WordApi; Word.Document doc = this._wordApplication.Documents.Add(@"C:\Us ...
- Docker构建文件
构建文件 创建Dockerfile touch Dockerfile 编辑Dockerfile vim Dockerfile #基于java8版本构建 FROM java:8 #挂载日志目录 VOLU ...
- day13_雷神_前端01
#前端 html 服务器端返回的就是一个字符串,浏览器根据html规则去渲染这个字符串. html 是超文本标记语言,相当于定义统一的一套规则,大家都遵守它,这样就可以让浏览器根据标记语言的规则去解释 ...
- 下单快发货慢:一个 JOIN SQL 引起 SqlClient 读取数据慢的奇特问题
最近遇到一个非常奇特的问题,在一个 ASP.NET Core 项目中从 SQL Server 2008 R2 中查询获取 100 条记录竟然耗时 10 多秒,如果是查询本身慢,那到不是什么奇特的问题. ...
- Mybatis关系映射
一.一对一关系映射 使用resultType+包装类实现 1.假设问题背景是要求在某一个购物平台的后台程序中添加一个这样的功能:查询某个订单的信息和下该订单的用户信息.首先我们可以知道,一般这样的平台 ...
- django-celery 创建多个broker队列 异步执行任务时指定队列
一.这里不再详细述说 django 框架中如何使用celery, 重点放在如何实现创建多个队列, 并指定队列存放异步任务 笔者使用 django-celery==3.2.2 模块, 配置项及配置参 ...