|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
SpringMVC中Controller的条理其实是多,有些头昏眼花了。在单个的基本上,再新加两三个叫做丰厚,再多就一定是功德,反而会使人缩手旧事片脚,无从决断。多半Controller都是只完成一个义务,不外也有一个像Struts的DispatchAction的那样的Conntroller,org.springframework.web.servlet.mvc.multiaction.MultiActionController,意即在一个Controller中处置多个举措,好像一个营业的增、删、改能够放在一同了。不至于增、删、改各不相谋,形成代码凌乱、反复难以保护。
本文中的web.xml的org.springframework.web.servlet.DispatcherServlet所处置的url-pattern是*.html,怎样搭建SpringMVC项目不细加申明,可参考我后面同系列的文章。
比方,上面的UserController,有两个署名一样的updateUser()和deleteUser()办法
publicclassUserControllerextendsMultiActionController{
publicModelAndViewupdateUser(HttpServletRequestrequest,
HttpServletResponseresponse){
System.out.println("updateUser");//便利于跟踪执行了哪一个办法
returnnewModelAndView("userList","from","updateUser");
}
publicModelAndViewdeleteUser(HttpServletRequestrequest,
HttpServletResponseresponse){
System.out.println("deleteUser");//便利于跟踪执行了哪一个办法
returnnewModelAndView("userList","from","deleteUser");
}
}
publicclassUserControllerextendsMultiActionController{
publicModelAndViewupdateUser(HttpServletRequestrequest,
HttpServletResponseresponse){
System.out.println("updateUser");//便利于跟踪实行了哪个办法
returnnewModelAndView("userList","from","updateUser");
}
publicModelAndViewdeleteUser(HttpServletRequestrequest,
HttpServletResponseresponse){
System.out.println("deleteUser");//便利于跟踪实行了哪个办法
returnnewModelAndView("userList","from","deleteUser");
}
}
用过Struts的DispatchAction的都晓得,是经由过程http://.../userAction.do?method=updateUser的体例来指定执行哪一个办法。那SpringMVC中是怎样定位到所需办法上呢?
SpringMVC除有一个叫做HandlerMapping(把URL剖析到Controller)的工具,还要把操纵进一步剖析到办法名上,即要找到的Controller上的哪一个办法并实行之。缺省的办法名剖析器是InternalPathMethodNameResolver,它依据URL款式剖析办法名。
在缺省的BeanNameUrlHandlerMapping和缺省的InternalPathMethodNameResolver和谐之下,Bean高低文能够这样设置:
<beanname="/updateUser.html"class="com.unmi.UserController"/>
<beanname="/deleteUser.html"class="com.unmi.UserController"/>
<beanname="/updateUser.html"class="com.unmi.UserController"/>
<beanname="/deleteUser.html"class="com.unmi.UserController"/>
如许分离经由过程上面的URL就可以实行到准确的办法上往了:
http://.../updateUser.html -- 将被UserController.updateUser()处置
http://.../deleteUser.html -- 将被UserController.deleteUser()处置
<p>
Java编译的是字节码,跟C++相反,启动不够快,效率不够高,难以精确控制内存,但是优点是编程比C++容易,代码比较安全但是容易留下性能隐患,跨平台靠字节码在各个平台复制(一处编译到处调试) |
|