使用 Spring可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等。
SpringMvc是Spring框架的一个模块,SpringMvc和Spring无需通过中间整合层进行整合,SpringMcv是一个基于Mvc的Web框架,
MVC 是一种使用 MVC(Model ViewController模型-视图-控制器)设计创建 Web应用程序的模式:
· Model(模型)表示应用程序核心(比如数据库记录列表)。
· View(视图)显示数据(数据库记录)。
· Controller(控制器)处理输入(写入数据库记录)。
1. 发起请求到前端控制器DispatcherServlet
2. 前端控制器请求到HanderMapping查找Handler,可以根据xml配置,注解进行查找
3. 处理器映射器HandlerMapping向前端控制器返回Handler
4. 前端控制器调用适配器去执行Handler
5. 处理器适配器去执行Handler
6. Handler执行完成给适配器返回ModelAndView
7. 处理器适配器向前端适配器返回ModelAndView,ModelAndView是springMVc框架的一个底层对象,包括Model和View
8. 前端控制器请求视图解析器进行试图解析,根据逻辑视图名解析成真正的视图(jsp)
9. 视图解析器向前端控制器返回View
10. 前端控制器进行视图渲染;视图渲染将模型数据(在ModelAndView对象中)填充到request域
11. 前端控制器向用户响应
组件:
1. 前端控制器DispatcherServlet:作用>接收请求,响应结果,相当于转发器,中央处理器,
减少了其他组件之间的耦合度
2. 处理器映射器HandlerMapping:作用>根据请求的Url查找Handler
3. 处理器适配器HandlerAdapter:作用>按照特定规则(HandlerAdapte要求的规则)去执行Handler
4. 处理器Handler(需要程序员开发的)
注意:编写Handler时要按照HandlerAdapter的要求去做,这样适配器才能正确执行Handler
5.视图解析器View resolver :作用:进行试图解析,根据逻辑视图名解析成真正的视图(在Springmvc中View)
6.视图View(需要开发View类型)
是一个接口,实现类支持不同的View类型(jsp.freemarker.pdf..)
控制器的类是dispatcherServlet(注意此处控制器的名称:此控制器在启动的时候需要加载此控制器的配置文件,默认时在WEB-INF在寻找和此处配置控制器名称相匹配的mvc-servlet.xml文件); 但是在实际开发中根据不同模块或者职能来加载不同的配置文件,所以在此处按照初始化的方式来做配置,并且属性名称必须是contextConfigLocation,在然后配置寻找路径,可以配置在/WEB-INF/classes/serclet.xml(所有的 源文件编译后均是在此目录),如果有多个配置文件可以加上,文件名。最后在加上load-on-statup以便系统启动的时候此 控制器启动
决定什么样的请求转发到总的控制器并且配置CharacterEncodingFilter来解决Post提交方式造成的中文乱码
并且配置上下中主键扫描的标签,加载配置文件时来读取和分析注解
注解的时候不用实现接口,直接使用框架的注解,@controller说明这是一个控制器,并且定义类路径 @RequestMapping("/portal/task"),创建方法利用注解@RequestMapping(value="/init")来说明请求映射,相当于不使用注解中的handlerMappering, 注解中的值便是路径
5-1参数传递
(1)普通参数传递
1.在请求路径中加入参数,controller层利用request.getParameter来获取 http://localhost:8080/ZhouQi/userController/index.do?name=zhangsan
2.spring3.0中restful风格
把请求的参数写在请求路径中,使用这种方法首先要定义url模板,指明路径的可变部分, http://localhost:8080/ZhouQi/userController/index/zhangsan.do ,定义模板的时候是在controlle方法的注解中定义,如:@RequestMapping(value="/taskDetailInit/{id}"),并且在方法中配置路径变量:@PathVariable String id,参数的名称必须和模板中的名称一致
5-2不同的请求方法映射不同的处理方法
在方达参数中,添加method = RequestMethod.POST为POST方法,同理是get(这里方法的路径value不可以忽略)
maven+mysql 下载地址:http://download.csdn.net/detail/yjaspire/9653923
oracle+下载好的jar+easyui 下载地址:http://download.csdn.net/detail/yjaspire/9606292