Maven、Webx、Velocity学习总结

maven velocity 是一个maven+velocity整合的模板demo 立即下载

Maven、Webx、Velocity学习总结

目录

1. 综述

这两周的时间,通过看指南,看代码,跑实例,对淘宝网web应用开发框架有了一个整体的初步认识,主要包括四个方面:

Ø 项目管理工具Maven

Ø MVC框架Webx。

Ø Webx中的View层实现——Velocity

Ø Webx中的Model持久层实现——Ibatis

2. Maven部分

2.1. Maven基础

1. 坐标是指项目的唯一标识,以GAV(groupId,artifactId和version)区分, groupId包含公司和内部组(或产品线)的信息,如com.taobao.mercury,表示taobao.com下的mercury项目组;ArtifactId则表示项目的名称,如mercury-web,Version则表示某一Artifact的版本,如1.0-SNAPSHOT

2. 依赖是指项目所依赖的相关jar包

3. 仓库是指存放项目的产出(Artifact)的仓库,如http://mvnrepo.taobao.ali.com/mvn/repository

4. 插件是Maven的设计机制,Maven包含一个核心功能组件,而扩展功能都是通过插件完成,即使我们最常见的编译功能也是通过compiler插件完成的。

2.2. POM基础

1. 一个pom.xml文件包含以下基本信息:<modelVersion><groupId><artifactId><version><packaging><name><description><url><licenses><scm><connection><developers>

2.3. 依赖管理

1. 依赖定义具体到version

2. 依赖可以传递

3. <scope>标签定义依赖项的生效范围

4. 依赖的版本定义在父pom(项目pom)中,子pom(模块pom)设置<parent>,继承父pomclip_image003

5. 设置一个虚拟的总项目,多个实际项目作为总项目的模块

3. Webx部分

3.1. 一分钟Webx框架开发
3.1.1. 处理页面的基本流程(Turbine)

Webx是采用MVC三层架构。请求的上下文信息(RequestContext、ServletContext、HttpServletRequest、HttpServletResponse)被封装为RunData对象。在Web层和Biz层之间采用command模式实现对请求的处理。由MappingRuleService将请求分发到同名的业务处理类进行处理,处理结果被封装为Result对象。然后按照业务逻辑将所需信息放到TemplateContext中,由velocity取得并对VM模板进行渲染。最后产出的页面输出给用户。

有的请求并不要求返回页面,只需处理业务逻辑。

整个处理流程的控制由Pipeline(水管)中配置各种Valve(阀门)实现,简易的流程图如下:

clip_image005

图表 3‑1

3.1.2. Webx各层我们要做的工作的工作:

l V层(Web):采用Velocity书写vm模版,书写一个同名的Java类来接收Command,并处理业务逻辑(void execute(RunData,TemplateContext)),并根据处理得到的结果(Result对象),准备好vm模版中所需要的数据(TemplateContext.put(String key, Object value))。

l C层(Biz):书写AO对象处理Command,请求的上下文信息被封装在RunData对象中。AO中只包含简单的逻辑处理,真正的业务处理通常书写在Manager中。

l M层(ibatis):书写DAO对象负责和数据交互,持久层使用的是Ibatis。需要我们来建立数据物理模型并书写数据库操作的SQL语句。

3.2. Webx框架初探
3.2.1. Webx的基本概念

1. 页面驱动:以页面(view)为主导,先写页面,再写和页面配套的程序模块,通过规则,查找页面所对应的程序模块

2. Pull Tools:有一些定义在webx.xml中,另一些默认定义在框架中。这些tools可以再vm模板中被直接引用。Global作用域的tool在系统初始化时创建,Request作用域的tool在每次HTTP请求时创建。

3. Modules:turbine中的基本编程模块。Screen用来处理页面显示逻辑;Control和screen类似,但可以被别的screen或layout引用;Action处理用户提交表单。所有module都实现Module接口:public interface Module {void execute(RunData rundata) throws WebxException;}

3.2.2. Mecury项目目录结构

mercury

├─assets

├─biz

│ ├─src

│ │ ├─main.java.com.taobao

│ │ │ │ └─mercury

│ │ │ │ ├─amend

│ │ │ │ ├─ao

│ │ │ │ │ ├─correct

│ │ │ │ │ │ └─impl

│ │ │ │ │ └─impl

│ │ │ │ ├─aop

│ │ │ │ ├─biz

│ │ │ │ │ ├─domain

│ │ │ │ │ │ ├─mysqlmap

│ │ │ │ │ │ ├─oracle

│ │ │ │ │ │ ├─rowkey

│ │ │ │ │ │ └─sajiao

│ │ │ │ │ └─util

│ │ │ │ ├─cache

│ │ │ │ ├─dal

│ │ │ │ │ └─sajiao

│ │ │ │ ├─mananger

│ │ │ │ │ └─sajiao

│ │ │ │ ├─notify

│ │ │ │ ├─ob

│ │ │ │ │ ├─ao

│ │ │ │ │ ├─dal

│ │ │ │ │ └─mananger

│ │ │ │ ├─query

│ │ │ │ └─timetask

│ │ │ └─resources

│ │ └─test

│ └─target

└─deploy

mercury

└─protocal

├─.settings

├─src

│ ├─main.java.com.taobao

│ │ ├─common

│ │ └─mercury

│ │ ├─domain

│ │ └─util

│ │ └─partition

│ └─test

└─target

mercury

└─web

├─.settings

├─src

│ ├─main

│ │ ├─assembly

│ │ ├─filter

│ │ ├─java.com.taobao.mercury.web

│ │ │ ├─common

│ │ │ │ ├─service

│ │ │ │ ├─session

│ │ │ │ ├─util

│ │ │ │ └─valve

│ │ │ └─module

│ │ │ ├─action

│ │ │ ├─control

│ │ │ └─screen

│ │ ├─resources

│ │ │ ├─biz

│ │ │ │ ├─bean

│ │ │ │ └─persistence

│ │ │ └─top

│ │ │ └─config

│ │ └─webapp

│ │ ├─common

│ │ │ └─templates

│ │ │ └─screen

│ │ ├─default

│ │ │ └─templates

│ │ │ ├─control

│ │ │ ├─layout

│ │ │ └─screen

│ │ ├─META-INF

│ │ └─WEB-INF

│ │ ├─common

│ │ └─default

│ └─test.java.com.taobao.mercury

└─target

3.2.3. Webx应用启动流程

Webapp\WEB-INF\web.xml是SpringExt的配置文件,下面是mercury-web中的样本:

<?xml version="1.0" encoding="GB2312"?>

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<context-param>

<param-name>loggingRoot</param-name>

<param-value>${mercury.loggingRoot}</param-value>

</context-param>

......

<listener><listener-class>com.alibaba.citrus.logconfig.LogConfiguratorListener</listener-class>

</listener>

<!-- ???/WEB-INF/webx.xml, /WEB-INF/webx-*.xml -->

<listener>

<listener-class>com.alibaba.citrus.webx.context.WebxContextLoaderListener</listener-class>

</listener>

......

<filter>

<filter-name>sessionFilter</filter-name>

<filter-class>com.taobao.session.TaobaoSessionFilter</filter-class>

<init-param>

<param-name>tbsessionConfigGroup</param-name>

<param-value>${mercury.session.filter.group.name}</param-value>

</init-param>

<init-param>

<param-name>isloginSessionCheck</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>sessionFilter</filter-name>

<url-pattern>*.htm</url-pattern>

</filter-mapping>

......

<filter>

<filter-name>timer</filter-name>

<filter-class>com.alibaba.webx.filter.timer.TimerFilter</filter-class>

<init-param>

<param-name>threshold</param-name>

<param-value>${mercury.timer.threshold}</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>timer</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<filter>

<filter-name>webx</filter-name>

<filter-class>com.alibaba.citrus.webx.servlet.WebxFrameworkFilter</filter-class>

</filter>

<filter>

<filter-name>mdc</filter-name>

<filter-class>com.alibaba.citrus.webx.servlet.SetLoggingContextFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>mdc</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<filter-mapping>

<filter-name>webx</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<!-- ====================================================== -->

<!-- error pages -->

<!-- ====================================================== -->

<error-page>

<error-code>400</error-code>

<location>/error.html</location>

</error-page>

......

</web-app>

通过查资料,结合web.xml配置的内容,一个Webx应用的启动流程如下:

1. 初始化context-param

2. 执行各个listener,其中WebxContextLoaderListener初始化被Webx包装过的XmlWebApplicationContext(spring容器)及各个子容器,各种webx.xml里定义beans(包括<service>标签定义的服务)都被装载。

3. 加载各个filter:其中TimerFilter(timer)用来记录serverlet执行时间,WebxFrameworkFilter(webx)用来处理web请求,SetLoggingContextFilter(mdc)用来通过SLF4J MDC来记录用户和请求的信息。三者顺序为timer->webx->mdc。

clip_image001 web.xml中各种元素的含义:http://ajava.org/readbook/J2EE/servletjsphxbc2/17212.html

3.2.4. Webx响应和处理请求的流程(摘自Webx框架指南)

当一个HTTP请求到达时,首先由WebxFrameworkFilter接手这个请求(参考Webx应用启动流程),下图是WebxFrameworkFilter处理一个WEB请求的过程:

webx

如图所示,WebxFrameworkFilter接到请求以后,就会调用WebxRootController。从这里开始,进入Spring的世界。此后所有的对象:WebxRootController、WebxController、RequestContext、Pipeline等,全部是通过SpringExt配置在Spring Context中的。

WebxRootController对象存在于root context中,它被所有子应用所共享。它会创建RequestContext实例,从而增强request、response、session的功能。接下来,WebxController对象会被调用。

WebxController对象是由每个子应用独享的,子应用app1和app2可以有不同的WebxController实现。默认的实现,会调用pipeline。

Pipeline也是由各子应用自己来配置的。假如pipeline碰到无法处理的请求,如静态页面、图片等,pipeline应当执行<exit/> valve强制退出。然后WebxRootController就会“放弃控制”,这意味着request将被返还给/WEB-INF/web.xml中定义的servlet、filter或者返还给servlet engine本身来处理。

webapp\common\pipeline.xml配置了mercury-web的PipeLine:

<?xml version="1.0" encoding="UTF-8" ?>

<beans:beans xmlns:services="http://www.alibaba.com/schema/services"

......

xsi:schemaLocation="http://www.alibaba.com/schema/services

...... "

>

<services:pipeline

xmlns="http://www.alibaba.com/schema/services/pipeline/valves">

<prepareForTurbine />

<prepareForWebx2/>

<pl-valves:try-catch-finally>

<pl-valves:try>

<webx2-valve class="com.alibaba.turbine.pipeline.SetLoggingContextValve" />

<webx2-valve class="com.taobao.mercury.web.common.valve.DefaultAnalyzeURLValve" />

<webx2-valve

class="com.taobao.mercury.web.common.valve.SecurityCheckValve" />

<webx2-valve class="com.taobao.mercury.web.common.valve.SessionValve" />

<webx2-valve class="com.taobao.common.pagecache.webx.PageCacheValve"

p:action="start" />

<loop>

<choose>

<when>

<pl-conditions:target-extension-condition

extension="vm, jsp" />

<performAction />

<performTemplateScreen />

<renderTemplate />

</when>

<when>

<pl-conditions:target-extension-condition

extension="do" />

<performAction />

<performScreen />

</when>

<otherwise>

<exit />

</otherwise>

</choose>

<breakUnlessTargetRedirected />

</loop>

</pl-valves:try>

<pl-valves:finally>

<webx2-valve class="com.taobao.common.pagecache.webx.PageCacheValve"

p:action="end" />

<webx2-valve class="com.taobao.mercury.web.common.valve.SessionValve"

p:action="clean" />

<webx2-valve class="com.alibaba.turbine.pipeline.SetLoggingContextValve"

p:action="cleanup" />

</pl-valves:finally>

</pl-valves:try-catch-finally>

</services:pipeline>

</beans:beans>

假设用户以URL:http://favorite.daily.taobao.net/collect_list.htm来访问Webx应用。WebxFrameworkFilter接收请求,并且一路顺利到达pipeline。然后Pipeline开始依次执行它的valves(下面的描述略过一些相对次要的步骤):

1. <analyzeURL> - 分析URL

分析URL的目的是取得target,这里取得的target是collect_list.htm。如果用户访问的URL中并没有提供path信息,通常被理解为:用户想要访问“主页”。AnalyzeURL valve提供了一个可选的参数“homepage”,即是在这种情况下起作用。得到的target为“homepage”。

需要注意的是,target不代表模板名,也不代表类名。Target只是一个抽象的概念 —— 当前页面需要达成的目标。Target可能被后续的valves解释成模板名、类名或者其它东西。

2. 进入<choose> - 多重分支

很明显,“collect_list.htm”满足了第一个<when>所附带的条件:<target-extension-condition extension=" vm, jsp">,意思是target的后缀为“jsp”或为“vm”。

3. <performAction> - 执行action

和其它框架中的action概念不同,在Webx Turbine中,action是用来处理用户提交的表单的。

因为本次请求未提供action参数,所以跳过该步骤。

4. <performTemplateScreen> - 查找并执行screen。

如果target-extension为”do”,则没有<performTemplateScreen>这个valve。

这里要用到一个规则:target映射成screen module类名的规则。

假设target为xxx/yyy/zzz,那么Webx Turbine会依次查找下面的screen模块:

screen.xxx.yyy.Zzz,

screen.xxx.yyy.Default,

screen.xxx.Default,

screen.Default。

本次请求的target为collection_list.htm,因此它会尝试查找screen.collection_list类。

如果找到screen类,Webx Turbine就会执行它。Screen类的功能,通常是读取数据库,然后把模板所需要的对象放到TemplateContext中。

如果找不到,也没关系 —— 这就是“页面优先”:一些页面没有业务逻辑,因此不需要screen类,只需要有模板就可以了。

5. <renderTemplate> - 渲染模板

这里用到两个规则:target映射成screen template,以及target映射成layout template。

假设target为xxx/yyy/zzz,那么Webx Turbine会查找下面的screen模板:/templates/screen/xxx/yyy/zzz。Screen模板如果未找到,就会报404 Not Found错误。找到screen模板以后,Webx Turbine还会试着查找下面的layout模板:

/templates/layout/xxx/yyy/zzz

/templates/layout/xxx/yyy/default

/templates/layout/xxx/default

/templates/layout/default

Layout模板如果找不到,就直接渲染screen模板;如果存在,则把渲染screen模板后的结果,嵌入到layout模板中。

Layout模板和screen模板中,都可以调用control。每个页面只有一个screen,却可以有任意多个controls。

6. <breakUnlessTargetRedirected> - 内部重定向

在screen和action中,可以进行“内部重定向”。内部重定向实质上就是由<breakUnlessTargetRedirected>实施的 —— 如果没有重定向标记,就退出;否则循环到<loop>标签。

和外部重定向不同,外部重定向是向浏览器返回一个302或303 response,其中包含Location header,浏览器看到这样的response以后,就会发出第二个请求。而内部重定向发生在pipeline内部,浏览器并不了解内部重定向。

4. Velocity部分

尚未系统学习,只是看代码做了一些了解。

1. 模板以.vm为后缀名

2. $a:美元符“$”加上java中的引用名。可以引用的对象包括内置的对象,pull Service中pull到的对象,业务处理中put进TemplateContext中的对象

3. #set($a = $b):声明变量并赋值;

4. ##:velocity行注释

5. #if #elseif #else判断选择,最后用#end闭合

5. Ibatis部分

5.1. Ibatis的作用

Ibatis将数据库中的数据转换为java中的对象,方便C层对数据进行操作

5.2. Ibatis的配置

1. 属性文件*-persistence.xml

2. 总配置文件SqlMap-Config.xml

3. 映射文件collection_item_mapping.xml

springMVC+maven+velocity+数据源配置 springMVC架构,maven , velocity , 数据源配置在项目中(springMVC的配置文件中)。 立即下载

相关推荐

spring3 mvc+mybatis+velocity+maven

spring3 mvc mybatis velocity登录功能的简单实现,主要是想用下mybatis和velocity

Velocity详解——(maven管理)

本文讲解了velocity主要的模板方法,会了这些方法基本上就会了velocity。同时本java工程是用maven管理,(maven的使用,大家可以看我的另一篇文章)。用到的是1.7版本。代码如下:   pom.xml &lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20...

客家人@云 625

vmmaven:利用maven来学习Velocity技术

vmmaven 利用maven来学习Velocity技术。

使用Velocity建立maven项目

背景 最近接到了一个项目生成并自动编译的功能需求,在freemarker和Velocity的简单研究后,最终决定采用Velocity技术. Velocity相对于freemarker更加简单,更加轻量级,经过对项目的评估,Velocity完全可以满足需求 Velocity基本用法 项目结构 1. 创建要调用的模板 以项目的pom.xml为例 <?xml version="1.0" encod...

Java攻城师 1531

SpringMVC+Velocity+Maven整合例子

Spring4+Velocity2+Maven整合例子,idea开发。直接运行。

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 363

velocity maven java_velocity的使用-配置(Maven)

1.在pom.xml中添加依赖org.apache.velocityvelocity1.7org.apache.velocityvelocity-tools2.02.从velocity-tools-2.0.jar的org.apache.velocity.tools.view包中复制出velocity.properties和tools.xml文件到WEB-INF目录下,修改velocity.prop...

weixin_28811055的博客 975

深入理解「二进制掩码」:从原理到实践

二进制掩码本质上是一个二进制数,用于通过位操作(如与、或、非、异或等)选择性地操作目标数据的某些位。掩码的每一位(bit)可以看作一个“开关”,决定是否对目标数据的对应位进行操作。二进制掩码是位操作的灵魂,掌握它不仅能提升代码效率,还能解锁许多高级编程技巧。从基础的位提取到复杂的子集枚举,掩码的应用无处不在。希望本文的讲解和代码示例能帮助你快速上手,并在实际项目中灵活运用。如果你有更多关于掩码的疑问或应用场景,欢迎在评论区留言交流!

m0_73494933的博客 2432

velocity的使用-配置(Maven)

本文转载自:https://www.cnblogs.com/chuanqimessi/p/4691921.html   1.在pom.xml中添加依赖  1 &lt;dependency&gt; 2 &lt;groupId&gt;org.apache.velocity&lt;/groupId&gt; 3 &lt;artifactId...

代码君的博客 5748

ESP32S3 Korvo2V3四通道AEC配置实战:基于AFE的回声消除优化

本文详细介绍了在ESP32S3 Korvo2V3平台上配置四通道AEC(回声消除)的实战经验。通过AFE算法优化和硬件连接调试,实现高质量回声消除,显著提升智能音箱和会议设备的语音交互体验。重点解析了四通道配置、数据格式对齐和参数调优等关键技术要点。

elastic6hunter的博客 932

PNG编解码算法详解

1.PNG介绍 PNG是便携式网络图型( Portable Network Graphics)的缩写,由于PNG带有透明通道,无损压缩,可提升设计元素的呈现效果,因此设计上对PNG情有独钟,广泛的运用在设计、游戏、网页、app开发里,实际使用上由于存在很多误区,导致被滥用,这里对之前学习png的心得做个整理。 首先,PNG和诞生跟GIF格式有较大关系,这中间有很多趣事,可自行查阅。PNG的压缩过程是完全无损的,压缩过的文件可以准确的还原出原图,可封装多种pixfmt格式的数据,并且是一种可扩展的封装格式,

lemonHe的博客 1万+

【转载】Maven、Webx、Velocity学习总结

Maven、Webx、Velocity学习总结 目录 综述Maven Maven基础POM基础依赖管理 Webx 一分钟Webx框架开发 处理页面的基本流程(Turbine)Webx各层我们要做的工作的工作 Webx框架初探 Webx的基本概念Webx项目目录结构Webx应用启动流程Webx响应和处理请求的流程 VelocityIbatis Ib

zhangmengjlu的专栏 1107

永磁同步电机控制笔记:foc控制原理通俗讲义

引言 到此为止,永磁同步电机控制相关文章已经写了7篇,其中simulink仿真系列文章5篇,控制笔记系列文章2篇,恍惚间感觉少了一篇概论,在此插入一篇,也算是对入坑电机控制一年半来的知识梳理。 文章目录引言一、同步电机是怎么转起来的二、什么样的旋转磁场效率最高三、怎么精准控制旋转磁场的方向四、怎样调节dq轴电流 一、同步电机是怎么转起来的 永磁同步电机结构如下: 外围是定子绕组,中间为永磁体,设...

搞电机的博客 2万+

Maven、Webx、Velocity学习总结(很好理解的一篇文章)

http://www.cnblogs.com/reay300k/archive/2012/03/08/2385173.html http://tianya23.blog.51cto.com/1081650/683848

opzoonzhuzhengke的专栏 1131

RAG项目简历包装指南:从“流水线工人”到“问题解决者”的跃迁(附代码与思路)

本文代码已在Python 3.11 + CUDA 12.3环境测试,部分功能需LangChain 0.2+支持。

Conan_0728的博客 1885

逆向实战:喜马拉雅新版xm-sign算法解析与本地化生成方案

本文深入解析了喜马拉雅新版xm-sign算法的逆向过程与本地化生成方案。通过详细拆解browserid和sessionid的生成机制,提供了基于Node.js的核心代码实现,帮助开发者在不依赖官方环境的情况下生成有效签名。文章还涵盖了参数获取技巧、常见问题排查及性能优化建议,为爬虫开发者提供了实用的技术参考。

weixin_29256771的博客 299

webx 框架入门一

来阿里实习一个多月了,被拉着直接上新项目。由于新项目要使用webx,webx框架是淘宝的框架,比较厚重又复杂,但是性能毋庸置疑(毕竟每年双十一都挺过来了)。由于webx文档较少,基本都是阿里内部使用。在网上看了一个14年实习的师兄(现在在B2B基础架构)写的文章,觉得很有用,就收藏一下:1、快速搭建webx应用:在命令行中输入如下命令:(前提是安装了maven)详细参考webx官方文档:http:/

diu_brother的博客 8418

开源项目 ruoyi-sso-oauth2(一)环境配置

Ruoyi若依实现单点登录SSO、oauth2认证

Xiaoweidumpb 9683

创建Velocity项目,使用Maven2管理

需求: 创建Velocity项目,使用Maven2管理项目代码 问题: Velocity模板文件的路径找不到 解决方法:项目的上下文路径为项目名 步骤: 1、创建项目名为webx-app,目录结构为: webx-app |-- src |-- main |-- java |-- com.mycompany.web.action.SampleServlet   |       ...

还是会寂寞 236

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

webx学习

Maven、Webx、Velocity学习总结   Webx学习笔记   Webx3.0学习笔记(三):Webx执行流程     W​E​B​X​ ​入​门   http://wenku.baidu.com/view/92cee71714791711cc7917d8.html###   http://www.open-open.com/doc/view/dd2840bc3...

wanxiaotao12-126-com 151

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)的方法

一、配置SVN详细图解 什么是SVN?       管理软件开发过程中的版本控制工具。       下面会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤,以myeclipse 2014为例,第一种是最常见的,也是本人所推荐的;下面的部分资料来自网络。 1.方式一   (1)下载SVN插件          http://subclipse.tigris

ykblog.github.io 4923

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

利用maven创建webx3项目——实现简单的留言板(三)

github:https://github.com/wade6/messageboard-webx3   创建留言板项目基础   1、创建项目   还是从创建项目开始,这次将项目的名称换一下,命令如下:     mvn archetype:generate -DgroupId=com.alibaba.webx3 -DartifactId=messageboard...

wade6的博客 244

Webx3框架(1)

Webx是淘宝开发的一套Web开发框架,Webx3是其第三个升级版本;采用Eclipse的开发环境,现在支持java开发; 采用turbine原型的MVC框架,扩展了Spring容器,利用Maven进行项目的构建管理,灵活的ibatis持久层支持,总的来说,还是一套很不错的Web框架。 Webx3遵循turbine风格,velocity的模板被分为layout/screen/control三部...

Bill's Blog 180
上一篇: Java开发牛人十大必备网站
下一篇: strcut2学习
network_boy
博客等级 码龄12年 9粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值