精华内容
参与话题
问答
  • Web Work 简介

    千次阅读 2017-06-02 12:52:47
    通过使用WebWork我们就可以在浏览器后台使用JavaScript,而不占用浏览器自身的线程,WebWorker可以提高应用的额总体性能。一般来说,点击一个按钮运行 javascript 后,在这段代码运行完毕之前页面时无法响应客户的...

    通过使用WebWork我们就可以在浏览器后台使用JavaScript,而不占用浏览器自身的线程,WebWorker可以提高应用的额总体性能。一般来说,点击一个按钮运行 javascript 后,在这段代码运行完毕之前页面时无法响应客户的操作的,但是代码可以交给WebWorker运行,这样javascript依然可以响应用户的操作。
    WebWorker可以分为两种类型:dedicated Web WorkerShared Web Worker,在javascript中work代表dedicated Web Worker ,及单线程,随着当前页面的关闭而结束,也就意味着代码只能被创建他的页面使用;ShareWork代表 Shared Web Worker,及多线程,可以由多个页面进行访问。
    使用方法同WebSocket

        var worker = new Worker('dedicated.js');//创建一个专线,并给Worker的构造函数提供一个指向Javascript文件资源的URL即可
        worker.onmessage = function (event) { ... };//接收专线传过来的数据
        worke.addEventListener('message', function(event){})

    ShareWork 让js多线程,最重要的用途就是从多个页面中提取公共模块,当服务器有跟更新的时候先由ShareWorker处理,然后再由ShareWorker发送到所有的相关页面,这样无论用户同时打开多少个页面,都不会产生冗余对的长连接。
    例如淘宝,想让游览器选项卡之间进行通信(也可以用cookie等,但是成本高),

    var worker = new SharedWorker('sharedworker.js', ’mysharedworker’ );//第二个参数如果提供,那么这个参数将作用于这个共享线程的名称。
        worker.port.onmessage = function(event){...};//从端口接收数据
        worker.port.postMessage('字符串');//向端口发送普通的文本数据
        worker.port.postMessage({ username: 'usertext'; 
        live_city: ['data-one', 'data-two', 'data-three','data-four']});//向端口发送结构化数据。json数据格式
    通过terminate()来终止服务。
    
    展开全文
  • Struts2

    千次阅读 2015-03-07 13:26:47
    Struts框架拥有两个主要的版本,分别是Struts 1.x 和Struts 2.x 版本,它们都是遵循MVC思想的开源框架。 注意:Struts 2 框架并不是核心控制...它将Struts技术与WebWork技术完美地结合起来。 一、Struts2 工作流程 1、

    Struts框架拥有两个主要的版本,分别是Struts 1.x 和Struts 2.x 版本,它们都是遵循MVC思想的开源框架。

    注意:Struts 2 框架并不是核心控制器Struts 1 的升级版,而是一个全新的框架,在体系结构上与Struts 1 也存在着较大的差距。

    它将Struts技术与WebWork技术完美地结合起来。

    一、Struts2 工作流程

    1、用户发出一个 HttpServletRequest 请求。

    2、这个请求经过一系列的过滤器 Filter 来传送。【如果Struts2 与Site Mesh 插件以及其他框架进行了集成,则请求首先要经过可选的ActionContextCleanUp过滤器】

    3、调用FilterDispatcher(核心控制器)【Struts 2框架的基础,包含了框架内部的控制流程和处理机制。】,它通过询问ActionMapper来确定该请求是否需要调用某个Action。如果需要调用某个Action,则FilterDispatcher就把请求转交给ActionProxy处理。

    4、ActionProxy通过配置管理器 Configuration Manager 询问框架的配置文件struts.xml,从而找到需要调用的Action类。

    5、ActionProxy 创建一个ActionInvocation的实例,该实例使用命名模式来调用。在Action执行的前后,ActionInvocation实例根据配置文件加载与Action相关的所有拦截器Interceptor。

    6、一旦Action执行完毕,ActionInvocation实例根据struts.xml文件中的配置找到相对应的返回结果。【返回结果通常是一个Jsp或者FreeMarker的模版。】

    7、最后,HttpServletResponse响应通过web.xml文件中配置的过滤器返回。



    基本简要流程如下:

          1、客户端浏览器发出HTTP请求。

          2、根据web.xml配置,该请求被FilterDispatcher接收。

          3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

          4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

          5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

          6、返回HTTP响应到客户端浏览器。


    最简单的七个步骤:

          1:客户端在浏览器中输入一个url地址。

          2:这个url请求通过http协议发送给tomcat。

          3:tomcat根据url找到对应项目里面的web.xml文件。

          4:在web.xml里面会发现有struts2的配置。

          5:然后会找到struts2对应的struts.xml配置文件。

          6:根据url解析struts.xml配置文件就会找到对应的class。

          7:调用完class返回一个String字符串,根据struts.xml返回到对应的jsp。

     

     

    struts2标签分类:

          1.表单UI标签

          2.非表单UI标签

          3.控制标签

          4.数据标签

     

     

    为什么使用struts2?

          1.开源

          2.mvc框架

          3.纯pojo的Action

          4.更好的标签特性

          5.易测试

          6.易扩展



    二、配置

    web.xml【struts2-core-2.2.1.jar】

    	<filter>
    		<filter-name>struts2</filter-name>
    		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    	</filter>
    	<filter-mapping>
    		<filter-name>struts2</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>

    struts.xml【struts-2.0.dtd】

    <?xml version="1.0" encoding="UTF-8"?>
       <!DOCTYPE struts PUBLIC 
    	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    	"http://struts.apache.org/dtds/struts-2.0.dtd">
    <struts>
    	<constant name="struts.devMode" value="true" />
    	<constant name="struts.i18n.encoding" value="utf-8" />
    	<package name="default" namespace="/" extends="struts-default">
    		<action name="userAction" class="action.UserAction">
    			<result name="success">/success.jsp</result>
    		</action>
    	</package>
    </struts>

    Action类继承ActionSupport。


    展开全文
  • Tomcat部署web项目

    2012-03-09 09:13:02
    Tomcat下有7个目录,分别是bin,conf,lib,logs,temp,webapps,work 目录,现在对每一目录做介绍。 Tomcat根目录在tomcat中叫, 1./bin: 存放各种平台下启动和关闭Tomcat的脚本文件。 2./lib:...
    操作前,先来了解一下Tomcat的目录结构。

    (适用于Tomcat 6.0,Tomcat7.0)

    Tomcat下有7个目录,分别是bin,conf,lib,logs,temp,webapps,work 目录,现在对每一目录做介绍。

    Tomcat根目录在tomcat中叫<CATALINA_HOME>,

    1.<CATALINA_HOME>/bin: 存放各种平台下启动和关闭Tomcat的脚本文件。

    2.<CATALINA_HOME>/lib: 在lib目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR。
    3.<CATALINA_HOME>/work: Tomcat把各种由jsp生成的servlet文件放在这个目录下。
    4.<CATALINA_HOME>/temp: 临时活页夹,Tomcat运行时候存放临时文件用的。
    5.<CATALINA_HOME>/logs: 存放Tomcat的日志文件。
    6.<CATALINA_HOME>/conf: Tomcat的各种配置文件,最重要的是server.xml。

    7.<CATALINA_HOME>/webapps: Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录。



    1.war包部署:

    将需要发布的web应用打成war文件,(例如:ROOT.war) 拷贝到<CATALINA_HOME>/webapps下,

    启动Tomcat,

    如果是ROOT.war,直接通过http://ip:port/即可访问

    如果是xxxx.war,可通过http://ip:port/xxxx/访问



    2.目录部署:

    通过在server.xml中新建Context,部署一个JSP应用程序。

    打开<CATALINA_HOME>/conf/server.xml文件,在Host标签内建一个Context,内容如下。:
    <Context path="/xxxx" reloadable="true" docBase="D:\myapp" workDir="D:\myapp\work"/>
    其中path是虚拟路径,docBase是JSP应用程序的物理路径,workDir是这个应用的工作目录,存放运行是生成的于这个应用相关的文件。

    启动Tomcat,可通过http://ip:port/xxxx/访问



    3.重定向web应用程序的目录:

    如果想在服务器上运行一个以上的Tomcat实例,公用一个Tomcat发行版文件,

    或者想在升级Tomcat时,覆盖原来的配置文件,而不影响现有的web应用程序,

    那么“重定向web应用程序的目录”方式部署是一个不错的选择。



    假如Tomcat发行版安装路径是:/opt/Tomcat/,

    Web应用名为aubapp,

    在/srv/下建立目录aubapp

    在/srv/aubapp/下建立目录webapps,work,temp,conf

    将/opt/Tomcat/conf/下的所有内容,拷贝到/srv/aubapp/conf/下,



    采用方案1,将war包拷贝到/srv/aubapp/webapps/下,

    或者方案2,修改/srv/aubapp/conf/server.xml文件制定应用路径



    编写启动脚本start.sh,我习惯于将其放在/srv/aubapp/bin/下



    Shell代码
    #!/bin/sh   
    #设置web应用程序目录
    export CATALINA_BASE="/srv/aubapp"
    #设置Tomcat发行版安装目录
    export CATALINA_HOME="/opt/Tomcat"
    #后台启动Tomcat,并将控制台日志重定向
    nohup sh /opt/Tomcat/bin/catalina.sh run >../logs/tomcat.log 0</dev/null 2>&1 &

    #!/bin/sh
    #设置web应用程序目录
    export CATALINA_BASE="/srv/aubapp"
    #设置Tomcat发行版安装目录
    export CATALINA_HOME="/opt/Tomcat"
    #后台启动Tomcat,并将控制台日志重定向
    nohup sh /opt/Tomcat/bin/catalina.sh run >../logs/tomcat.log 0</dev/null 2>&1 & 启动后,访问方式与war包部署和目录部署一样。
    展开全文
  • js 多线程的方式:web work

    千次阅读 2018-07-17 19:16:57
    1.web work W3S:https://www.w3schools.com/htmL/html5_webworkers.asp WebWork 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web...

    1.web work

    W3S:https://www.w3schools.com/htmL/html5_webworkers.asp

    WebWork 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

    注意:dom是不能被异步操作的! WebWork不能在本地使用

     

    webwork.html

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <title>JavaScript多线程</title>
        <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
        <style type="text/css">
        div {
            width: 100px;
            height: 100px;
            cursor: pointer;
            background: orange;
        }
        </style>
    </head>
    
    <body>
        <div id="test">
            测试点击
        </div>
    
        <script type="text/javascript">
        $('#test').click(function() {
            alert(1);
        });
    
        var worker = new Worker("task.js");
        worker.onmessage = function(event) {
            // 消息文本放置在data属性中,
            // oBox.innerHTML = event.data;
            alert(event.data);
        }
        worker.postMessage(500000);
        </script>
    </body>
    
    </html>
    
     

     

    task.js

    onmessage = function(event) {
        var num = event.data;
        var result = 0;
        for (var i = 0; i < num; i++) {
            result += i;
            console.log(result);
        }
    
        // 向线程创建源送回消息
        postMessage(result);
    }

     

     

    2.Concurrent.Thread.js

    下载地址:http://download.csdn.net/download/include_define/796952

    教程文档:http://www.cnblogs.com/0banana0/archive/2011/06/01/2067402.html

    展开全文
  • How Web Forms Work

    2005-09-07 23:41:00
    How Web Forms WorkJust as youll find when working with Windows Forms, ASP.NET Web Forms raise events in a certain order as the page initializes and loads. ASP.NET also raises events in response to us
  • 添加DVWP(数据视图Web部件) 1. SharePoint Designer中打开页面,光标放置在要添加DVWP的地方。建议使用拆分模式。 2. 插入----数据视图----空白数据视图。  如果你选择了某个列表或库,你将得到一个XLV而不是...
  • 本示例说明如何使用Pentaho MapReduce把原始web日志解析成格式化的记录。 一、向HDFS导入示例数据文件 将weblogs_rebuild.txt文件放到HDFS的/user/grid/raw/目录下(因资源有限,本示例只取了这个文件的前10行数据...
  • 概览: Contacts列表 ----
  • WebWork

    2018-11-28 15:44:38
    WebWork
  • webwork

    2016-08-27 12:06:22
    多线程技术在服务端技术中已经发展的很成熟了,而在Web端的应用中却一直是鸡肋 在新的标准中,提供的新的WebWork API,让前端的异步工作变得异常简单。 使用:创建一个Worker对象,指向一个js文件,然后通过Worker...
  • WEBWORK

    2007-08-14 10:16:00
    webwork2是一个优秀的J2EE web程序MVC框架,作为一个传统的框架,在2.2以后和struts2进行合并为一个新型的统一框架。其提供了很多工具可以使初学者快速入门,从而进行敏捷开发,以下是我的尝试:到官方网站下载...
  • web.xml中加入spring的listener 代码如下: org.springframework.web.context.ContextLoaderListener

空空如也

1 2 3 4 5 ... 20
收藏数 22,214
精华内容 8,885
关键字:

webwork