1.首先我们从页面开始(这里是jsp页面),简单的请求部分:
transList.jsp:
var store_url = "<%=basePath%>/TransListAction.do?method=view"; var store = new Ext.data.Store({ proxy:new Ext.data.HttpProxy({ url:store_url }), var doFind = function(str){ store.load({params:{start:0,limit:pageSize}}); };
上面代码是做了一个简单的查询,我们只关注web请求地址:
"<%=basePath%>/TransListAction.do?method=view"
可以看出目标地址是TransListAction处理类,后缀为.do,参数为method=view
2.继续往下看,
TransListAction类:
package com.boc.transList.action; @Controller @RequestMapping("/TransListAction.do") public class TransListAction extends BaseAction { private static int PAGESIZE = 20; @Autowired private ITransListService TransListService; @RequestMapping(params = "method=view") public String view(HttpServletRequest request, HttpServletResponse response) throws Exception { String findCondition = request.getParameter("jsonData"); int start = Integer.parseInt(request.getParameter("start")); int limit = Integer.parseInt(request.getParameter("limit")); Pager<TransListVO> pager = TransListService.getTransList(findCondition, start, limit); String jsonString = "{'totalCount':"+pager.getTotalRows()+",'root':"+this.listToJsonString(pager.getResultList())+"}"; try { response.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); out.print(jsonString); out.close(); } catch (IOException e) { e.printStackTrace(); } return null; } }
其实这里的TransListAction类就是一个servlet,大家都知道servlet必须要注册,这样web请求页面才能找到,那spring mvc是怎么做的啦?
3.下面我们来看看配置文件web.xml
web.xml
<!-- 配置Spring MVC ,这是SpringMVC的主控程序--> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!--配置ApplicationContext配置文件的路径,可以配置多个,用","分割就行,用于后面加载spring 主配置文件--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml,classpath*:applicationContext_test.xml</param-value> </context-param>
我们来看看这个配置文件:首先创建了一个名为action的servlet,对应的类为:org.springframework.web.servlet.DispatcherServlet,而不是上面所说的TransListAction类,这里就是spring mvc 的不同之处,*.do这里意思是过滤所有后缀为.do的请求,目的是为了减少配置量和增强扩展性,灵活匹配,处理多组请求等等,我们来简单说说这里,大家都知道web.xml是大多数框架的门户,当web.xml接收到后缀为.do的请求时,请求就会交给org.springframework.web.servlet.DispatcherServlet,该servlet(action)将寻求具体的HandleMapping实例,以获取对应当前请求具体的实现类,即:org.springframework.web.servlet.Controller,这里就是TransListAction类了,org.springframework.web.servlet.HandleMapping是spring mvc专门用来管理web请求与具体Controller实现类之间的映射匹配的(后面再作深入)。这里我就不多说了,大家可以多参考Spring API。
配置文件后面几句是配置spring 的主配置文件applicationContext文件路径,这个文件也是可以配置多个的,方便以后加载。下一章继续...