struts的Dispatch形式

2024-05-25 14:38
文章标签 形式 struts dispatch

本文主要是介绍struts的Dispatch形式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

         在上篇文章中简单的描述了struts的应用,但是其存在一个小小的问题,就是每一个请求,都会有一个与之对应的Action。比如说查询用户,就会有一个查询用户的Action;以此类推,增加也会有一个,这样就会使得Action类越来越多,不利于维护。为此出现了另外一种形式,将每一个模块的需求(不如用户的增删改查)封装到一个Action里面,而那些需求则变成这个Action的方法。访问的时候只需要传递一个参数来区分要访问的是哪个方法就可以了。具体如下:
         1、UserAction对象:
<span style="font-size:18px;">/*** UserAction继承DispatchAction;而DispatchAction则继承Action*/
public class UserAction extends DispatchAction {/*** 缺省方法,当访问时不加参数,则会访问此方法*/@Overrideprotected ActionForward unspecified(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//调用业务逻辑操作List userList = UserManager.getInstance().findAllUserList();request.setAttribute("userlist", userList);return mapping.findForward("list_success");}/*** 查询所有用户* 其中的参数和execute方法中的参数一样*/public ActionForward list(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//调用业务逻辑操作List userList = UserManager.getInstance().findAllUserList();request.setAttribute("userlist", userList);return mapping.findForward("list_success");}/*** 添加用户*/public ActionForward add(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {//获取从页面表单中提交过来的值UserActionForm uaf = (UserActionForm)form;User user = new User();//将ActionForm中的值传递到User实体中BeanUtils.copyProperties(user, uaf);user.setCreateDate(new Date());//调用业务逻辑操作UserManager.getInstance().addUser(user);return mapping.findForward("success");}......
}</span>

2、 struts-config.xml文件配置:
<struts-config><form-beans><form-bean name="userActionForm" type="com.bjpowernode.drp.web.forms.UserActionForm" /></form-beans><action-mappings><action path="/user/list"type="com.bjpowernode.drp.web.actions.UserAction"scope="request"name="userActionForm"parameter="command"><forward name="list_success" path="/user/user_list.jsp" /><forward name="success" path="/user/list.do" /><!-- ...... --></action></action-mappings></struts-config>
注意:在上面的访问中一定不要忘记了配置参数 parameter。(其余的配置参见上篇博客struts应用)
3、客户端访问:
<a href="user/list.do?command=list" title="请点击访问用户管理系统">用户管理</a><br><br>
<a href="user/list.do" title="请点击访问用户管理系统">用户管理</a><br>
4、总结:通过上面的方法,很大程度上减少了Action的数量, 并且把相关的业务方法集合在一起使得维护起来更容易。
   

这篇关于struts的Dispatch形式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1001793

相关文章

在struts.xml中,如何配置请求转发和请求重定向!

<span style="font-size:18px;"><span style="white-space:pre"> </span><!--<strong>下面用请求转发action </strong>,<strong>这样过去id不会丢</strong>,如果用重定向的话,id会丢 --><result name="updatePopedom"<span style="color:#ff00

修改struts中:fielderror.ftl 模板

在项目登录页面: 当验证码输入有误时,应该提示:验证码输入有误,请重新输入 ,但是页面出现乱了! 错误原因: 在产生错误信息时,页面中增加了<ul> <li><span></span></li></ul>标签,该如何修改改, 解决方法(一): 在项目的src下,新建文件夹:template.simple,在文件夹里面放修改好的fielderror.ftl文件。 fi

Struts 2的工作流程

基本简要流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被 FilterDispatcher接收。3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据 struts.xml中的配置找到对应的返回结果result

通过Ajax请求后台数据,返回JSONArray(JsonObject),页面(Jquery)以table的形式展示

点击“会商人员情况表”,弹出层,显示一个表格,如下图: 利用Ajax和Jquery和JSONArray和JsonObject来实现: 代码如下: 在hspersons.html中: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>会商人员情况表</title><script type="text/javasc

软文发稿相比其他广告形式有哪些持续性优势?

软文发稿在品牌宣发中具有显著的持续性优势,特别是在与其他广告形式的比较中更能体现这些特点。凭借其潜移默化的影响力、增强品牌权威性和公信力、持续性的曝光优势、精准触达目标受众的能力、强互动性与引导性,以及较高的性价比,已经成为品牌推广不可或缺的手段 一 长期存在与持续曝光 长时间的内容可见性     软文发表后,通常会长时间存在于各种平台上,无论是官网、博客、行业网站还是社交媒体帖子。读

【python 爬虫】python如何以request payload形式发送post请求

普通的http的post请求的请求content-type类型是:Content-Type:application/x-www-form-urlencoded, 而另外一种形式request payload,其Content-Type为application/json import jsonurl = 'https://api.github.com/some/endpoint'payload

dispatch_after 的延迟执行分析

dispcth_after 是将block 中的任务延迟添加到它将要执行的队列中去,而并不一定添加到队列中就立即会去执行任务。 图中表示是在5秒中后将任务添加到主队列中,如果主队列中还有另外的任务假设A、B 要执行,那么这个任务会在任务A、B 执行完后才会开始执行。 验证的代码如下: dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int

Delphi 中三种回调函数形式解析

Delphi 支持三种形式的回调函数: 全局函数这种方式几乎是所有的语言都支持的,类的静态函数也可以归为此类,它保存的只是一个函数的代码起始地址指针( Pointer )。在 Delphi 中声明一般为: 1 TXXX = procedure / function (参数列表 ) ; 类的成员函数类的成员函数作为回调函数,与全局函数相比,需要关联具体的类的实例,所以它

IOS并发编程——Grand Center Dispatch

并发编程往往能够提高程序的效率,在其他平台中进行并发编程往往就是多线程的编程,在IOS中同样可以进行多线程编程,但是Apple的官方文档却告诉我们,尽量不要使用原生线程,而是使用其他替代技术。为什么呢?有如下几点理由: 1、原生线程编程往往需要涉及同步,线程资源获取释放等操作,相对复杂。 2、原生多线程编程线程切换运行由人为控制,不如直接交给操作系统来管理线程效率高(操作系统会根据系统实时状况

struts2 struts.xml常用常量配置

<constant name="struts.i18n.encoding" value="UTF-8" /> 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 <constant name="struts.ui.theme" value="simple" /> 设置页面struts标签的样式     <consta