让我们重温 – Struts的Action类

Struts Action Classes

Struts的Action类

介绍

Apache的Struts是一个用于开发JSP或基于servlet的Web应用程序的开源框架. Struts的扩展Java Servlet API的和基于模型视图控制器或MVC设计模式上. 在Struts框架的Action类定义了业务逻辑. 一个Action类处理客户端的请求,并准备响应. 这也决定了应答应该转发. 基本上是一个动作类从表现层接收数据,并将数据转发到相应的业务层. 同时它处理它来自业务层的数据,并转发那些回表现层. In short, Action类被描述为 –

  • Action类应该扩展 [码] apache.struts.action.Action [/码] 类.
  • 应重写 [码] 执行 [/码] 的方法 [码] 行动 [/码] 类.
  • 操作servlet选择在动作映射标记下定义传入的HTTP请求中的Action类 [码] 支柱config.xml中 [/码] 文件.
  • 这些类被用来在业务层或数据访问层来调用的类来从豆中的数据,并存储处理后的数据,并返回根据情况的结果或错误.
  • 这些类是多线程. 因此,一个开发者在处理动作变量,因为它们不是线程安全的要小心.

动作类的类型

我们已经在struts以下类型的动作类 –

  • 行动 – 我们在其中实现业务逻辑的基本动作类.
  • 包括行动 – 类似包括JSP页面指令.
  • 正向动作 – 使用的情况下,我们需要向前从一个JSP到另一个请求. 如果我们直接从一个JSP请求转发它违反了MVC架构. 因此,一个动作类是用来做这个工作.
  • 派遣行动 – 处理在多个方法的多个操作. 最好是有,而不是在一个动作类的单个execute方法合并整个业务逻辑的每个操作的一种方法.
  • 查找派遣行动 – 同派遣行动,但建议不要使用.
  • 开关动作 – 使用Struts应用程序的不同模块之间进行切换.

最常用的动作类 –

  • 行动
  • 派遣行动

Action类

这是在struts的基本操作类. 在这里,开发者需要重写exe​​cute方法为下 -

[码]

package com.home.upload.action ;

进口 java.io.IOException异常 ;

进口 的java.util.HashMap ;

进口 的java.util.Map ;

进口 javax.servlet.ServletException ;

进口 javax.servlet.http.HttpServletRequest ;

进口 javax.servlet.http.HttpServletResponse ;

进口 org.apache.log4j.Logger ;

进口 org.apache.struts.action.Action的 ;

进口 org.apache.struts.action.ActionForm ;

进口 org.apache.struts.action.ActionForward ;

进口 org.apache.struts.action.ActionMapping ;

进口 org.apache.struts.upload.FormFile ;

进口 com.home.upload.action.forms.UploadForm ;

进口 com.home.upload.service.FileUploadService ;

进口 com.home.upload.service.impl.FileUploadServiceImpl ;

进口 com.home.upload.util.UploadConstants ;

/**

* @作者 TechAlpine

*/

公众 FileUploadAction 扩展 行动 {

私人 静止 记录仪 记录仪 =记录仪.getLogger(FileUploadAction.);

公众 执行的ActionForward(的ActionMapping映射, ActionForm的形式, HttpServletRequest的请求,

HttpServletResponse的响应) IOException异常, ServletException异常 {

如果 (形式 != ) {

上传表单上传表单= (UploadForm) 形式;

FormFile文件1 = uploadForm.getFilePath1 ();

FormFile文件2 = uploadForm.getFilePath2 ();

FormFile文件3 = uploadForm.getFilePath3 ();

Map< 串, 字节[] > fileMap = HashMap中< 串, 字节[] > ();

fileMap.put(file1.getFileName(), file1.getFileData());

fileMap.put(file2.getFileName(), file2.getFileData());

fileMap.put(file3.getFileName(), file3.getFileData());

FileUploadService uploadService = FileUploadServiceImpl ();

如果 (uploadService.doUpload (

getServlet().的getServletContext().getRealPath(“/”).CONCAT( UploadConstants.UPLOAD_FOLDER), fileMap )

.尺寸() > 0) {

记录仪.调试( “上传是全成” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_SUCCESS);

} 其他 {

记录仪.调试( ” 上传失败 ” );

uploadForm.setUploadFlag(UploadConstants.UPLOAD_FAILURE);

}

}

return (mapping.findForward(UploadConstants.UPLOAD_SUCCESS));

}

}

[/码]

“ [码] 支柱config.xml中 [/码] 文件为这个动作类应该是为下 -

[码]

<?XML版本= “1.0” 编码= “ISO-8859-1” ?>

<!DOCTYPE Struts的配置PUBLIC ” -//Apache软件基金会// DTD的Struts配置1.1 // EN” “HTTP://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd”>

<Struts的配置>

<表单豆>

<表单bean名称= “登录表单” 类型= “com.home.upload.action.forms.LoginForm” />

<表单bean名称= “菜单表” 类型= “com.home.upload.action.forms.MenuForm” />

<表单bean名称= “UploadForm” 类型= “com.home.upload.action.forms.UploadForm” />

</表单豆>

<全球前锋/>

<动作映射>

<操作路径= “/登录” 类型= “com.home.upload.action.LoginAction” name = “登录表单” 输入= “/login.jsp的” >

<转发名= “success” PATH = “/menu.jsp” />

<转发名= “失败” PATH = “/loginFailure.jsp” />

</action>

<操作路径= “/menuAction” 类型= “com.home.upload.action.MenuAction” name = “菜单表” 输入= “/menu.jsp” 参数= “方法” >

<转发名= “上载” PATH = “/fileUpload.jsp” />

<转发名= “listfiles” PATH =“/listUploadedFiles.jsp” />

</action>

<操作路径= “/uploadAction” 类型= “com.home.upload.action.FileUploadAction” name =“UploadForm” 输入=“/fileUpload.jsp” >

<转发名=“uploadSuccess” PATH =“/uploadSuccess.jsp” />

</action>

</动作映射>

<信息资源参数= “ApplicationResources” />

<插件的className = “org.apache.struts.validator.ValidatorPlugIn” >

<设置property属性= “路径名”

值= “/WEB-INF /验证 - rules.xml中,/WEB-INF / validation.xml中” />

</插入>

</Struts的配置>

[/码]

正如我们在上面的例子中看到,如果类扩展了基本的Action类应该重写 [码] 执行 [/码] 方法. 也支柱配置文件仅具有一个对应于正向通路 [码] uploadAction [/码].

派遣行动

调度动作类也扩展了基本动作类. 这个类有一个优点,即它不具有明确覆盖执行方法,而开发者可以自由地写自己的方法action类. 它使开发人员使用多个流相同的动作类. 一个经典的例子使用调度动作类在处理菜单操作的情况下 -

[码]

package com.home.upload.action ;

进口 java.io.File中 ;

进口 java.io.IOException异常 ;

进口 java.util.List中 ;

进口 javax.servlet.ServletException ;

进口 javax.servlet.http.HttpServletRequest ;

进口 javax.servlet.http.HttpServletResponse ;

进口 org.apache.log4j.Logger ;

进口 org.apache.struts.action.ActionForm ;

进口 org.apache.struts.action.ActionForward ;

进口 org.apache.struts.action.ActionMapping ;

进口 org.apache.struts.actions.DispatchAction ;

进口 com.home.upload.action.forms.MenuForm ;

进口 com.home.upload.service.FileUploadService ;

进口 com.home.upload.service.impl.FileUploadServiceImpl ;

进口 com.home.upload.util.UploadConstants ;

/**

* @作者 TechAlpine

*/

公众 MenuAction 扩展 DispatchAction的 {

私人 静止 记录仪 记录仪 =记录仪.getLogger( MenuAction.);

公众 上传的ActionForward( 的ActionMapping映射, ActionForm的形式, HttpServletRequest的请求,

HttpServletResponse的响应 ) IOException异常, ServletException异常 {

return ( mapping.findForward ( UploadConstants.上传 ) );

}

公众 的ActionForward listFiles( 的ActionMapping映射, ActionForm的形式, HttpServletRequest的请求,

HttpServletResponse的响应 ) IOException异常, ServletException异常 {

FileUploadService uploadService = FileUploadServiceImpl ();

字符串stagingLocation = getServlet().的getServletContext().getRealPath( “/” ). CONCAT( UploadConstants.UPLOAD_FOLDER );

菜单窗体菜单形式= (菜单表) 形式;

如果 (( 文件( stagingLocation ) ).存在() ) {

名单<串> 文件名= uploadService.getFileNames( stagingLocation );

如果 (fileNames.size() > 0 ) {

menuForm.setFiles( 文件名 );

menuForm.setListFlag ( UploadConstants.真正 );

} 其他 {

menuForm.setListFlag ( UploadConstants.);

}

} 其他 {

menuForm.setListFlag( UploadConstants.);

}

记录仪.信息( ” 返回列表 “);

return (mapping.findForward(UploadConstants.LIST_UPLOADED_FILES));

}

}

[/码]

我们在这里看到有两种方法从用户处理请求. 这两种方法都在所定义 [码] 支柱config.xml中 [/码] 为下 -

[码]

<操作路径= “/menuAction” 类型= “com.home.upload.action.MenuAction” name = “菜单表” 输入= “/menu.jsp” 参数= “方法” >

<转发名= “上载” PATH = “/fileUpload.jsp” />

<转发名= “listfiles” PATH = “/listUploadedFiles.jsp” />

</action>

[/码]

这两种方法 – 上传和listfiles有对动作类两个单独的条目 – MenuAction. 每一种方法都有它们将重定向到响应分开前进路径.

结论

  • Struts是基于Java的Web应用程序使用的开源框架.
  • Struts是基于模型视图控制器 – MVC设计模式.
  • Struts有五种不同的动作类,其中最常用的是 –
    • 行动
    • DispatchAction的
  • Action类是基类,所有的动作类应该扩展到.
  • 扩展Action类的类应该重写exe​​cute方法.
  • 扩展调度动作类类有自己的行动方式前进.
  • 扩展调度动作类类可以有因此成为有用的多个可选流的情况下,多个动作转发方法.

 

Tagged on:
============================================= ============================================== 在亚马逊上购买最佳技术书籍,en,电工CT Chestnutelectric,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share