01springMVC入门

1      MVC模式回顾

Spring MVC是一种基于MVC的Web应用框架。

MVC是一种设计模式,MVC在b/s系统下的应用:

 

执行步骤:

  1. 发出请求,请求到MVC当中的C,C接收请求后并不能处理请求,需要把请求交给M
  2. 模型是用来处理请求的,所有用来处理的东西都是模型,pojo,action,service,dao
  3. 处理完后进行结果返回到C
  4. C需要一些好看的经过渲染的页面进行响应,这就用到V视图
  5. 控制器进行视图的渲染,将模型数据填充到request域
  6. Request准备好了后就可以response了

注意:b/s系统下模型无法将数据填充到视图

 

与springMVC的联系:控制器、模型、视图这些在spring中怎么实现的?

 

2      Spring MVC框架

 

执行步骤:

1 发起请求到前段控制器(dispatcherServlet)

2 前端控制器请求HandlerMapping查找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 前端控制器向用户响应结果

3      springMVC主要组件

1前端控制器DispatcherServlet(不需要程序开发)

作用:接收请求,响应结果,相当于转发器,中央处理器

减少了其他组件之间的耦合度。

 

2 处理器映射器HandlerMapping(不需要程序开发)

作用:根据请求的url查找handler

 

3 处理器适配器HandlerAdapter(不需要程序开发)

作用:按照特定规则(HandlerAdapter要求的规则)执行handler

 

4 处理器Handler(需要程序开发

注意:编写handler时按照handlerAdapter的要求去做,这样适配器才可以正确执行handler

 

5 视图解析器view resolver(不需要程序开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

 

6 视图view(需要程序员开发jsp

View是一个接口,实现类支持不同的view类型

 

 

4      一个简单的springMVC案例

4.1   配置前端控制器

 1   <!-- 配置springmvc前端控制器 -->
 2   <servlet>
 3       <servlet-name>springmvc</servlet-name>
 4       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 5    <init-param>
 6         <param-name>contextConfigLocation</param-name>
 7         <param-value>classpath:/*-servlet.xml</param-value>
 8     </init-param>
 9     <load-on-startup>1</load-on-startup>
10   </servlet>
11   
12   <servlet-mapping>
13       <servlet-name>springmvc</servlet-name>
14        <url-pattern>/</url-pattern>
15   </servlet-mapping>

4.2   配置处理器:配置器

1 <!-- HandlerAdapter -->
2 <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

4.3   配置处理器:映射器

1 <!-- HandlerMapping -->
2   <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

4.4   配置视图解析器

1 <!-- ViewResolver -->
2 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
3   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
4   <property name="prefix" value="/WEB-INF/jsp/"/>
5   <property name="suffix" value=".jsp"/>
6 </bean>

4.5   处理器书写

1 <!-- Handler-->
2 <bean name="/hello" class="com.inspur.handler.HelloWorldController"/>

Java代码

 1 public class HelloWorldController implements Controller {
 2     @Override
 3     public ModelAndView handleRequest(HttpServletRequest request,
 4            HttpServletResponse response) throws Exception {
 5        //返回ModelAndView
 6        ModelAndView mv = new ModelAndView();
 7        //相当于request的setAttribute,在jsp页面中通过message取数据
 8        mv.addObject("message", "Hello World!");
 9        //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
10        mv.setViewName("hello");
11        return mv;
12     }
13 }

4.6   Jsp书写

1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
2   ${message}

 4.7   访问

http://localhost:8080/springmvctfirst/hello

 

posted @ 2018-02-05 17:12  silvan_happy  阅读(143)  评论(0编辑  收藏  举报