导图社区 Smart Link自学struts2框架开发思维导图
Smart Link自学struts2框架开发干货分享!内容覆盖struts定义、steutsl原理图、struts2原理图、struts2细节等,感兴趣的小伙伴可以下载收藏。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
Smart Link自学struts2框架开发思维导图
Struts定义
基于MVC模式的web的开源框架(把请求和展现分开,易于扩展) M:model javabean DTO V:view jsp c:contler:action
struts1原理图
当web.xml启动时只创建一个action(单态),当很多用户批量访问时此时需要考虑线程同步问题
struts2原理图
每次访问action时就创建一个action(多态),因此不用考虑线程同步问题
struts2细节
struts.xml
struts2命名空间
namespace决定action路径,默认""可以接收所有action namespace="/"或着namespace="/XXX"或着为namespace="/XXX/YYY" 对应action路径/index.action或着/XXX/index.action或着/xxx/yyy/index.action
type类型
dispatcher(jsp中的forword跳转 服务器跳转到某个页面)
redirect(客户端跳转到视图页面)
chain(服务器端跳转到某个(forwardaction)action)
redirectAction(客户端跳转 到某一个action)
action.java
public class IndexAction extends ActionSupport
跳转方式
普通调用 <action name="hello" class="IndexAction" method="add"> <result >/Hello.jsp</result> </action> DMI动态调用 <a href="<%=basePath%>frout/hello!add">hello world</a> 通配符调用
Ognl表达试
struts2声明试异常处理
有异常可以随便往出抛出,最后由struts2跳转到一个页面统一管理
<package name="bbs2009_default" extends="struts-default"> <global-results> <result name="error">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping result="error" exception="java.lang.Exception"></exception-mapping> </global-exception-mappings> </package>
struts2拦截器原理
自定义拦截器案例 public class MyInterceptor implements Interceptor { public void destroy() { } public void init() { } public String intercept(ActionInvocation invocation) throws Exception { long start = System.currentTimeMillis(); String r = invocation.invoke(); long end = System.currentTimeMillis(); System.out.println("action time = " + (end - start)); return r; } } struts.xml <package name="test" namespace="/" extends="struts-default"> <interceptors> <interceptor name="my" class="com.interceptor.MyInterceptor"></interceptor> </interceptors> <action name="test" class="com.action.TestAction"> <result>/test.jsp</result> <interceptor-ref name="my"></interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action> </package>
Smart Link
设计思想
Smart Link组通过Flush报文、Smart Link实例和控制VLAN等机制,实现Smart Link功能(包括负载分担)。
一、基本概念
1.1 示意图
1.2 Smart Link组
一个组内包含两接口,一个为主接口,一个为从接口。主接口转发,从接口阻塞。
主接口
主接口承担转发任务。链路故障后从接口完成切换,进入转发状态。 当主接口链路恢复,仅下一次链路切换时,才进入转发状态(当配置回切功能,回切时间到时,会切换到主链路)。
从接口
从接口被阻塞,当主接口故障,进行链路切换,从接口进入转发状态。
1.3 Flush报文
作用:当链路发生切换,通过Flush报文通知其他设备进行MAC和ARP表项的刷新 注:报文是组播报文。
1.4 Smart Link实例
引用MSTP实例,同一实例绑定若干VLAN;不同实例绑定不同VLAN; Smart Link组的从链路通过绑定不同的实例来实现负载分担。
1.5 控制VLAN
发送控制VLAN。 含义:用于广播发送Flush报文的VLAN 处理行为:当发生链路切换时,设备通过新链路广播发Flush报文(通过发送控制vlan)。
接收控制VLAN。 含义:用于接收并处理Flush报文的VLAN。 处理行为:当发生链路切换时,上游设备通过接收控制VLAN接收Flush报文,进行MAC表项和ARP表项的刷新。
1.6 负载分担
二、基本原理
链路正常->链路故障->链路恢复的过程
链路正常工作原理
Smart Link组。双上行链路,主接口转发报文,从接口阻塞备份,避免产生广播风暴。
链路故障处理原理
通过Flush报文通知设备更新表项
Smart Link组,链路发生故障时,从接口状态切换后,转发数据前做如下处理。 前提:上游设备支持Smart Link功能,可以接收处理Flush报文 链路切换后,新的主用链路发Flush报文。 上游设备收到Flush报文时,判断Flush报文的发送控制VLAN是否在接收控制VLAN列表中。 如果不在,对Flush报文不做处理,直接转发; 如果在,就处理Flush报文,然后将MAC表项和ARP表项刷新。 有数据时,根据新的MAC表项或ARP表项进行转发。
自动通过流量更新表项
适用不支持Smart Link功能的设备对接的情况,需要上行流量触发 上行设备需要等待MAC和ARP表项自动老化, 下行设备也需要MAC和ARP表项老化,重新学习。
通过Flush报文通知设备更新的机制,极大程度地减少表项更新时间。链路切换毫秒级内完成,最大减少流量的丢失。 不用等到表项老化后再进行更新
链路恢复处理原理
链路故障恢复时,该接口维持阻塞状态,不进行抢占,可通过以下机制进行切换。 ①配置Smart Link组回切功能。当链路故障恢复后,经过回切时间,将自动将流量切换到原主用链路上。 ②使用命令强制将将流量切换到原主用链路上。
三、负载分担
应用场景