初探Convention Plugin

Struts2 ConventionPlugin 使用指南
本文介绍Struts2最新发布的2.1.6版本中ConventionPlugin插件的基本使用方法。该插件通过注解配置Action,简化了开发流程。文章详细展示了如何设置必要的Jar包及web.xml配置,并通过一个简单的示例演示了如何定义Action及其结果。

昨天struts2发布了2.1.6的GA版本,  其中有个Convention Plugin的插件号称要代替code behind . 关于Convention Plugin的文章目前很少, 下面我来说说它的简单用法, 请各位高手批评指正.

 

首先导入必要的jar包, struts2-convention-plugin-2.1.6 是必须的.  其他的大家都知道.

然写配置文件, struts2最新版本的例子程序中好像使用了新的过滤器. 就是那个ng包的.

web.xml

 

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

<web-app id="starter" 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">

 <filter>

<filter-name>action2</filter-name>

<filter-class>

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

</filter-class>

 </filter>

 

<filter-mapping>

 

<filter-name>action2</filter-name>

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

</filter-mapping>

 

<welcome-file-list>

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

</welcome-file-list>

 

</web-app>


 

 

 

struts.xml文件可以不写, 因为action采用annotation的形式配置, 用如你的程序中使用REST则必须写struts.xml

<constant name="struts.convention.action.suffix" value="Controller"/>

<constant name="struts.convention.action.mapAllMatches" value="true"/>

<constant name="struts.convention.default.parent.package" value="rest-default"/>


 

下面我来写一个简单的action类演示一下.

 

package com.example.actions;

/**
 *
 * @author joey
 */
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

@Results({
    @Result(name = "failure", location = "fail.jsp")
})
public class HelloWorld extends ActionSupport {

    @Action(value = "/url",
    results = {@Result(name = "success", location = "http://struts.apache.org", type = "redirect")})
            
    public String url1() {
        return SUCCESS;
    }

    @Action(value = "/url2",
    results = {@Result(name = "success", location = "http://www.baidu.com", type = "redirect")})

    public String url2() {
        return SUCCESS;
    }


    public String index(){
        System.out.println("index is running;");
        return SUCCESS;
    }
}

 

 

*index() 是必须的方法, 不写会报错.  好像execute()方法一样, 是个入口函数.

 

index.jsp

 

<%-- 
    Document   : index
    Created on : 2009-1-15, 12:24:10
    Author     : joey
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
       测试:<a href="url">1</a> , <a href="url2">2</a>
     </body>
</html>

 

 

 

 

 

fail.jsp 这个文件默认位置在/WEB-INF/content/  , 这个路径是可以修改的,  在配置文件中: <constant name="struts.convention.result.path" value="你的路径"/>

 

好了, 基本就是这样了. 

本指南详细阐述基于Python编程语言结合OpenCV计算机视觉库构建实时眼部状态分析系统的技术流程。该系统能够准确识别眼部区域,并对眨眼动作与持续闭眼状态进行判别。OpenCV作为功能强大的图像处理工具库,配合Python简洁的语法特性与丰富的第三方模块支持,为开发此类视觉应用提供了理想环境。 在环境配置阶段,除基础Python运行环境外,还需安装OpenCV核心模块与dlib机器学习库。dlib库内置的HOG(方向梯度直方图)特征检测算法在面部特征定位方面表现卓越。 技术实现包含以下关键环节: - 面部区域检测:采用预训练的Haar级联分类器或HOG特征检测器完成初始人脸定位,为后续眼部分析建立基础坐标系 - 眼部精确定位:基于已识别的人脸区域,运用dlib提供的面部特征点预测模型准确标定双眼位置坐标 - 眼睑轮廓分析:通过OpenCV的轮廓提取算法精确勾勒眼睑边缘形态,为状态判别提供几何特征依据 - 眨眼动作识别:通过连续帧序列分析眼睑开合度变化,建立动态阈值模型判断瞬时闭合动作 - 持续闭眼检测:设定更严格的状态持续时间与闭合程度双重标准,准确识别长时间闭眼行为 - 实时处理架构:构建视频流处理管线,通过帧捕获、特征分析、状态判断的循环流程实现实时监控 完整的技术文档应包含模块化代码实现、依赖库安装指引、参数调优指南及常见问题解决方案。示例代码需具备完整的错误处理机制与性能优化建议,涵盖图像预处理、光照补偿等实际应用中的关键技术点。 掌握该技术体系不仅有助于深入理解计算机视觉原理,更为疲劳驾驶预警、医疗监护等实际应用场景提供了可靠的技术基础。后续优化方向可包括多模态特征融合、深度学习模型集成等进阶研究领域。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值