优化AJAX提交到Handler的ProcessRequest方法

背景:

上周搬到新组开发一个微信端的项目,发现这里前台页面部分都是ajax提交到handler,然后handler的ProcessRequest方法接收提交过来的参数,通过参数中的type选择要执行的方法(这里就是访问数据库的操作和一些业务逻辑的调用,分页等等),处理完成之后返回json串到ajax的success方法,然后显示。

其实ajax提交到handler和提交到后台感觉没多大区别,百度了下,感觉handler是后台程序的简化版,执行更快。

ok,今天说的其实是一个比较细节的问题,先看一段代码:

 public void ProcessRequest(HttpContext context)
        {
            if (context.Request["type"] != null)
            {
                context.Response.ContentType = "text/plain";
                context.Response.Buffer = true;
                context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
                context.Response.AddHeader("pragma", "no-cache");
                context.Response.AddHeader("cache-control", "");
                context.Response.CacheControl = "no-cache";

                string type = context.Request["type"].ToString();
                switch (type)
                {
                    case "getsellerlist":
                        GetSellerList(context);
                        break;
                    case "getsellerinfo":
                        GetSellerInfo(context);
                        break;
                    case "getsellernormalinfo":
                        GetSellerNormalInfo(context);
                        break;
                    case "getsellernormallist":
                        GetSellerNormalList(context);
                        break;
                    case "getsellerpropertylist":
                        GetSellerPropertyLity(context);
                        break;
                    case "getscopelist":
                        GetScopeList(context);
                        break;
                    case "imgupload":
                        ImgUpload(context);
                        break;
                    case "chefupload":
                        ChefUpload(context);
                        break;
                    case "sellerupload":
                        SellerUpload(context);
                        break;
                    case "storeupload":
                        StoreUpload(context);
                        break;

                    case"LoadSellerDataByPartner":
                        LoadSellerDataByPartner(context);
                        break;

                }
            }
        }

上面这段代码是handler处理程序的入口,从这里根据type选择要执行哪个方法。但是一般,一个handler要处理的一个页面上的很多事件,我每加一个方法,就要去修改switch..case部分,这是很违反开放封闭原则的,理想情况下是这样,我没加一个方法,这里是不可以被修改的,但是可以在原来的基础上增加。

所以,我们这样:

          System.Reflection.MethodInfo method = this.GetType().GetMethod(context.Request["type"]);

我们在程序里面通过反射动态加载方法,超级方便哎~~~以后再也不用超长的switch...case了。

小结:

最近在新公司修bug的时候,看到那些像屎一样的代码感觉编写可读性强的代码是非常有必要的,代码应该写出来让别人看着像工艺品,不应该是满眼看去一坨一坨的。。。。

时间: 2024-10-10 16:26:53

优化AJAX提交到Handler的ProcessRequest方法的相关文章

Jquery ajax提交表单几种方法详解

[导读] 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$( 表单ID) serialize();就行了,下面我来介绍两个提交表单数据的方法.$get方式提交表单get() 方法通过远程 HTTP 在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. $get方式提交表单 get() 方

django ajax提交避免csrf错误的方法

使用django 防御csrf功能时,ajax提交表单 {{ csrf_token }}加入到data里面,可避免csrf错误.位置如下红色标注: $.ajax({    :,    :{:.,},    :,    :(callback){       callback = jQuery.parseJSON(callback);       (callback.> ){          .()          .(callback[].);          =callback[].- .

ajax提交java后台接收参数出现乱码

1.现象: 前台ajax提交查询数据 $.ajax({ url: 'bdmap/xx.action', data:para, dataType:'json', contentType:"application/x-www-form-urlencoded", success: function(data){ if(data.success){ callback(data.data); } }}) Request URL:http://localhost:8083/bdmap/xx.act

ajax提交session超时跳转页面使用全局的方法来处理

来自:http://www.jb51.net/article/43770.htm 如果是ajax提交,超时时从服务器发出的跳转命令就不会起作用,所以如果是session超时,而且是在ajax请求,就在响应头里,再用一个全局的方法来处理session超时要跳转的页面. 在过滤器中写入如下方法:(未测试) public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws I

Validator验证Ajax提交表单的方法

当我们在一些稍微复杂的业务时,可能会遇到需要多个表单form在同一个页面的情况,但是提交一个表单以后不想页面刷新或者跳转,那么我们考虑到的就是Ajax提交表单,那么如何让Jquery的validator插件也可以对异步提交的表单进行验证呢?我们继续往下看. 在这里,我就用网络上的一个例子来说明好了. 下面是一个比较常见的jquery .ajax提交表单的写法 Js代码   $("#submitButton").click(function(){ //序列化表单 var param = 

jquery的ajax提交时loading提示的处理方法

方法1:使用ajaxStart方法定义一个全局的“加载中...”提示 $(function(){     $("#loading").ajaxStart(function(){         $(this).html("<img src='/jqueryStu/images/loading.gif' />");       });       $("#loading").ajaxSuccess(function(){        

ajax 提交表单的方法2

网上学习查找链接: 帝国CMS任意表单基于Jquery AJAX提交,提高用户体验,http://www.j007.com/bangzhu/yingyongjiqiao/15.html 这个我就不写form的html代码了, 直接怼js代码吧: 首先记得引入jquery <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script> $(function(){ var form =

标准ajax提交方法

<!-- 表单ajax提交方法 --> <script type='text/javascript'> jQuery(document).ready(function(){ jQuery('form').submit(function(){ jQuery.ajax({ type:'post', dataType:'json', data:jQuery('#activityform').serialize(), url:'/admin/activity/edit?aid='+{{$a

用html5自带表单验证 并且用ajax提交的解决方法(附例子)

用submit来提交表单,然后在js中监听submit方法,用ajax提交表单最后阻止submit的自动提交. 在标准浏览器中,阻止浏览器默认行为使用event.preventDefault(),而在IE6~8中,使用returnValue属性来实现. <html> <head> <script type="text/javascript" src="jquery-1.9.0.min.js"></script> <