Coin163

首页 > Struts2、Hibernate、Spring运行流程与部分机制详解 - 博客频道 - CSDN.NET

Struts2、Hibernate、Spring运行流程与部分机制详解 - 博客频道 - CSDN.NET

相关标签: spring struts2 hibernate

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云双十一最低价产品入口,含代金券(新老用户有优惠),
入口地址https://www.aliyun.com/minisite/goods

相关推荐:Struts2类型转换器小结 - 博客频道 - CSDN.NET

up vote 1 down vote favorite 1 i am new in yii2 and using advance template . i am using yii2/admin for roles , permission. but i can't get the menu manage using yii2/admin the image for the menu manage like this how to get this interface fo

Struts2、Hibernate、Spring运行流程与部分机制详解

Tomcat容器被加载,找到该webApplication相对应的web.xml
开始解析web.xml中的信息
读取到一个spring的监听器,告诉spring容器开始初始化配置文件中的信息,spring容器配置文件默认applicationContext.xml

org.springframework.web.context.ContextLoaderListener

容器开始实例化spring相关bean和配置文件,
Spring容器创建dataSource数据源,
创建hibernate的sessionFactory(传入dataSource)
创建操作数据库所需的操作模板HibernateTemplate(传入sessionFactory)
并扫描生成配置文件中的bean(IOC注入)
生成各个dao(传入hibernateTemplate)
生成各个service(传入相对应的dao)
(初始化工作完成,等待用户的请求,只初始化spring容器中的bean)
spring容器初始化完成(如果action是prototype,不是单例的话)
action如果是单例就会先初始化action,service,dao,hibernateTemplate,sessionFactory,datasource)

一个请求发送到tomcat(产生了HttpServletRequest)
Tomcat接收到请求根据url寻找webApplication,开始加载该webApplication的web.xml
读取到

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter



struts2
/*

的时候

1.通过filter过滤所有的url,调用把请求传给StrutsPrepareAndExecuteFilter(前端控制器)
开始struts2的工作
struts2一启动就会去加载配置文件,其中包括struts—plugin.xml,读取顺序:
struts-default.xml
struts-plugin.xml
(struts2-spring-plugin.jar中的配置文件中的,这句配置就指明了我们产生struts对象的工厂交给spring来产生,如果action配置了注解,则交给spring在最初的时候产生,如果没有,则由struts2和plugin插件产生)
struts.xml
struts.properties
web.xml

2.StrutsPrepareAndExecuteFilter调用actionMapper来确定是否有action需要调用

3.如果actionMapper确定请求需要调用某个action,那么StrutsPrepareAndExecuteFilter调用Dispatcher类中的serviceAction方法产生valuestack(值栈)与 actioncontext(action上下文)并产生actionproxy代理对象,把请求的处理交给actionProxy

4.actionProxy通过configurationManager查看struts.xml来找到需要调用的action和action所有的配置信息(拦截器,转换器等)

5.actionProxy创建一个actionInvocation的实例。

相关推荐:Spring—struts2整合

1.整合步骤:     一、整合目标            Spring来管理Struts的Action      二、 新建一个web项目,配置web.xml文件如下:             <xml version="1.0" encoding="UTF-8">         <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x

6.actionInvocation使用命令模式在action的前后来调用配置文件中配置的拦截器和拦截器栈(比如将HttpServletRequest的参数解析出来封装成对象传给action)(通过xml的代码然后再解析xml文档用dom解析或者sax解析,得到xml的内容和节点,然后通过反射技术,进行java类的加载以及方法的加载 )

7.调用完拦截器后,调用action对应的方法方法处理请求(页面控制器)

8.由struts2生成的action或者spring产生的action,struts-spring-plugin插件将action中所需的serviceImpl在spring容器中寻找并将实例传入action(或者由工厂模式提供serviceImpl组件的实例)

9.action调用service,service调用dao。dao层中调用hibernateTemplate的相关方法完成数据库操作将结果逐层返回给action

10.action返回试图名

11.actionInvacation根据struts.xml中action返回的视图名对应result的值寻找到对应的视图,将视图和返回值结合(jsp拿到值)并产生新的jsp返回给上层的filter。
StrutsPrepareAndExecuteFilter将jsp返回给tomcat
Tomcat的jsp引擎(org.apache.jasper.servlet.JspServlet)生成serlvet源程序(.java文件),之后又将Servlet源程序编译为.class类文件;编译成.class文件后返回给用户产生html

一、Struts2生成action
不声明@Component,由struts2生成的action(默认是prototype,一个请求new一个)
action中需要访问的service层的对象生成的set方法由struts-spring-plugin.jar这个jar包 帮我们去spring容器中找与set方法名字一样的bean帮我们注入,
注意这里struts-spring-plugin提供的注入方法是不可替换的,即使使用@Resource指定其他的实现也无效。

二、Spring生成action
由Spring容器生成的action,配置了@Component和@Scope(“prototype”) struts,xml中action的class属性指定成@Component的value
该action中的service的set方法 需要使用@Resource注入,struts-spring-plugin 则不会自动去spring容器中寻找相应的bean

注意:
如果action不使用@Component(“actionName”) 那么action是由struts2产生,如果加上@Component(“u”) 则struts.xml中的 的class要为u,则为spring产生的action,struts2找action的时候,去spring容器中找action

原文

Struts2、Hibernate、Spring运行流程与部分机制详解 Tomcat容器被加载,找到该webApplication相对应的web.xml 开始解析web.xml中的信息 读取到一个spring的监听器,告诉spring容器开始初始化配

------分隔线----------------------------