浅析webwork

下面我们就用一段完整的代码来简单解析webwork的配置与使用

[size=large]配置文件如下:[/size]
web.xml


<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>

<display-name>Acme Corp</display-name>
<!--
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> -->
<!-- START SNIPPET: example
<filter>
<filter-name>webwork</filter-name>
<filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
-->
<!--
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>-->


<!-- END SNIPPET: example -->

<!-- START SNIPPET: compatibility
<servlet>
<servlet-name>JspSupportServlet</servlet-name>
<servlet-class>com.opensymphony.webwork.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
END SNIPPET: compatibility -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>


<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>

<!-- START SNIPPET: taglib -->
<!--
This typically isn't required, as the taglib is included in webwork.jar.
If you really need a taglib configuration within web.xml, copy webwork/src/java/META-INF/taglib.tld
to the WEB-INF directory as webwork.tld.
-->
<taglib>
<taglib-uri>webwork</taglib-uri>
<taglib-location>/WEB-INF/taglib.tld</taglib-location>
</taglib>
</web-app>



xwork.xml

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" 
"http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">

<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<!-- method灞炴€х敤鏉ヨ缃搴旂殑鏂规硶鍚?-->
<action name="login" class="com.xxx.action.LoginAction" method="login">
<interceptor-ref name="params"></interceptor-ref>
<interceptor-ref name="validationWorkflowStack"></interceptor-ref>
<result name="success" type="dispatcher">
<param name="location">/main.jsp</param>
</result>
<result name="loginfail" type="dispatcher">
<param name="location">/index.jsp</param>
</result>
<result name="input" type="dispatcher">
<param name="location">/index.jsp</param>
</result>
</action>
</package>
</xwork>


validators.xml
<validators>
<validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
<validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
<validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
<validator name="double" class="com.opensymphony.xwork.validator.validators.DoubleRangeFieldValidator"/>
<validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
<validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
<validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
<validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
<validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>
<validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
<validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
</validators>


Action

//此注释规范不规范,仅为讲解之用
//程序中对应的基本jar文件在图片中
package com.xxx.action;

import java.util.Map;

//import com.opensymphony.xwork.Action;
import com.opensymphony.xwork.ActionContext;
import com.opensymphony.xwork.ActionSupport;
//import com.opensymphony.xwork.ModelDriven;
import com.xxx.model.LoginInfo;

//如果不实现Model, Action接口,getModel()方法略去。(注:getMedel()负责了参数的
//接受和保留)。略去getModel()的同时,对应域(loginInfo)必须有get、set方法
/**
* 继承ActionSupport,ActionSupport需要rife-continuations.jar的支持
* @author cong-px
*/
public class LoginAction extends ActionSupport {
private static final String LOGIN_FAIL = "loginfail";
LoginInfo loginInfo = null;

//在实现Action接口时此处方法名为execute()
//此处可以自定义方法名
public String login () throws Exception {
if("cong".equalsIgnoreCase(loginInfo.getUsername())&&
"peixue".equalsIgnoreCase(loginInfo.getPassword())) {
ActionContext ctx = ActionContext.getContext();
Map<String, String> session = ctx.getSession();
session.put("username", loginInfo.getUsername());

loginInfo.getMessages().add("Message1");
loginInfo.getMessages().add("Message2");
loginInfo.getMessages().add("Message3");

return SUCCESS;
} else {
loginInfo.setErrorMessage("UserName Error");
return LOGIN_FAIL;
}
}
/**
* 获得LoginInfo信息
* @return
*/
public LoginInfo getLoginInfo() {
return loginInfo;
}

public void setLoginInfo(LoginInfo loginInfo) {
this.loginInfo = loginInfo;
}
}


对应的验证文件

<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="loginInfo.username">
<field-validator type="requiredstring">
<message key="USERNAME_REQUIRED">username must'nt null!</message>
</field-validator>
</field>
</validators>


国际化
package_en_US.properties
USERNAME_REQUIRED=username is not null!!


package_zh_CN.properties
USERNAME_REQUIRED=\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a.


此时为汉字对应的二进制编码.可由Eclipse的插件自动转化.(若谁不知道,可邮件给我:)


LoginInfo
package com.xxx.model;

import java.util.LinkedList;
import java.util.List;

public class LoginInfo {
private String username;
private String password;
private String errorMessage;
private List<String> messages = new LinkedList<String>();
public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getErrorMessage() {
return errorMessage;
}

public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}

public List<String> getMessages() {
return messages;
}


}


程序结构如图所示:


如需要完整jar文件,我可转发给他.
内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值