Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的.
Web应用的发布描述文件:
web应用发布描述文件可以在应用开着者,发布者和组装者之间传递配置信息,Web容器在启动的时候从该文件中读取配置信息,根据它来装载和配置web应用.文档类型定义DTD对XML文档的格式做了定义,DTD吧XML文档划分为元素,属性,实体每一种XML文档都有独自的DTD文件.可以从网上下载.<web-app>元素是web.xml的根元素,其他元素必须嵌入在<web-app>元素之内.要注意的是子元素也是有顺序的比如必须是首先<servlet>,然后<servlet-mapping>最后<taglib>.
为Struts应用配置Web.xml文件:
首先最重要的一步是配置ActionServlet,这个用<servlet>标签的servlet-name属性起一个名字叫action,然后用servlet-class属性指定ActionServlet的类.
然后用<servlet-mapping>标签的servlet-name属性指定action,在用url-pattern指定接收范围是*.do的请求.不管应用中包含了多少子应用,都只需要配置一个ActionServlet,类来出来应用中的不同的功能,其实者就是不必要的,因为Servlet本身就是多线程的,而且目前Struts只允许配置一个ActionServlet.声明ActionServlet的初始化参数:<servlet>的<init-param>子元素用来配置Servlet的初始化参数.param-name设置config参数名.param-value设置struts-config.xml的路径参数值.
配置欢迎使用清单:
如果客户访问Web的时候值是访问了WEB应用的根目录URL.没有具体的指定文件,Web会自动调用Web的欢迎文件.<welcome-file-list>元素来配置的.通过其中的<welcome-file>欢迎页面</welcome-file>来配置.
配置错误处理:
尽管Struts框架功能强大的错误处理机制,但是不能保证处理所有的错误或者异常.当错误发生时,如果框架不能处理这种错误,把错误抛弃给Web容器,在默认的情况下web容器会想客户端返回错误信息.如果想避免让客户看到原始的错误信息,可以在Web应用发布描述文件中配置<error-page>元素.通过<error-code>404来定义错误的类型.然后通过<location>要处理错误的JSP页面来对错误进行处理.还可以用<exception-type>来设置异常,然后通过<location>来处理异常的JSP页面来处理异常.
配置Struts标签库:
这个就和以前学到的JSP自定义标签类似,配置元素为<taglib>来配置.<taglib-uri>这个指定标签库的uri,类似起一个名称.<taglib-location>这个是标签库的位置也就是实际所在的路径.通过这样的方法引入一个标签库,然后在前台JSP页面就可以通过自己定义的URI来调用标签.
Struts配置文件:
struts-config.xml文件.
首先研讨一下org.apache.struts.config包,在struts应用启动的时候会把Struts配置文件信息读取到内存中,并把它们存放在config包中相关的JavaBean类的实例中.包中的每一个类都和struts配置文件中特定的配置元素对应,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整个config包的核心,在Struts运行时来存放整个应用的配置信息.如果有多个子应用都会有一个ModuleConfig对象,它和Struts文件根元素的<struts-config>对应.根元素中包含<form-bean><action><forward>等元素.
<struts-config>元素:时Struts配置文件的根元素,和它对应的配置类ModuleConfig类,<struts-config>元素有8个子元素.他们的DTD定义是data-sources?form-bean? global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必须按照DTD指定的先手顺序来配置<struts-config>元素的各个子元素,如果颠倒了这些子元素的顺序,会产生错误.
<data-sources>元素:用来配置应用所需要的数据源,数据源负责创建和特定的数据库的连接.许多数据源采用连接池的机制实现.以便提高数据库访问的性能.JAVA语言提供了javax.sql.DataSource接口,所有的数据源都必须实现这个接口.许多应用服务器和Web服务器都提供了数据源组件.很多数据库厂商也提供了数据源的实现.<data-sources>元素包含多个<data-source>子元素永远配置特定的数据源.他们可以包含多个<set-property>子元素用于设置数据源的各种属性.配置了数据源以后,就可以在Action类中访问数据源,在Action中定义了getDataSource(HttpRequest)方法,用于获取数据源对象的引用.然后可以利用DataSource对象调用getConnection获取一个连接对象对数据库进行操作.在配置文件中声明多个数据源的时候需要为每一个数据源分配唯一的Key值,通过这个来表示特定的数据源.获取特定的数据源的时候可以用dataSource = getDataSource(reqeust,”A”);
<form-beans>元素:用来配置多个ActionForm,包含一个或者N个<form-bean>子元素.每个<form-bean>元素都包含多个属性.className指定和<form-bean>匹配的类.name指定该ActionForm的唯一标识符,这个属性是必须的以后作为引用使用.type指定ActionForm类的完整类名,这个属性也是必须的.注意包名也要加上.<form-property>是指定动态的Form的元素,以后会深入了解.
<global-exception>元素:用于配置异常处理,元素可以包含一个或者多个<exception>元素,用来设置JAVA异常和异常处理类ExceptionHandler之间的映射.className指定和元素对应的配置类,默认的不用动.handler指定异常处理类默认是ExceptionHandler.key指定在本地资源文件中异常的消息Key,path指定当前异常发生的时候转发的路径.scope指定ActionMessages实例存放的范围.type指定需要处理异常类的名字,必须的.bundle指定Resource Bundle.
<global-forwards>元素:用来声明全局转发,元素可以有一个或者N个<forward>元素组成,用于把一个逻辑名映射到特定的URL,通过这种方法Action类或者JSP页面无需指定URL,只要指定逻辑名称就可以实现请求转发或者重定向.这样可以减少控制组件和视图的聚合.易于维护.className对应的配置类.contextRelative如果为true表示当path属性以/开头的时候,给出的是对应的上下文URL默认是false.name转发路径的逻辑名,必须写.path转发或者重定向的URL,必须写必须是以/开头.redirect设置为true的时候表示执行重定向操作,此项为false的时候,表示执行请求转发操作.重定向与请求转发的区别以后就是重定向是把请求生成应答给客户端然后在重新发送给定向的URL,浏览器地址栏会有显示.而转发就是直接把请求转发给本应用的另一个文件,不生成应答所以客户端IE没显示.
<action-mapping>元素:包含一个或者N个<action>元素,描述了从特定的请求路径到响应的Action的映射.在<action>元素中可以包含多个<exception>和<forward>子元素,他们分别配置局部异常处理和局部转发.attribute设置Action关联的ActionForm在request或者session范围内的key.就是在request或者session共享内的名称.className对应配置元素的类.默认的是ActionMapping.forward指定转发URL路径include指定包含URL路径.input指定包含表单的URL,当表单验证失败的时候发送的URL.name,指定和该Action关联的Form名字.该名字必须是在form-bean中定义过的,可写可不写.path必须/开头的方位Action的路径.parameter指定Action配置参数.在Action的execute()方法中可以调用ActionMapping的getParameter()方法来读取匹配的参数.roles指定允许调用该Action的安全角色,多个角色之间逗号格开.scope指定Form的存在范围.默认是session.tyep指定Action的完整类名.unknown如果是true表示可以处理用户发出的所有的无效的ActionURL默认是false.validate指定是否调用ActionForm的validate方法.
<controller>元素:用于配置ActionServlet.buffreSize指定上载文件的输入缓冲大小.该属性为可选默认4096.className指定元素对应的配置类,ControllerConfig.然后是contentType指定响应结果内容类型和字符编码,该属性为可选,默认是text/html如果在Action或者JSP网页也设置了类型内容,会覆盖这个.locale指定是否把Locale对象保存到当前用户的session中默认false.tempDir指定处理文件上载的临时工作目录.nochache如果是true在响应结果中加入特定的头参数.
<message-resources>元素:用来配置Resource Bundle.用于存放本地文本消息文件.className元素对应的配置类.MessageResourcesConfig.factory指定消息的工厂类.key指定文件存放的Servlet对象中采用的属性Key.null指定如何处理未知消息.parameter指定消息的文件名.
<plug-in>元素:用于配置Struts插件.
配置多应用模块:所有的子应用都可以共享同一个ActionServlet实例,但是每个子应用都有单独的配置文件.把应用划分为多个子应用模块.首先为每个应用创建单独的Struts配置文件,在web.xml的ActionServlet配置代码中添加几个子应用信息.采用<forward>元素来实现应用之间的切换.
Digester组件:是一个Apache的另一个开源代码项目.当Struts被初始化的时候,首先会读取并解析配置文件,框架采用Digester组件来且西配置文件.然后创建config包中的对象.者对象用于存放配置信息.
其实配置文件不难,只要都理其中的原理就OK了.真正实际的项目开发中,采用的工具例如Eclipse系列,提供了相应的插件,在创建一个Struts工程的时候配置文件的标签都是自动生成的,而我们只需要往里面填写属性就OK了.
分享到:
相关推荐
scratch少儿编程逻辑思维游戏源码-战舰 v2.0.zip
(E卷,100分)- 最大矩阵和(Java & JS & Python & C).html
WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,极大地提高了实时性,被广泛应用于即时通讯、在线游戏、股票交易等领域。本篇将详细讲解如何使用C#来实现WebSocket,以及Fleck库在其中的作用。 WebSocket协议基于HTTP的握手过程,但一旦连接建立,它就不再依赖HTTP,而是通过TCP直接通信。在C#中,我们可以利用.NET Framework或.NET Core提供的System.Net.WebSockets命名空间来创建WebSocket服务器和客户端。然而,对于更高级的功能和更好的灵活性,开发者通常会选择第三方库,如Fleck。 Fleck是C#中一个轻量级且高效的WebSocket服务器实现。它提供了丰富的事件驱动API,使得开发者可以轻松地处理WebSocket连接的建立、消息传递和断开等操作。下面我们将探讨Fleck的使用步骤: 1. **安装Fleck**:你需要在你的项目中添加Fleck库。如果你使用的是NuGet包管理器,可以通过搜索"Fleck"并安装来获取。 2. **初始化服务器**:在C#代码中,首先创建一个Fleck服务器实例,指定监听的IP地址和端口号。例如: ```csharp var server = new Fleck.WebSocketServer("ws://localhost:8080"); ``` 3. **配置服务器**:你可以设置各种配置选项,如最大接收/发送缓冲区大小、心跳间隔等。然后注册事件处理器,如OnOpen、OnClose、OnMessage等,以处理客户端连接、断开和消息接收。 4. **连接事件**:`OnOpen`事件在客户端连接时触发,你可以在这里对新连接进行初始化操作,如存储连接信息、验证用户等。 5. **消息处理**:`OnMessage`
实训商业源码-苍穹衔电街电共享充电宝挂机源码-毕业设计.zip
内容概要:本文详细介绍了基于Android Studio开发的日历备忘录记事本项目,涵盖日历查看、添加备忘录、闹钟提醒和删除备忘录等功能。项目使用SQLite数据库进行数据管理和持久化,利用AlarmManager实现闹钟提醒功能。文章深入讲解了各个功能模块的实现细节,如日历视图的使用、数据库操作类的设计、闹钟设置的逻辑以及界面交互的优化。此外,还探讨了一些常见的开发技巧和注意事项,如时间戳的存储、手势识别的应用等。 适用人群:适用于初学者和有一定经验的Android开发者,尤其是希望深入了解SQLite数据库操作和AlarmManager使用的开发者。 使用场景及目标:① 学习如何使用Android Studio构建完整的应用程序;② 掌握SQLite数据库的基本操作,包括建表、增删查改;③ 理解AlarmManager的工作机制及其在实际项目中的应用;④ 提升用户体验,如优化界面交互和提高代码质量。 其他说明:文中提供的源码和详细的代码注释有助于读者更好地理解和实践。同时,项目中预留了一些扩展任务,鼓励读者进一步探索和提升技能。
内容概要:本文详细介绍了如何使用TensorRT加速YOLOv5模型推理,并结合QT框架搭建一个多任务并行处理的智能监控平台。主要内容包括:YOLOv5与TensorRT的融合,通过将YOLOv5模型转换为ONNX格式并进一步转化为TensorRT引擎,从而大幅提升推理速度;QT框架的应用,利用其跨平台特性实现视频监控、录像回放、电子地图等多种功能;16路视频并行检测的具体实现,通过多线程机制和CUDA流的支持,确保系统的高效运行。此外,文章还探讨了模型热更新、网络流处理、日志记录等方面的优化措施。 适合人群:具备一定编程基础,尤其是熟悉C++、Python和深度学习框架的研究人员和技术开发人员。 使用场景及目标:适用于需要高效、智能监控解决方案的企业和个人开发者。主要目标是提高视频监控系统的效率和智能化水平,如安防监控、交通监测等领域。 其他说明:文中提供了大量代码示例,帮助读者更好地理解和应用所介绍的技术。同时强调了系统设计中的性能优化技巧,如内存管理和多线程调度等。
内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态的运料小车控制系统的设计与实现。首先阐述了系统的IO分配,明确了输入输出信号的具体连接方式,如限位开关和电机控制信号。接着讲解了接线图原理图,包括电源连接、信号传输路径等。然后展示了梯形图程序的关键逻辑,如初始化、正反向运行控制等,并进行了详细的代码解析。最后介绍了MCGS组态画面的设计,通过图形化界面实现了对小车运行状态的实时监控和操作。 适用人群:适用于从事自动化控制领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:该系统主要用于工厂自动化生产线中物料运输的小车控制,旨在提高生产效率和安全性。通过合理的硬件配置和软件编程,实现小车的自动往返、限位保护等功能,确保系统稳定可靠运行。 其他说明:文中还分享了一些实际调试过程中遇到的问题及其解决方案,强调了硬件线路和软件逻辑相结合的重要性。此外,提出了一些改进措施,如增加历史轨迹记录、优化传感器信号处理等。 标签1:PLC编程,标签2:MCGS组态,标签3:自动化控制,标签4:S7-200,标签5:运料小车
实训商业源码-超漂亮的响应式个人主页-毕业设计.zip
scratch少儿编程逻辑思维游戏源码-准备做一个射箭游戏.zip
实训商业源码- 深蓝健身房瑜伽馆行业V4.14.0 小程序前端+后端-毕业设计.zip
实训商业源码-thinkphp小雨网址导航网整站源码-毕业设计.zip
实训商业源码- 超人配送代驾跑腿V1.5.11-毕业设计.zip
内容概要:本文详细介绍了用于大功率直流800V及以上电压输出的双闭环Vienna整流器及其SVPWM控制方法。首先阐述了三相三电平Vienna整流器的拓扑结构特点,强调其适用于高压环境的优势。接着深入探讨了电流内环和电压外环的设计,包括PI控制器参数的选择、中点电位平衡控制以及SVPWM的具体实现方式。文中提供了多个MATLAB/Simulink代码片段,展示了如何进行扇区判断、占空比计算等关键步骤,并分享了一些实用技巧,如避免使用atan2函数以提高仿真速度。此外,还讨论了动态响应测试、参数整定等方面的经验,确保系统的高效性和稳定性。最终给出了详细的仿真结果,验证了方案的有效性。 适合人群:从事电力电子、大功率直流电源设计的研究人员和技术工程师。 使用场景及目标:①理解和掌握双闭环Vienna整流器的工作原理;②学会利用MATLAB/Simulink搭建并优化SVPWM控制系统;③满足国家相关标准的要求,如THD低于5%,效率高于95%等。 其他说明:文章不仅提供了理论知识,还包括大量实践经验,帮助读者更好地应对实际工程中的挑战。同时提醒读者注意一些常见的陷阱,如IGBT选择不当导致的过压问题等。
scratch少儿编程逻辑思维游戏源码-陷阱游戏.zip
内容概要:本文详细介绍了基于S7-200 PLC和MCGS组态的机械手抓取控制系统。首先阐述了系统的核心组件,包括S7-200 PLC作为控制核心和MCGS组态软件作为可视化界面的作用。接着展示了具体的梯形图编程示例及其逻辑分析,解释了如何通过编程实现机械手的精确控制。然后讨论了IO分配与接线图原理,确保各个信号正确连接。最后介绍了MCGS组态画面的设计,使操作人员能够直观监控和控制机械手的工作状态。此外,文中还提供了许多实用的小技巧,如调试方法、常见错误规避等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和组态软件有一定了解的人群。 使用场景及目标:适用于需要设计和实施机械手抓取控制系统的工业环境,旨在提高生产效率和精度。目标是帮助读者掌握S7-200 PLC和MCGS组态的具体应用,从而构建稳定可靠的控制系统。 其他说明:文章不仅涵盖了理论知识,还包括大量实践经验,有助于读者更好地理解和应用相关技术。
scratch少儿编程逻辑思维游戏源码-像素柱.zip
实训商业源码- 朋友圈浏览记录V1.0.3 全开源版-毕业设计.zip
JavaScript语言教程&案例&相关项目资源,奖励仅限VIP资源
scratch少儿编程逻辑思维游戏源码-纸飞机(1).zip
scratch少儿编程逻辑思维游戏源码-细胞战斗.zip