论坛首页 Java企业应用论坛

去繁从简,有关免配置Java Web框架的一些设想和实现

浏览 4484 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-24  
框架没有优劣,只有适合不适合.
作为我这样的背景:
1对Servlet规范比较了解
2对于Java语言比较熟悉
3对于标签库可以自定义
4对于JSTL也能熟练应用
5对于请求到POJO对象的自动封装能够代码实现
到底需要什么样的一个框架呢?
我觉得越简单越好,简单到JavaBean+Servlet+Jsp
上述模式的问题在于什么呢?
配置太多,几乎一个逻辑对应一个Servlet
于是可以创建一个DispatcherServlet,
里面可以有多个方法,对于不同的请求URL自动调用不同的方法
类似于Struts的DispatcherAction

但是即使这样,由于不同的逻辑通常是按照业务分组的,这样通常也得一个业务对应一个Servlet
还是配置比较麻烦,于是便要学着Struts,由一个Servlet进行请求分发的统筹管理
这样子呢,咋一看不就演化成了Strtus了么?

其实不然,Struts配置太复杂,一个action里面有多个方法的话,还需要传递一个参数进行区分

我需要的理想的状态是,写好一个类
不需要过多的配置就能直接将请求路径映射到当前类的方法上

例如
public class LoginAction {

public String login(HttpServletRequest request, HttpServletResponse response) {
return "login";
}
         public String logout(HttpServletRequest request, HttpServletResponse response) {
return "welcome";
}

}

当我请求/loginaction/login时,将自动调用LoginAction.login()方法
而请求/loginaction/logout时,自动调用LoginAction.logout()方法
这样完全免配置不好么?

什么,需要指定不同的url路径?不想将方法名暴露给客户?不同的请求URL想调用相同的处理方法?
这样的话,我们可以使用注解进行覆盖默认行为
@RequestURL({"/loginaction","logoutaction"})
public class LoginAction {

         @RequestMethod({"login","ohtersname"})
public String login(HttpServletRequest request, HttpServletResponse response) {
return "login";
}
         @RequestMethod({"logout","ohtersname"})
         public String logout(HttpServletRequest request, HttpServletResponse response) {
return "welcome";
}

}

通过以上方法我们不但可以改变默认的映射,还可以指定多个映射,同时避免了使用
XxxAction.action?method=login之类的参数形式,因为这样,和业务相关的参数就不能包含method字段

这样对于action的配置就无比简单了
<actions>
<action class=""/>
<action class=""/>
</actions>
当前,启动了自动扫描程序,并且指定匹配模式,那么连action都不需要配置了
例如,classPattern="com.nianien.*.*Action";
那么自动获取com.nianein包以及子包下面的所有以Action结尾的类,自动创建映射,这是多么简单啊~

当前,我们还可以同样的方法实现拦截器的免配置,实现返回结果的自动映射.
去繁从简,拒绝冗余的配置,提高开发效率,有没有人有过我类似的想法?
   发表时间:2011-03-24  
spring mvc
0 请登录后投票
   发表时间:2011-03-24  
licg1234 写道
spring mvc

Spring不需要配置么?Spring的规则更复杂,事无巨细,罗哩罗嗦~~~~
0 请登录后投票
   发表时间:2011-03-24   最后修改:2011-03-24
看我写的MVC

看我blog里的JStore Desktop后端代码。

简单,其实就是这样设计——可以说在简单性、性能均衡、灵活性、适应场景几方面来说,我写的那个没有几个框架能比它好了
0 请登录后投票
   发表时间:2011-03-25  
我做的给企业应用专用的框架,比你这更简单,配置文件 menu.xml 即是 action 配置,也是左侧菜单树结构。
0 请登录后投票
   发表时间:2011-03-25  
楼主所说 感觉和REST-ful架构差不多的东西,你可以看看jersey的源码,通过在类或方法上加入@Path("/login"),@Path("/logout") 这样的标签,来定位UI上的Request到哪一个类的方法上去
0 请登录后投票
   发表时间:2011-03-25  
liuyar 写道
我做的给企业应用专用的框架,比你这更简单,配置文件 menu.xml 即是 action 配置,也是左侧菜单树结构。

我的意思是action默认是不需要配置的,除非你有特殊需求~~~
0 请登录后投票
   发表时间:2011-03-25  
perryzheng 写道
楼主所说 感觉和REST-ful架构差不多的东西,你可以看看jersey的源码,通过在类或方法上加入@Path("/login"),@Path("/logout") 这样的标签,来定位UI上的Request到哪一个类的方法上去

学习过一点Rest的,主要是目前还没有形成绝对主流的Server实现~所以只能想用Servlet实现类rest风格的框架
0 请登录后投票
   发表时间:2011-03-25  
请楼主看基于annotation的Spring3 MVC
0 请登录后投票
   发表时间:2011-03-25  
弱弱的回答一下,struts不是有零配置的功能吗?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics