1.1(Spring MVC学习笔记)初识SpringMVC及SpringMVC流程

一、Spring MVC

  Spring MVC是Spring提供的一个实现了web MVC设计模式的轻量级Web框架。

  Spring优点:网上有,此处不复述。

二、第一个Spring MVC 

  2.1首先需要添加jar包

    

  2.2配置WEB-INF目录下的web.xml文件,如果没有直接新建一个。

  

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">
  <display-name>SpringMVC</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <!-- 配置前端控制器 -->
  <servlet>
      <servlet-name>springmvc</servlet-name>
      <servlet-class >
          org.springframework.web.servlet.DispatcherServlet
      </servlet-class> 
      <!-- 初始化时加载配置文件,该配置文件是在src目录下创建的。 -->
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc-config.xml</param-value>
      </init-param>
      <!-- 当前servlet与容器一起加载 -->
      <load-on-startup>1</load-on-startup>
  </servlet>
  <!-- 所有请求都会被前端控制器拦截-->
  <servlet-mapping>
      <servlet-name>springmvc</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

控制类:需要实现Controller接口

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class FirstController implements Controller{

    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("into modelandview");
        ModelAndView mv = new ModelAndView();//创建一个ModelAndView对象
        mv.addObject("msg", "first spring mvc");//设置属性名和属性值,
        mv.setViewName("/WEB-INF/jsp/first.jsp");//指定路径。
        return mv;
    }
}

在WEB-INF下新建一个jsp文件夹,在jsp文件夹下新建一个first.jsp文件。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    ${msg}
</body>
</html>

在src目录下新建一个springmvc-config.xml文件。

<?xml version="1.0" encoding="UTF-8"?>  
<beans     xmlns="http://www.springframework.org/schema/beans" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
         xsi:schemaLocation="  
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-4.3.xsd "> 
       <!-- 配置处理器(Handle),映射/firstController请求 (Controller类)-->
       <bean name = "/firstController" class = "com.springmvc.firstmvc.FirstController"/>
       <!-- 配置映射处理器(handlerMapping) 将处理器(Handle)的name作为url进行查找 -->
       <bean class = "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
       <!-- 配置适配处理器(HandlerAdapter) 适配处理器会调用处理器(Handle)即FirstController类 -->
       <bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
       <!-- 处理器会返回一个ModelAndView,适配处理器将返回的ModelAndView交给前端控制器去处理了 -->
       <!-- 前端控制器根据ModelAndView选择一个视图解析器(ViewReslover) -->
       <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver"/>
       <!-- 视图处理器解析后会将视图传递给前端控制器,前端控制对View进行渲染(将模型数据填入视图) -->
       <!-- 渲染结果会返回客户端浏览器显示 -->
</beans>

 

三、SpringMVC工作流程

  3.1用户发送请求,会被前端控制器(DispatcherServlet)拦截。

  3.2前端控制器拦截请求后会调用映射处理器(HandlerMapping)

  3.3映射处理器根据url寻找具体的处理器,然后将处理器对象返回给前端控制器。

  3.4前端控制器选择合适的适配处理器(HandlerAdapter)

  3.5处理适配器会调用处理器(Controller类)。

  3.6处理器执行完会返回一个ModelAndView(包含模型和视图名)。

  3.7适配处理器将ModelAndView返回给前端适配器。

  3.8前端控制器根据MdelAndView选择合适的视图解析器(ResloverView)。

  3.9视图解析器件解析的具体视图返回给前端控制器。

  3.10前端控制器将Model填充入视图。

  3.11用户看到具体页面。

猜你喜欢

转载自www.cnblogs.com/huang-changfan/p/10394582.html
今日推荐