本文共 4880 字,大约阅读时间需要 16 分钟。
1、什么是Spring MVC ?简单介绍下你对springMVC的理解?
Spring MVC的主要组件? 2.请求映射、restfulAPl、 返回值、JSON交互、异常处理、拦截器Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
SpringMVC 能干什么
1) 天生与 Spring 框架集成, 如: (IOC,AOP)
2) 支持 Restful 风格 3) 进行更简洁的 Web 层开发 4) 支持灵活的 URL 到页面控制器的映射 5) 非常容易与其他视图技术集成, 如:Velocity、 FreeMarker 等等 6) 因为模型数据不存放在特定的 API 里, 而是放在一个 Model 里(Map 数据结构实现, 因此很容易被其他框架使用) 7) 非常灵活的数据验证、 格式化和数据绑定机制、 能使用任何对象进行数据绑定, 不必实现特定框架的 API 8) 更加简单、 强大的异常处理 9) 对静态资源的支持 10) 支持灵活的本地化、 主题等解析
(1)前端控制器 DispatcherServlet(不需要程序员开发)
作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
(2)处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的URL来查找Handler
(3)处理器适配器HandlerAdapter
注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler。
(4)处理器Handler(需要程序员开发)
(5)视图解析器 ViewResolver(不需要程序员开发)
作用:进行视图的解析,根据视图逻辑名解析成真正的视图(view)
(6)视图View(需要程序员开发jsp)
View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf等等)
明确: 我们只需要编写处理具体业务的控制器以及视图。
1) 将 Web 层进行了职责解耦, 基于请求-响应模型
2) 常用主要组件 1 DispatcherServlet: 前端控制器 2 Controller: 处理器/页面控制器, 做的是 MVC 中的 C 的事情, 但控制逻辑转移到前端控制器了, 用于对请求进行处理 3 HandlerMapping : 请求映射到处理器, 找谁来处理, 如果映射成功返回一个HandlerExecutionChain 对象( 包含一个 Handler 处理器(页面控制器)对象、 多个 HandlerInterceptor 拦截器对象) 4 View Resolver : 视图解析器, 找谁来处理返回的页面。 把逻辑视图解析为具体 的 View,进行这种策略模式, 很容易更换其他视图技术; 如 InternalResourceViewResolver 将逻辑视图名映射为 JSP 视图 5 LocalResolver: 本地化、 国际化 6 MultipartResolver: 文件上传解析器 7 HandlerExceptionResolver: 异常处理器
spring-aop-4.0.0.RELEASE.jar
spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar commons-logging-1.1.3.jar spring-web-4.0.0.RELEASE.jar spring-webmvc-4.0.0.RELEASE.jar
1 增加名称空间
<a href="${pageContext.request.contextPath }/helloworld">Hello World</a>
/WEB-INF/views/success.jsp
Sucess Page
HelloWorld 请求流程图解:流程分析:
基本步骤:
1 客户端请求提交到 DispatcherServlet 2 由 DispatcherServlet 控制器查询一个或多个 HandlerMapping, 找到处理请求的 Controller 3 DispatcherServlet 将请求提交到 Controller(也称为 Handler) 4 Controller 调用业务逻辑处理后, 返回 ModelAndView 5 DispatcherServlet 查询一个或多个 ViewResoler 视图解析器, 找到 ModelAndView 指定的视图 6 视图负责将结果显示到客户端
1) 理解本真的 REST 架构风格:
2) REST:1) REST: 即 Representational State Transfer。(资源) 表现层状态转化。 是目前最流行的一种互联网软件架构。
GET 用来获取资源, POST 用来新建资源, PUT 用来 更新资源, DELETE 用来删除资源。
1) 配置 HiddenHttpMethodFilter 过滤器
/** * Rest 风格的 URL. 以 CRUD 为例: * 新增: /order POST * 修改: /order/1 PUT update?id=1 * 获取:/order/1 GET get?id=1 * 删除: /order/1 DELETE delete?id=1 * * 如何发送 PUT 请求和 DELETE 请求呢 ? * 1. 需要配置 HiddenHttpMethodFilter * 2. 需要发送 POST 请求 * 3. 需要发送 POST 请求是携带一个 name="_method" 的隐藏域,值为 DELETE 或 PUT * * 在 SpringMVC 的目标方法中 如何得到id 呢? 使用 @PathVariable 注解 * */ @RequestMapping(value = "/testRest/{id}", method = RequestMethod.PUT) public String testRestPut(@PathVariable Integer id) { System.out.println("testRest Put: " + id); return SUCCESS; } @RequestMapping(value = "/testRest/{id}", method = RequestMethod.DELETE) public String testRestDelete(@PathVariable Integer id) { System.out.println("testRest Delete: " + id); return SUCCESS; } @RequestMapping(value = "/testRest", method = RequestMethod.POST) public String testRest() { System.out.println("testRest POST"); return SUCCESS; } @RequestMapping(value = "/testRest/{id}", method = RequestMethod.GET) public String testRest(@PathVariable Integer id) { System.out.println("testRest GET: " + id); return SUCCESS; }
3) 请求链接
testREST GET
1) ModelAndView: 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据
2) Map 及 Model: 入参org.springframework.ui.Model、 org.springframework.ui.ModelMap 或 java.uti.Map 时, 处理方法返回时, Map 中的数据会自动添加到模型中。 3) @SessionAttributes: 将模型中的某个属性暂存到 HttpSession 中, 以便多个请求之间可以共享这个属性 4) @ModelAttribute: 方法入参标注该注解后, 入参的对象就会放到数据模型中
1 ModelAndView 介绍
1) 控制器处理方法的返回值如果为 ModelAndView, 则其既包含视图信息, 也包含模型 数据信息。 2) 添加模型数据: MoelAndView addObject(String attributeName, Object attributeValue) ModelAndView addAllObject(Map<String, ?> modelMap) 3) 设置视图: void setView(View view) void setViewName(String viewName)SpringMVC怎么样设定重定向和转发的?
(1)转发:在返回值前面加"forward:",比如"forward:user.do?name=method"
(2)重定向:在返回值前面加"redirect:",比如"redirect:http://www.baidu.com"![]()
SpringMvc怎么和AJAX相互调用的?
通过Jackson框架就可以把Java里面的对象直接转化成Js可以识别的Json对象。具体步骤如下 :
(1)加入Jackson.jar
(2)在配置文件中配置json的映射
(3)在接受Ajax方法里面可以直接返回Object,List等,但方法前面要加上@ResponseBody注解。
SpringMVC常用的注解有哪些?
@RequestMapping:用于处理请求 url
映射的注解,可用于类或方法上。用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestBody:注解实现接收http请求的json数据,将json转换为java对象。
@ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。
未完待续~
转载地址:http://fvxab.baihongyu.com/