Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
1、DispacherServlet前端控制器
负责用户请求和响应,是一个中央控制器(调度),调用HandlerMapping查找Handler,调用HandlerAdapter处理器适配器执行Handler,调用ViewResolver视图解析器去解析视图,有了DispacherServlet有利于框架扩展,减少了各各组件之间耦合性。
2、HandlerMapping处理器映射器
不需要开发,使用框架提供的
负责查找Handler(常用action),通过xml配置方式或注解方式将Handler类和request请求Handler链接地址进行对应配置。
3、HandlerAdapter处理器适配器
不需要开发,使用框架提供的
Springmvc提供了很多种适配器,注解适配器支持注解开发、原始servlet适配器(HanderRequestAdapter)支持原始servlet的执行。
负责执行Handler,适配器是按照一定的规则去执行Handler,调用Handler返回的结果是ModelAndView,ModelAndView将Model和view封装起来(模型数据和视图)
4、ViewResolver视图解析器
不需要开发,使用框架提供的
负责进行视图解析,返回View,框架执行很多类型的View(jstlView、pdfView。。。)
5、Handler处理器(需要开发)
需要开发,按照适配器的规则开发,比如适配器要求Handler实现某个接口,Handler必须实现接口。
6、View视图页面(jsp) (需要开发)
需要开发,jsp+jstl。为了视图通用性建议使用第三方框架,jstl。
处理器映射器、处理器适配器、视图解析器称为springmvc的三大件。
案例 1:首先我们看controller
我们需要是实现Controller接口,然后我们重写handleRequest方法 ,这个方法返回的值的ModelAndView 所有我 们需要创建一个ModelAndView返回返回他,
一个addObject属性 是可以在页面上传值的,第二个传的是路径。
public class FilstController implements Controller {
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
ModelAndView mv=new ModelAndView();
mv.addObject("name","我是一个美丽的 小女孩");
mv.setViewName("index");
return mv;
}
}
上面我们实现了DispatcherServlet,并且我们需要连接一个路径配置的xml springmvc .xml
Archetype Created Web Application
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc02.xml
1
springmvc
/
第三步我们看springmvc.xml..首先 前俩个是图片显示的另外2种方法,然后BeanNameUrlHandlerMapping这个没什么用 ,写不写可以。
下面是配置视图解析器的配置。
接下来我们是显示 的页面。我们会在页面上显示图片 还有我们传过去的name值。
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
哈哈
我是SpringMVC,你成功了!!!
${name}
示例2和1无太大的差别
不过是 示例1实现了Controller接口,而示例2是继承了AbstractController,不过把它的配置文件的类换一下,
而且这和带请求的限定
如果你只写了一个post但是你浏览网页是Get请求的话,那是不可以的。没了 就这些了。