Deploying the application
在我们运行Controller之前,必须对其进行编译。我们可以使用javac或者任何IDE去编译Controller。接下来,我们要让Tomcat知道我们的web应用程序。我们需要创建一个war包,然后部署到Tomcat中,这步只需要将war包拷贝到:/dev/Tomcat6/webapps目录下。
我们的.war文件中的/WEB-INF文件夹包含以下文件:
web.xml
induction-demoapp.xml
以下.jar文件在WEB-INF/lib中:
acciente-induction-1.x.xb.jar
acciente-commons-1.x.xb.jar
最后,以下工具jar包也同样在WEB-INF/lib中:
apache-bcel-5.2.jar
apache-commons-collections-3.2.1.jar
apache-commons-digester-1.8.jar
apache-commons-fileupload-1.2.1.jar
apache-commons-io-1.4.jar
apache-commons-logging-1.1.1.jar
apache-freemarker-2.3.12.jar
这些.jar文件分别来自于这些工程:Apache Commons库和Apache BCEL库来自Apache Software Foundation. Freemarker库源自Visigoth Software Society.
我们主意到应用程序类的代码(在这里,就是单个Controller类)没有存储在.war文件中,相反,我们会在应用程序的配置文件induction-demoapp.xml中指明编译后.class文件的位置.不管我们什么时候重新编译一个应用程序类,下一次访问这个类的时候,Induction会检测出class文件发生了变化,然后"热部署"到JVM中.因此,当我们修改或者编译应用程序类的时候,没有必要去重新创建或者重新部署war包.
Induction同样也支持将应用程序类放到.war的/WEB-INF/classes下,或者将.jar放到/WEB-INF/lib下,或者Tomcat可以找到的classpath下的其他任何位置.不过在开发中,我们推荐将应用程序类放在war包外面,这样可以通过class的"热重载"来提高生产率.如果有必要的话,应用程序类可以重新打包成.war文件用于传递.接下来,我们来看看war包里面的内容.
首先来看看web.xml.我们在web.xml中所需要做的就是定义Induction的dispatcher servlet去处理对应用程序的请求.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<description>DemoApp</description>
<servlet>
<servlet-name>demoapp</servlet-name>
<servlet-class>com.acciente.induction.dispatcher.HttpDispatcher</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demoapp</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
我们再来看看induction-demoapp.xml的内容.假设我们编译后的应用程序类是放在c:/project/demoapp/classes目录下,induction-demoapp.xml的内容就是:
<!-- this file contains the configuration for the Induction dispatcher -->
<config>
<!-- The following section allows you to specify locations from which
Induction will automatically reload a class if the file has changed -->
<java-class-path>
<compiled-directory>
<directory>c:/project/demoapp/classes</directory>
</compiled-directory>
</java-class-path>
</config>
创建好上面所描述的war包后,部署到Tomcat中.现在,我们可以开始运行我们的应用程序了.
Running the application
假设Tomcat运行在localhost:8080,war包的名字是induction-demo.war,在浏览器中输入以下URL:
http://localhost:8080/induction-demo/demoapp/helloworld1_app/HelloWorldController/
你会在浏览器输出界面看到字符串:
Hello World, using a simple println()
Controlling the URL resolution
现在我们来进一步的看下用来运行Controller的URL:http://localhost:8080/induction-demo/demoapp/helloworld1_app/HelloWorldController/.第一部分http://localhost:8080/induction-demo通过Tomcat指向dispatcher servlet,也就是说这一部分是与Induction无关的.通过Induction处理的URL部分是/demoapp/helloworld1_app/HelloWorldController/.
Induction把URL分解成完整的Controller类和方法名.把URL转换成Controller的类名和方法名,是通过Induction的ControllerResolver类口完成的.当开发者没有指定一个定制的Controller resolver时,Induction会默认使用一个相当简单的controller resolver.默认的controller resolver是这么工作的:分析路径/demoapp/helloworld1_app/HelloWorldController/,把第一个'/'到最后一个'/'之间的内容作为完整的类名(/demoapp/helloworld1_app/HelloWorldController/就是对应到demoapp.helloworld1_app.HelloWorldController).最后一个'/'后所有的内容作为方法名.在我们的例子中,最后一个'/'后没有任何字符串,因此默认的resolver会使用一个隐性的方法名(默认的resolver使用"handler"作为隐性的方法名,不过可以在Induction的配置文件中进行修改).
Dynamic reloading
我们来找点乐子,修改一下controller中打印的字符串的值,编译后重新刷新你的浏览器,你会发现修改起了作用.不必再经过"创建war包->重新部署->等待"的过程了.
Conclusion
总结一下我们的指南.在指南中,我们讨论了一些关键的思想,在接下来的view Tutorial中会介绍在Induction中如何使用views.Modles会在Modles Tutorial中进行介绍.
分享到:
相关推荐
【标题】:“wind-turbine-with-induction-generator.rar_Pitch angle_pitch wind”指的是一个关于风力发电机,特别是采用感应发电机并结合固定桨距角技术的风电系统。 【描述】:“Wind turbine with induction ...
it is the example for speed control of Induction motor with multilevel Inverter
标题中的"induction-motor.rar"表明这是一个关于感应电机(交流异步电机)的压缩文件。MATLAB文件的使用说明了这个压缩包可能包含了用MATLAB进行的感应电机相关计算和模拟。描述中的"induction-motor matlab file...
2. **触摸检测**: - 电容式触摸板通常使用X-Y网格结构,每个交叉点对应一个电容器。 - 当手指触碰面板时,该点附近的电容会减小,因为人体成为一个附加的导电体,与电容器并联。 - 测量每个电容器的电容变化,...
在本压缩包“dtc-of-induction-motor.rar”中,包含了一个名为“direct_torque_control1.mdl”的Simulink模型,用于模拟三相感应电机的DTC操作。 三相感应电机,又称为异步电机,是工业应用中最常见的电动机类型。...
标题中的“induction-motor.rar_Simulink motor_induction motor”表明这是一个关于三相感应电机(Induction Motor)在Simulink环境下的建模项目。Simulink是MATLAB软件的一个扩展,用于创建动态系统的可视化模拟。...
标题中的"Modelling-induction-motor.rar_motor generator"暗示了我们正在探讨的是关于电机建模,特别是交流感应电机(Induction Motor)的模型,并且这个模型可能是基于同步发电机(Synchronous Generator)启动的...
Induction motor matlab simulation
2. 设计算法:实现矢量变换,如克拉克变换和帕克变换,以及转矩和磁链的反馈控制算法。 3. 仿真设置:设定初始条件和边界条件,配置仿真时间、步长等参数。 4. 运行仿真:观察电动机转速、电流、磁链等变量的变化,...
安全培训教程"Construction Safety Induction"旨在确保所有参与施工的管理人员和工作人员都具备必要的安全知识和技能,以实现零伤害的安全目标。这份教程由崔莹(Ann Cui)编制和主讲,涵盖了多个关键领域,包括引言...
v/f control programming of induction motor
induction motor IFOC control
2. **电机结构**:书中详细介绍了感应电机的结构,包括定子和转子部分,以及它们的绕组配置。定子通常包含 squirrel-cage(鼠笼式)或 wound rotor(绕线式)转子,每种类型有其特定的性能特点和应用场景。 3. **...
异步电机矢量控制,采用坐标变换即svpwm理论实现的matlab仿真,适于毕业设计等初学人群。
Three_Phase_Induction_Motor:基于MATLAB Simulink的三相感应电机动态数学建模仿真模型。 仿真条件:MATLAB Simulink R2015b
commande victoriel indirect de la machyne asynchrone programme par matlabe
汽车诱导睡眠系统,做车辆主动安全项目用到的,下载后缩短你的开发
2. **计算电磁场**:利用法拉第电磁感应定律,根据定子和转子的电磁关系,计算转子的速度和位置对电磁扭矩的影响。 3. **建立机械模型**:将电磁扭矩转换为电机转速和位置的变化,这通常通过一个速度-位置转换器...
异步电机,也称为感应电机,是工业应用中最为广泛的一种电动机类型。能耗制动是一种在电机停止或减速时利用电机自身的电磁能量转化为热能,从而实现制动的技术。这种制动方式在很多场合下,比如电梯、起重机等需要...