SpringMVC入门程序

一 什么是 SpringMVC?

1 SpringMVC是Spring框架的一个模块,SpringMVC和Spring无需通过中间整合层进行整合。
2 SpringMVC是一个基于MVC的Web框架。

二 SpringMVC框架?

SpringMVC图
解释:
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 前端控制器进行视图渲染(视图渲染将模型数据填充到request域)
11 前端控制器向用户响应
组件:
1 前端控制器DispatcherServlet

作用:接受请求,响应结果,相当于转发器

2 处理器映射器HandlerMapping

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

3 处理器适配器HandlerAdapter

作用:按照特定规则(HandlerAdapter 要求的规则)去执行Handler
注意:编写Handler时按照HandlerAdapter的要求去做。这样适配器才可以正确执行Handler

4 视图解析器View resolver

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

5 视图View

View是一个接口,实现类支持不同的View类型(jsp,pdf。。。。。)

三 入门程序

1 jar包(maven)

         
        
            org.springframework
            spring-web
            4.2.6.RELEASE
        
        
            org.springframework
            spring-webmvc
            4.2.4.RELEASE
        
        
            org.springframework
            spring-context
            4.2.6.RELEASE
        
        
            org.springframework
            spring-test
            4.2.6.RELEASE
        
        
            org.springframework
            spring-jdbc
            4.2.6.RELEASE
        
        
            com.github.stefanbirkner
            system-rules
            1.16.1
            test
        
        
            org.aspectj
            aspectjweaver
            1.8.9
        
        
        
            org.apache.commons
            commons-lang3
            3.4
        
        
            commons-fileupload
            commons-fileupload
            1.3.1
        
        
        
            javax.servlet
            jstl
            1.2
        
        
        
            javax.servlet
            javax.servlet-api
            3.1.0
        
        
            javax.servlet.jsp
            jsp-api
            2.2
        
        
            javax.servlet
            jstl
            1.2
        

2 配置web.xml



    Archetype Created Web Application
    
        
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:SpringMVC/Springmvc.xml
        
    
    
    
        springmvc
        *.action
    

3 配置Springmvc.xml



    
    

    
    

    
    

    
    

4 实现controller接口的Handler处理器

package controller;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: Y
 * @date: 2018/4/6
 */

public class ItemsController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest Request, HttpServletResponse Response) throws Exception {
        List list = new ArrayList();

        ItemsBean items1 = new ItemsBean();
        items1.setName("小米MIX2S");
        items1.setPrice(3888);
        items1.setDetail("便宜不贵,实惠");

        ItemsBean items2 = new ItemsBean();
        items2.setName("iphone X");
        items2.setPrice(8888);
        items2.setDetail("穷人用苹果");

        ItemsBean items3 = new ItemsBean();
        items3.setName("华为P20");
        items3.setPrice(9999);
        items3.setDetail("低调奢华");

        list.add(items1);
        list.add(items2);
        list.add(items3);

        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("items",list);
        modelAndView.setViewName("/index.jsp");
        return modelAndView;
    }
}

5 View视图

<%--
  Created by IntelliJ IDEA.
  User: Y
  Date: 2018/4/6
  Time: 19:41
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@page isELIgnored="false" %>


    
    查询商品列表


查询条件:
商品列表:
商品名称 商品价格 生产日期 商品描述 操作
${item.name } ${item.price } ${item.detail } 修改
执行结果

四 非注解的处理器映射器和适配器

1 处理器映射器

org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

    
    
    
    
    
    
    
            
                
                    
                    itemsController
                    itemsController
                
            
    
2 适配器

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
要求编写的Handle实现Controller接口

org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter
要求编写的Handle实现HttpRequestHandler接口

ItemsController2.java

package controller;

import entity.ItemsBean;
import org.springframework.web.HttpRequestHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: Y
 * @date: 2018/4/22
 */

public class ItemsController2 implements HttpRequestHandler {

    @Override
    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List list = new ArrayList();

        ItemsBean items1 = new ItemsBean();
        items1.setName("小米MIX2S");
        items1.setPrice(3888);
        items1.setDetail("便宜不贵,实惠");

        ItemsBean items2 = new ItemsBean();
        items2.setName("iphone X");
        items2.setPrice(8888);
        items2.setDetail("穷人用苹果");

        ItemsBean items3 = new ItemsBean();
        items3.setName("华为P20");
        items3.setPrice(9999);
        items3.setDetail("低调奢华");

        list.add(items1);
        list.add(items2);
        list.add(items3);

        request.setAttribute("items",list);
        request.getRequestDispatcher("/index.jsp").forward(request,response);

    }
}

Springmvc.xml



    
    
    
    
            
                
                    
                    itemsController1
                
            
    
    
    

    
    

实现HttpRequestHandler接口

你可能感兴趣的:(SpringMVC入门程序)