您的位置:首页 > 其它

基础知识整理

2015-10-08 16:09 204 查看
零、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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: