SpringMVC

案例:链接:https://pan.baidu.com/s/14xggiT0cej20LpHCZS6Usw
提取码:cslw

SpringMVC处理流程框架

步骤1:

在WebContent下新建一个index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>




SpringMVC Test


展示所有商品


在WEN-INF下新建一个jsp文件夹,并在里面新建一个pro_list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




Insert title here


    
            
序号 商品名称 商品价格 操作
${vs.count} ${pro.name } ${pro.price } 编辑 | 删除

步骤2:

在com.hello.pojo包下新建一个Product类

package com.hello.pojo;

import java.io.Serializable;
import java.util.Date;

public class Product implements Serializable{

    private static final long serialVersionUID = 1L;

    private String name;
    private Float price;
    public Product() {
        super();
    }
    public Product(String name, Float price) {
        super();
        this.name = name;
        this.price = price;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Float getPrice() {
        return price;
    }
    public void setPrice(Float price) {
        this.price = price;
    }
    @Override
    public String toString() {
        return "Product [name=" + name + ", price=" + price "]";
    }   
}

步骤3:

在com.hello.controller包下新建一个ProductController类

package com.hello.controller;

import java.util.ArrayList;
import java.util.List;

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

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.hello.pojo.Product;

@Controller
public class ProductController{

    @RequestMapping("/showAllProduct")
    public ModelAndView showAllProduct() {
        List proList = new ArrayList<>();
        Product pro = new Product("娃哈哈", 2.5f);
        proList.add(pro);
        pro = new Product("旺仔", 6.5f);
        proList.add(pro);
        pro = new Product("力加", 2.5f);
        proList.add(pro);
        // 创建 ModelAndView 对象并返回
        ModelAndView mv= new ModelAndView();
        mv.addObject("proList", proList);
        mv.setViewName("pro_list");
        
        return mv;
    }   
}

@RequestMapping是Spring Web应用程序中最常被用到的注解之一。这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上。

步骤4:

在src下新建一个配置文件springmvc.xml



        

    
    
    
    
    
        
        
    
    
    
    

配置文件中的 标签是用来扫描注解的,ProductController中的@RequestMapping需要扫描才能起作用;
然后配置文件中的bean是视图解析器,在ProductController中的

// 创建 ModelAndView 对象并返回
        ModelAndView mv= new ModelAndView();
        mv.addObject("proList", proList);
        mv.setViewName("pro_list");
        
        return mv;

return的时候会给"pro_list"加上一个前缀和后缀,然后才能找到对应的路径了(大概是这个意思,有什么不对后面再来改)

步骤5:

配置我们的web.xml文件



  SpringMVC_test1
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
  
    springMVCDispatcherServlet
    org.springframework.web.servlet.DispatcherServlet

    
    
        
        contextConfigLocation
        classpath:springmvc.xml
    
    
    
    1
  
  
  
    springMVCDispatcherServlet
    *.action
  
  

tomcat 启动的时候,也一同加载当前控制器

步骤6:

接下来就可以进行测试了,把项目部署到Tomcat上运行
我们跟着走一遍大概就能了解SpringMVC是怎么工作的了...
↓↓↓↓↓↓↓↓
启动Tomcat,web.xml文件中的控制器一同被加载,springmvc.xml文件被执行,ProductController类中的注解被扫描


案例运行截图

点击“展示所有商品”链接后,页面发送请求"${pageContext.request.contextPath }/showAllProduct.action"到服务器,找到web.xml中符合的servlet-mapping
image.png
然后找到对应的servlet
image.png
然后交给前端控制器执行相对应的请求映射方法。
ProductController类已经通注解@Controller注册为前端控制器
image.png
showAllProduct()方法也通过注解@RequestMapping注册为映射方法
image.png
然后该干嘛干嘛,搞完之后创建 ModelAndView 对象并返回
image.png

需要带什么就带走,return之后会给视图解析器解析,前面也提到了,视图解析器会帮加上我们设置的前缀和后缀,才能找到正确的路径。
image.png

你可能感兴趣的:(SpringMVC)