上篇我们大致了解了一下採用了Struts框架的web页面运行流程。

接下来的几篇我们通过Struts的源代码来学习一下Struts的内部原理。

  当server启动的时候。server会依据配置文件初始化一系列的參数和对象。所以一切都要从配置文件開始说起。

<span style="font-family:KaiTi_GB2312;">  <servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet> <!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping></span>

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdsZWlsZWk0ODY5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  从Struts1的结构体系上来看,仅仅要符合配置要求的client的请求都会被ActionServlet这个类进行接受和处理。在这里配置的是*.do,全部以.do 结尾的request请求都会被转到ActionServlet中进行处理。Tomcat启动时,对于创建的ActionServlet,还有其它的一些重要的參数。

  首先,是config參数,这里配置的是/WEB-INF/struts-config.xml。系统默认的Struts配置文件名。这里我们能够删除。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhbmdsZWlsZWk0ODY5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

  能够知道,在ActionServlet中已经写好了默认的文件配置信息名称,也就是标准名称,所以我们再web.xml中不配置Struts的配置文件项也是能够的。假设这样必须保证Struts配置文件的名称和ActionServelt中的一样。

  其次,配置中的debug和detail。是关于日志记录方面的配置。无关紧要,值越小,表示日志记录粒度越大。相对来说内容就越不具体。

  最后是 <load-on-startup>的配置。这个是用来确定Servlet在server启动的时候server先载入哪个Servlet,值越小。表示server越先载入。

  当Tomcat启动的时候,会读取web.xml文件。创建一个单实例的ActionSerlvet。这个ActionServlet去读取Struts-config.xml文件到内存中,以map形式进行保存,然后会在之后的Services方法中用到。为之后最基本的process方法做好必要的准备。顺带着提一下,Struts对ActionServlet的封装,使得自身成为了一个具有侵入性的框架。假设不继承Action就不会实现相应的功能。

还有一方面,Tomcat实例化ActionServlet採用的单实例,也会存在线程安全问题,这是后话,我们之后会谈到。

  这篇博客主要是了解Struts框架最核心的ActionServelt的在web.xml中的配置,至于载入好配置文件之后,怎样进一步的实现处理和分发请求,后面的文章继续!

SSH框架之Struts(2)——Struts的执行流程之配置文件的更多相关文章

  1. ssh框架整合其他方式(没有hibernate核心配置文件)

  2. 用一天的时间学习Java EE中的SSH框架

    首先说明一下,本人目前主要从事.NET领域的工作,但对于C++.Java.OC等语言也略知一二,周末闲来无事,特花费一天的时间学习了一下Java中的SSH框架,希望把学习过程中的心得体会与园友们进行分 ...

  3. 说说你对用SSH框架进行开发的理解

    SSH框架指的是Struts,Spring,Hibernate.其中,Struts主要用于流程控制:Spring的控制反转能祈祷解耦合的作用:Hibernate主要用于数据持久化.

  4. SSM框架和SSH框架的区别

    SSH和SSM定义 SSH 通常指的是 Struts2 做控制器(controller),spring 管理各层的组件,hibernate 负责持久化层. SSM 则指的是 SpringMVC 做控制 ...

  5. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  6. SSH框架之Struts(4)——Struts查漏补缺BeanUtils在Struts1中

    在上篇博客SSH框架之Struts(3)--Struts的执行流程之核心方法,我们提到RequestProcessor中的processPopulate()是用来为为ActionForm 填充数据.它 ...

  7. javaWeb项目(SSH框架+AJAX+百度地图API+Oracle数据库+MyEclipse+Tomcat)之一 基础Struts框架搭建篇

    即将开始着手写这个项目,所以希望通过这篇博客来记录自己学习的过程 今天开学第一天,就上了软件工程实践课,自己也开始着手做这个大作业了.首先我的项目名称叫做智能班车管理系统. 项目的概况: 该软件产品是 ...

  8. Spring+Hibernate+Struts(SSH)框架整合

    SSH框架整合 前言:有人说,现在还是流行主流框架,SSM都出来很久了,更不要说SSH.我不以为然.现在许多公司所用的老项目还是ssh,如果改成流行框架,需要成本.比如金融IT这一块,数据库dao层还 ...

  9. spring+springMvc+struts的SSH框架整合

    1.建立一个web项目 2.导入SSH框架所需jar包 3.配置web.xml文件 <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. Jedis的Sharded源代码分析

    概述 Jedis是Redis官方推荐的Java客户端,更多Redis的客户端可以参考Redis官网客户端列表.当业务的数据量非常庞大时,需要考虑将数据存储到多个缓存节点上,如何定位数据应该存储的节点, ...

  2. DevExpress控件使用小结 z

    .TextEditor(barEditItem)取文本 string editValue = barEditItem1.EditValue.ToString(); //错误,返回null string ...

  3. <译>Selenium Python Bindings 2 - Getting Started

    Simple Usage如果你已经安装了Selenium Python,你可以通过Python这样使用: #coding=gbk ''' Created on 2014年5月6日 @author: u ...

  4. Vim小知识

    在退出vim编辑的时候,强制退出是q! 感叹号在前,即!q,表示执行外部shell命令,感叹号在后,即q!,表示强制执行vi命令.

  5. 1.3……Eclipse下开发Android相关知识

    Android应用目录结构 src -------------------------------------------java原代码存放目录 gen ----------------------- ...

  6. C++设计模式——建造者模式

    建造者模式 在GOF的<设计模式 可复用面向对象软件的基础>中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 这句话,似懂非懂的.一个复杂对象的创建 ...

  7. 简单的flash策略文件服务器!

    最近在做一个flash小游戏,众所周知,flash连接服务器socket的时候,需要向服务器请求策略文件.以下是一个简单的策略文件服务器的代码c++: #include <Winsock2.h& ...

  8. nova --debug image-list

    nova --debug image-list DEBUG (session:) REQ: curl -g -i -X GET http://liberty-aio:35357/v3 -H " ...

  9. NLog 錯誤小記

    IISExpress使用NLog遇到寫入權限錯誤,特記錄下來: NLog配置文件中指定FileName時需要指定為當前目錄,如不指定會產生 拒絕訪問 錯誤, 估計為不指定當前目錄時會將文件寫入iise ...

  10. YII开发技巧分享——模型(models)中rules自定义验证规则

    YII的models中的rules部分是一些表单的验证规则,对于表单验证十分有用,在相应的视图(views)里面添加了表单,在表单被提交之前程序都会自动先来这里面的规则里验证,只有通过对其有效的限制规 ...