2020-10-08 17:17
@tctc4869 当然新设计一个特点不同的http请求分派器组件,肯定要重新设计Controller,action,以及action拦截器体系。这得花时间
2020-10-08 17:13
我16.02分发表的言论,不是关于action路径问题,是关于目前的Web框架的Action的代码编写体验问题。我只说开发体验问题吧。
无论是Spring MVC,还是Jifnal的http请求分派器,都有个问题
action配置非常依赖注解,无法使用基于set的建造者模式设计action。另外action方法是硬编码。这两个痛点注定了不能很好进行扩展和对Controller内的action方法处理流程进行动态编辑配置。
所以我的一个建议是,增加新设计一个http请求分派器组件,消灭我所说的两个痛点,通过配置决定是否启动新的http请求分派器。反正jfinal现有的Controller,action,拦截器都是基于jfinal某个的handler工作处理的。控制好handler的处理逻辑,不会发生与jfinal旧有的http请求分派器冲突的情况
@JFinal
2020-10-08 16:02
@JFinal 不仅仅是显示Controller内容的体验。
我其实觉得Spring MVC和Jfinal的Http请求分派器,在我看来,基于它们使用java进行代码编写业务代码的体验上是差不多的(至少Controller和action的使用体验是差不多的),区别在于Spring MVC那里action注解太多,一些常用http消息处理方法,记不得名字就得去百度一下,jfinal的action注解少一点,扩展上自由度多一点,可我觉得还是有不好的代码编写体验问题。
我不喜欢写注解的,不是注解不好,而是我记不得那么多注解名称,我更喜欢的是靠智能提示提升优质的代码编写体验,所以我更喜欢通过set方法,返回this的方式进行设置。
还有一点,action的注解和action方法是硬编码,这些仅仅只有硬编码的特性注定了扩展,运行时更改会有很大的限制。
波总,我建议你应该再设计一个新的http请求分派器,并用一个jfinal的handler对接
2020-10-08 15:01
@ymwcwee 抱歉这么久才看到,截止目前,我找不到在final的Http请求分派器体系内解决这个问题,我认为就java语言本身和final的Web请求分派器体系的组合无法解决。
目前只有一个不是办法的办法,不使用Jfinal的Http请求分派器 (如果不理解Http请求分派器,那么可以简单的理解为,等同于放弃使用jfinal的Controller,action拦截器,但不包括jfinal webHttp体系下的handler组件)。
办法如下:
自己另外定义设计一套Http请求分派器,新建一个jfinal的handler,并根据需求,在自己定义的http请求分派器下,重新定义一套Controller,action,以及action拦截器体系) ,在自己定义的handler里编写自己设计的Http请求分派器实例代码,处理http消息分派。(Http请求分派器建议用单例模式)
目前只有这个办法,自己重新定义Http请求分派器,并在此之下定义Controller,action,以及action拦截器体系,并对接到Jfinal框架下的handler里,然后关键的一点,在你自己定义的http请求分派器体系里设计一个可以拆分Controller的组件。目前只有这个办法可以做到,其实设计Http请求分派器的成本已经相当于半个重新开发一个MVC框架的程度了。
不过我也不想回到Spring MVC那里,Spring MVC的action拦截器的代码和响应请求的代码编写可比Jfinal的拦截器复杂了。我已经自己定义自己需要的http请求分派器,(重新定义一套Controller,以及action拦截器体系)
2020-06-14 19:54
@JFinal 问一下,jfinal的那个文件上传组件,是可以独立使用的么?可以用到其他的MVC框架的文件上传获取么(使用基于HttpServletRequest)
2020-06-14 17:35
@JFinal 在handler里,怎么使用简单的代码接受http文件上传?(用postman测试)
2020-06-14 11:08
@JFinal
render =new TextRender(“123”);
render.setContext(request, response);
render.render();
我在handler里直接使用这样的代码,但是响应是Not Found,还差什么?
2020-06-09 19:50
@JFinal 我知道内部是调用了httpServletRequset的参数获取,但httpServletRequset 是个字段把,Controller对象只有一个,而request是Controller类的字段的,那么有个问题,两个客户端并发同时对一个功能发起请求,Controller里的那个Request会是什么情况?两个相同请求路径的请求线程的请求数据,放入Controller内的request是怎样的情况,一致性怎么保证的?,比如客户端A和客户端B对/test的Action同时发起请求,这个时候Controller的request和客户端的请求数据怎么处理的?