基础知识整理

零、Tomcat的web.xml

Tomcat有两个web.xml。一个位于conf文件夹下,另外的一个位于各个应用的WEB-INF文件夹下,应用启动时,是先调用前者,再调用后者,所以是附加的关系。

web.xml这个文件中定义了servlet和一些常量、以及filterfilter 过滤器元素将一个名字与一个实现javax.servlet.Filter接口的类相关联,如(StrutsPrepareAndExecuteFilter),也就是准备好struts的init和dofilter。

在web.xml中完成的一个最常见的任务是对servlet或JSP页面给出名称和定制的URL。用servlet元素分配名称,使用servlet-mapping元素将定制的URL与刚分配的名称相关联。

一、Struts:

Struts会根据struts.xml中定义的一些Filter来过滤用户的请求字串,然后调用不同的动作来处理请求。

struts.xml 为Struts 2的核心配置文件。struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。
struts.xml中主要配置Struts项目的一些全局的属性,用户请求和响应Action之间的对应关系,以及配置Action中可能用到的参数,以及处理结果的返回页面。还包括各种拦截器的配置等。

当应用启动时,web.xml会被tomcat读取,然后里面如果定义了filter为struts的话(如StrutsPrepareAndExecuteFilter),则struts会被初始化,同时会读取struts.xml。

struts.xml中一般是这样的结构:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

    <constant name="struts.custom.i18n.resources" value="resource" />
    <constant name="struts.i18n.encoding" value="utf-8" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.multipart.maxSize" value="200000000" />
    <constant name="struts.objectFactory" value="spring"></constant> 
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />


    <include file="struts-xtgl.xml" /> 
    <include file="struts-lm.xml" />  

    <package name="oa" extends="struts-default">

        <interceptors>
            <interceptor name="surfLogger" class="com.surfkj.xtgl.interceptor.LoggerInterceptor"></interceptor>
            <interceptor-stack name="surfStack">
                <interceptor-ref name="surfLogger"></interceptor-ref>   
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="surfStack"></default-interceptor-ref>

        <global-results>
            <result name="exception">/webmag/error.jsp</result>
             <result name="info">/webmag/info.jsp</result>
        </global-results>

        <global-exception-mappings> 
            <exception-mapping result="exception" exception="java.lang.Exception"></exception-mapping>
        </global-exception-mappings>

        <action name="baseAction" class="com.surfkj.core.action.BaseAction"></action> 



    </package>
</struts>    

里面主要有不同命名空间下的action和interceptor组合,当一个url到来时,会先调用拦截器中的intercept方法,然后执行完后再调用对应的action。如下图:
这里写图片描述
Action的实现类(如LeMansDepotAction) 是通过继承com.opensymphony.xwork2.ActionSupport这个类来实现的一般,包含下面几个元素:

<action name="lemansDepotAction" class="com.surfkj.lm.depot.action.LeMansDepotAction">
            <result name="toaddpage">/webmag/depot/addDepot.jsp
            </result>
            <result name="tolistpage">/webmag/depot/listDepot.jsp
            </result>
</action>

name和class对应于url中的名称和处理的类。result为不同的返回结果中返回的不同jsp页面。
这里写图片描述

二、Spring

Spring framework核心是一个ebean工厂,用来构造我们所需要的bean实例。这样类和类之间的调用就不是互相嵌入的,而统一由它来创建,类只是调用了一个可以做事的接口(IOC)。

在web.xml文件中,有这样一行定义

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

当tomcat启动时,会通过这个listener通知spring做初始化,初始化之后会根据ClassPath读取bean的配置信息,然后解析并生成BeanDefinition。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值