Spring MVC使用篇(二)—— 环境搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_36378917/article/details/83544597

1、依赖的jar包

  将所有所需的jar包统一放置的路径为:web/WEB-INF/lib。具体jar包如下图所示:
Spring MVC所依赖的jar包1
Spring MVC所依赖的jar包2
  然后在项目中设置项目依赖。
在这里插入图片描述
在这里插入图片描述

2、在web.xml中配置前端控制器

  由于使用了Spring MVC,请求就要交由Spring MVC来管理。我们知道,在一般的JSP/Servlet开发模式中,请求会被映射到web.xml中,然后匹配到对应的Servlet配置上,进而调用相应的Servlet类处理请求并反馈结果。那么当使用Spring MVC框架开发时,就需要将所有符合条件的请求拦截到Spring MVC的专有Servlet上,让Spring MVC框架进行下一步的处理。这里,需要在web/WEB-INF/web.xml文件中添加Spring MVC的前端控制器(DispatcherServlet),用于拦截额符合配置的url请求。具体配置如下:

<?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_4_0.xsd"
         version="4.0">
	<servlet>
    	<servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/config/springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>
  • servlet-mapping标签对
      其中定义了当url符合“.action”的形式(也即任何字符后面跟“.action”的形式)时,映射一个名为“springmvc”的Servlet配置。
  • servlet标签对
      其中定义了一个名为“springmvc”的Servlet配置,其中实现类为DispatcherServlet,即Spring MVC的前端控制器类。然后在下面的“init-param”标签对中放置了DispatcherServlet需要的初始化参数,配置的是contextConfigLocation上下文参数变量,其加载的配置文件为编译目录下的“web/WEB-INF/config/springmvc.xml”。

3、编写核心配置文件springmvc.xml

  由于在日常开发中,基于注解的开发方式是最为常用的,因此在笔记中仅对基于注解的开发方式作出记录。springmvc.xml配置文件放置的路径为:web/WEB-INF/config/springmvc.xml。

3.1 配置处理器映射器与处理器适配器

<!--配置基于注解的处理器适配器与处理器映射器-->
<mvc:annotation-driven/>

3.2 配置处理器

<!--使用扫描配置,对某一个包下面的所有类进行扫描,
    找出所有使用@Controller注解的Handler控制器类-->
    <context:component-scan base-package="com.ccff.controller"/>

3.3 配置视图解析器

<!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<!--配置视图解析器的前缀名称-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--配置视图解析器的后缀名称-->
        <property name="suffix" value=".jsp"/>
    </bean>

3.4 整体springmvc.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" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">

    <!--配置基于注解的处理器适配器与处理器映射器-->
    <mvc:annotation-driven/>

    <!--使用扫描配置,对某一个包下面的所有类进行扫描,
    找出所有使用@Controller注解的Handler控制器类-->
    <context:component-scan base-package="com.ccff.controller"/>

    <!--配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

4、编写Model模型

  其源文件路径为:/com/ccff/model/。
  创建一个Fruits类,作为水果商城中水果模型。代码如下:

package com.ccff.model;

public class Fruits {

    private int id;         //水果编号
    private String name;    //水果名
    private double price;   //水果价格
    private String producing_area;  //水果产地

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getProducing_area() {
        return producing_area;
    }

    public void setProducing_area(String producing_area) {
        this.producing_area = producing_area;
    }
}

5、编写Handler处理器

  Handler处理器即为MVC设计模式中的控制器(Controller)。其源文件路径为:/com/ccff/controller/。
  创建一个FruitsController类,用于加载一个水果商城的水果列表信息。代码如下:

package com.ccff.controller;

import com.ccff.model.Fruits;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

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

@Controller
@RequestMapping("/query")
public class FruitsController {

    private FruitsService fruitsService = new FruitsService();

    @RequestMapping("/allFruits.action")
    public String queryAllFruits(Model model){
        //模拟service获取水果商品列表
        List<Fruits> fruitsList = fruitsService.queryFruitsList();
        //将结果放到model中传到显示页面中
        model.addAttribute("fruitsList",fruitsList);
        return "fruits/fruitsList";
    }

}

class FruitsService{
    public List<Fruits> queryFruitsList(){
        List<Fruits> fruitsList = new ArrayList<Fruits>();

        Fruits apple = new Fruits();
        apple.setId(1);
        apple.setName("红富士苹果");
        apple.setPrice(2.3);
        apple.setProducing_area("山东");

        Fruits banana = new Fruits();
        banana.setId(2);
        banana.setName("香蕉");
        banana.setPrice(1.5);
        banana.setProducing_area("上海");

        fruitsList.add(apple);
        fruitsList.add(banana);
        return fruitsList;
    }
}

6、编写视图

  使用jsp页面,获取model中传递到前台的fruitsList集合,并使用JSTL标签显示。代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
<html>  
<head>  
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  <title>水果列表</title>  
</head>  
<body>
  <h3>水果列表</h3>
  <table width="300px;" border=1>  
    <tr>
      <td>编号</td>
      <td>名称</td>  
      <td>价格</td>    
      <td>产地</td> 
   </tr>  
   <c:if test="${fruitsList==null}">
      <b>水果商品信息为空!</b>
   </c:if>
   <c:forEach items="${fruitsList}" var="fruit">
     <tr>
       <td>${fruit.id }</td>
       <td>${fruit.name }</td>  
       <td>${fruit.price }</td>    
       <td>${fruit.producing_area }</td>  
     </tr>  
    </c:forEach>  
   </table>   
</body>
</html> 

7、最后显示结果

  部署在Tomcat服务器上后的访问路径为:http://localhost:8080/query/allFruits.action,显示结果如下:
demo显示结果

猜你喜欢

转载自blog.csdn.net/weixin_36378917/article/details/83544597