精华内容
下载资源
问答
  • 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 岗位管理:配置系统用户所属担任职务。 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 角色管理:角色菜单权限分配、设置角色按...
  • SpringMVC框架浅淡

    2018-01-23 20:15:28
    一.什么是springMVC Spring公司推出的一款表现层的框架 二.springMVC的作用 ...a)....b)....三.springMvc的三大组件:处理器映射器,处理器适配器,视图... Springmvc框架结构图(图片来自互联网) 1.需要程序员编写的组件:
    一.什么是springMVC
    Spring公司推出的一款表现层的框架
    二.springMVC的作用
    a).接收请求和参数
    b).将处理好的数据返回给指定的页面(指定页面的位置,将数据返回到页面展示)
    三.springMvc的三大组件:处理器映射器,处理器适配器,视图解析器

       Springmvc框架结构图(图片来自互联网)
    1.需要程序员编写的组件:处理器handler也就是我们写的controller, 视图view也就是我们写的页面jsp
    2.在项目中可以不配置处理器映射器和处理器适配器也可以正常使用, 但是每次请求都会去springMvc包下面找默认的配置文件dispatherServlet.properties, 去里面的处理器映射器和处理器适配器列表中, 逐个对比匹配执行,这样代码执行效率下降. 所以我们需要手动配置处理器映射器, 处理器适配器, 这样就不去找默认的配置文件了, 就直接去执行我们配置的组件.加快代码执行效率
    3.springMvc在web.xml中的配置
    /* 在springMvc中不起作用, 禁止使用
    *.action 凡是以.action结尾的url都会进入到DispatcherServlet, DispatcherServlet会放行所有资源
    / 所有路径只要含有/的url路径都可以进入到DispatcherServlet, DispatcherServlet会放行.jsp结尾的文件, 但是其他文件
    比如.css, .js, .jpg, .png等静态资源都不放行, 都被DispatcherServlet拦截住.

    4. 注解驱动和注解扫描区别:
    a.都需要配置,
    b.注解扫描是使@Controller注解生效
    c.注解驱动: 相当于手动配置最新版的注解形式的处理器映射器和处理器适配器, 可以加快代码执行效率.
    d.视图解析器: 可以不配置但是controller方法中就要写页面的完整路径, 如果配置了视图解析器, 可以少写页面的路径的位置, 方便开发编码
    e.springMvc.xml中需要配置的内容有: 注解扫描,注解驱动,视图解析器

    四.SSM整合
    1.dao层(单一职责原则)
    mybatis的映射文件,接口文件,pojo类.通过逆向工程自动生成
    SqlMapConfig.xml是mybatis的核心配置文件
    applicationContext-dao.xml 数据源,连接池,会话工厂,mapper包扫描
    2.service层:
    applicationContext-service.xml @Service包扫描
    applicationContext-trans.xml 配置事务(事务为保证数据的一致性,)
    3.controller层:
    springMvc.xml 注解扫描,注解驱动,视图解析器
    4.web.xml
    spring监听器,springMvc前端控制器

    五.参数绑定(就是controller方法可以接受的参数类型)
    1.SpringMvc默认支持的类型:
    可在controller方法上按照需求自主加上的参数:HttpServletRequest,HttpServletResponse,HttpServletSession,Model;
    2.简单数据类型:
    String,Double,Float,Integer,boolean等,要求接受变量的名称必须和页面上input框的name属性值相同;
    3.Pojo类型和Pojo包装类型:
    要求页面上input框的name属性值必须等于pojo中的属性.属性.属性.....
    4.自定义绑定类型
    也叫作converter自定义转换器,因为SpringMvc可以自动帮我们转换简单类型的参数,对于像date日期类型和字符串之间的转换就需要我们自己手动转换, springMvc无法转换,就需要自己编写自定义转换器来完成.其实就是在controller方法接收到真正参数之前, 对参数进行类型预处理.
    5.数组类型的参数绑定
    使用场景:批量删除;
    即可以在controller方法中直接接受数组,也可以将数组封装到vo的pojo里来接受,要求接受的变量名称必须等于页面复选框的name属性;
    6.List类型参数绑定
    使用场景:批量修改;
    controller方法中无法直接接受List,需要将List封装到pojo中,集合的变量名称[循环的下标],集合中泛型的属性名称必须等于页面input框name的属性值;

    六.Struts2和SpringMvc的区别:
    1.Struts2有被SpringMvc取代的趋势;
    2.Struts2:
    前端控制器使用strutsPreparedAndExcuteFilter,是一个过滤器;
    接受参数:采用模型驱动,也就是全局变量接受参数,因为全局变量线程不安全,所以struts的action采用多例的模式;
    返回数据:采用值栈;
    3.SpringMvc:
    前端控制器采用DispatcherServlet,是一个servlet;
    接受参数:采用方法级别的局部变量来接收参数,用完就销毁,线程安全,所以SpringMvc中的controller默认使用的是单例的;
    返回数据:SpringMvc返回数据时用的是model,model底层采用的是Request域,所以SpringMvc返回数据用的是Request域;

    七.@RequestMapping 注解的使用
    1.用在controller方法上:
    作用:标记url到请求方法的映射,其实就是通过它指定的一段url找到需要执行的方法对象,
    2.用在类上:
    作用:为防止controller方法的url重复,所以在类上多加一层
    3.限制请求类型:
    作用:如果不进行配置,任何请求都可以访问,如果限制了请求类型,则只有规定的类型才可以访问到此方法;
    eg:@RequestMapping(value = "/list", method = RequestMethod.POST)

    八.Controller方法返回值
    1.ModelAndView模型和视图
    将返回的数据放入model中,可以返回给页面
    view中记录了页面的位置
    2.String:
    a.返回字符串:
    返回的字符串就是页面的位置
    返回的数据可以借用默认参数model返回给页面
    b.请求转发:(跳转到本类或其他类的方法使用)
    特点:浏览器中的url地址不变,request域中的数据可以带到转发后的方法中;
    规则:在SpringMvc中的请求转发,是返回的字符串,以"forward:"开头后面加上转发的url地址;
    c.重定向:(跳转到本类或其他类的方法使用)
    特点: 浏览器url地址发生改变, request域中的数据不能带到重定向后的方法中.
    规则: 在springMvc中重定向, 是返回的字符串以"redirect:"开头后面加上重定向的url地址
    重定向如果想将数据发送到重定向后的方法中可以借助于model, model虽然底层使用的request域,但是它内部对request域进行了扩展.
     d.相对路径与绝对路径:
    在springMvc中的请求转发和重定向中,在forward:和redirect:后面的url路径以斜杠/开头的是绝对路径, 不以斜杠/开头的就是相对路径
    ①.相对路径: 相对于当前路径, 如果当前路径计算失误, 那么相对路径有可能错误.
    ②.绝对路径: 绝对路径从项目名后开始算, 不管在什么时候使用绝对路径不会出错

    4.void
    一般情况不使用这个返回值, 都是在ajax异步提交的时候使用.
    如果使用返回值为void, 那么返回页面的地址只能借助于原生的request或者是response;使用原生的request和response, 那么视图解析器不起作用, 所以页面要写完整的路径名称;这样就破坏了springMvc的体系流程, 不建议使用

    九.SpringMvc中异常处理
    作用: 异常是无尽的, 让用户看到500, 503体验不好, 所以需要从项目整体架构上hold住异常.
    异常类型:
    运行时异常, 就是bug
    自定义异常, 就是代码都正确, 但是违反正常企业业务逻辑.

    十.图片上传处理
    springMvc对于图片上传的支持只有接口没有实现, 可以使用第三方实现, Fileupload
    接收图片可以在controller方法中使用MultipartFile接口来接收, 接收的变量名称必须等于页面上上传域的name属性值

    十一.Json数据交互
    springMvc对json的支持只有接口,没事实现,我们可以用第三方实现(杰克逊实现),jackson.jar
    将json格式字符串自动转换成java对象?
    @RequestBody注解可以将传入的json格式字符串自动转换成pojo对象, 要求json的key必须等于pojo对象中的属性名称
    将java对象自动转换成json格式字符串返回?
    @ResponseBody注解可以将controller方法的返回值自动转换成json格式字符串返回.

    十二.Springmvc实现Restful
    其实restful就是对url命名的一种规范,
    要求url中只有名词, 没有动词, 并且没有问号传参数.

    十三.拦截器
    拦截器作用: 拦截请求, 一般在做用户权限认证的时候使用比较多
    单个拦截器执行顺序:
    ======Interceptor1==========preHandle====
    ======Interceptor1==========postHandle====
    ======Interceptor1==========afterCompletion====

    多个拦截器的执行顺序: 等于在springMvc.xml中配置拦截器的顺序
    ======Interceptor1==========preHandle====
    ======Interceptor2==========preHandle====










    展开全文
  • 众所周知,FlexViewer是由Esri公司推出的基于Web的Flex应用框架,开发人员通过配置文件即可快速搭建一个以地图服务应用为目的的富互联网应用。 ? ????? 学习FlexViewer,最重要的是掌握其框架结构,了解...
    ????? 上午做了关于FlexViewer的讲座,项目组决定下面继续在FlexViewer界面上拓展,因此我也有意通过博客与大家分享。众所周知,FlexViewer是由Esri公司推出的基于Web的Flex应用框架,开发人员通过配置文件即可快速搭建一个以地图服务应用为目的的富互联网应用。

    ?

    ????? 学习FlexViewer,最重要的是掌握其框架结构,了解FlexViewer组织模式,包括VierContainer、MapManager、ConfigManager、WidgetManager的关联关系,以及事件。本篇将重点讲述FlexViewer的组织原理以及开发方法,先从事件入手,通过事件的分发与监听,将FlexViewer中的各个Manager关联起来,进而明确其组织架构。

    ?

    ????? 1、Flex Viewer事件

    ????? 整个FlexViewer,有两个关于事件的类EventBus和AppEvent。EventBus继承自EventDispatcher类,它是一个singleton类,并且所有AppEvent的分发都要EventBus。AppEvent事件的构造函数如下,参数包括了事件类型(type),对象类型(data)以及回调函数:

    ????? public function AppEvent(type:String, data:Object = null, callback:Function = null)<br>
    ?? ? {<br>
    ??????? super(type);<br>
    ??????? _data = data;<br>
    ??????? _callback = callback;<br>
    ???? }

    ???? 事件类型:AppEvent的事件类型中涵盖了所有与FlexViewer相关的,其中比较重要的有:

    <br>
    ? ? ? APP_ERROR:APP错误事件<br>
    ????? CONFIG_LOADED:加载Config文件完成后调用事件

    ????? MAP_LOADED:加载地图完成后调用

    ????? SET_MAP_ACTION:与地图交互相关的事件,其data参数中包含有地图交互动作的token值,如Zoomin,Zoomout等;<br>
    ????? DATA_FETCH_ALL:获得所有数据时调用;

    ????? DATA_FETCH:获得数据时调用

    ????? DATA_CREATE_INFOWIDGET:创建Widget时调用<br>
    ? ??? WIDGET_RUN:Widget运行时调用;

    ????? WIDGET_CHANGE_STATE:Widget状态变化时调用,其data参数中包含了widgetID和State值<br>
    ????? WIDGET_FOCUS:Widget得到焦点时调用<br>
    ????? WIDGET_ADD:添加Widget时调用<br>
    ????? WIDGET_ADDED:widget已添加后调用

    ?

    ???? 2、掌握FlexViewer的架构

    ?

    <img src="http://dl.iteye.com/upload/attachment/599022/a839c1aa-2a27-31ff-a142-c83a7a37b726.bmp" alt="" width="756" height="473">

    ?

    ???? FlexViewer中,首先构造的UIComponet就是ViewContainer。ViewContainer中首先要通过httpservice加载config.xml文件,然后加载MapManger、ConfigManager、WidgetManager等对象;

    ?

    ???? MapManager与MapMangerSkin共同表达了FlexViewer主视图,实例化了Map对象,然后通过ViewContainer.DispatchEvent方法分发AppEvent.MAP_LOADED事件,事件的参数包含了事件类型(Type),还包含了对象类型(data参数),这样就可以通过AppEvent事件的监听获得Map对象了。

    ?

    ???? ConfigManger主要用于加载widget的xml文件,每一个widget实例化之前都要加载xml文件,在xml中可以定义一些全局的变量(如geometryservice等),加载完毕之后同样通过viewContainer.DispatchEvent分发 CONFIG_LOADED事件,并添加相应的事件监听。

    ?

    ???? WidgetManager主要用于加载Widget,任何widget制作之后都要在WidgetManager中才能使用,因此该类中主要是Widget相关的事件相应。

    ?

    <img src="http://dl.iteye.com/upload/attachment/599024/4c17e287-f281-3e0d-9e27-b88dafc75678.bmp" alt="">




    <ul style="display:none;">
    [*][url=http://dl.iteye.com/upload/attachment/599022/a839c1aa-2a27-31ff-a142-c83a7a37b726.bmp]<img src='http://dl.iteye.com/upload/attachment/599022/a839c1aa-2a27-31ff-a142-c83a7a37b726-thumb.bmp' class='magplus' title='点击查看原始大小图片' />[/url]


    [*]大小: 182.8 KB

    </ul>



    <ul style="display:none;">
    [*][url=http://dl.iteye.com/upload/attachment/599024/4c17e287-f281-3e0d-9e27-b88dafc75678.bmp]<img src='http://dl.iteye.com/upload/attachment/599024/4c17e287-f281-3e0d-9e27-b88dafc75678-thumb.bmp' class='magplus' title='点击查看原始大小图片' />[/url]


    [*]大小: 320.3 KB

    </ul>



    [list]
    [*][url=#]查看图片附件[/url]

    [/list]
    展开全文
  • Zookeeper提供了一套很好的分布式集群管理...dubbo主要解决了下中描述的问题,像阿里巴巴这种规模的互联网公司,旗下拥有一系列产品:淘宝、天猫、阿里旅行等。各个系统之间的业务具有一定程度的耦合性,例如支付...

     Zookeeper提供了一套很好的分布式集群管理的机制,就是它这猴子那个几月层次型的目录树的数据结构,并对书中的节点进行有效的管理,从而可以设计出多种多样的分布式的数据管理模型;下面简要介绍下zookeeper在Dubbo中的应用。

    dubbo主要解决了下图中描述的问题,像阿里巴巴这种规模的互联网公司,旗下拥有一系列产品:淘宝、天猫、阿里旅行等。各个系统之间的业务具有一定程度的耦合性,例如支付业务。如果按照传统的网站开发模式,将这些内部系统完全独立割裂,那么意味着,对于所有相同的业务逻辑,所有的系统都需要实现一遍,如果该公共模块发生变化,那么所有的系统需要重新出包发版本上线,随着公共模块数量的增加,这种耦合性对于后期迭代和运维而言无疑是一种灾难。

    为了解决上述的问题,阿里巴巴推出了强大的服务治理框架Dubbo,不同的系统要使用相同的模块,通过dubbo的方式去调用,主要有以下的过程,下面以支付服务为例进行说明:

    1-将开发好的RPC支付服务注册到Dubbo中;

    2-内部系统注入Dubbo客户端接口。实际上是注入一个动态代理,来调用中间件;

    3-内部系统拿到调用中间件获取的服务地址,然后去调用该服务;

    所以支付服务的调用者(内部系统1、2、3.。。)不需要关注该服务到底部署在那些节点上面,以及这些节点上面的负载均衡状态。这所有的一切都是由Dubbo进行管理,并告知调用者应该去调用哪一个节点。

    二Dubbo之所以能实现这种功能全依赖于ZooKeeper。

     

    转载于:https://www.cnblogs.com/maxigang/p/9796570.html

    展开全文
  • 它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的...
  • 它使用服务层框架可以将JavaBeans从Jsp/Servlet中分离出来,而使用表现层框架则可以将Jsp中剩余的JavaBeans完全分离,这部分JavaBeans主要负责显示相关信息,一般是通过标签库(Taglib)实现,不同框架有不同自己的...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 262
精华内容 104
关键字:

互联网公司结构框架图