超简略的springMVC入门

springmvc简介

什么是springmvc

Spring下的子项目:Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

springmvc的执行流程)

  1. 客户端请求提交到DispatcherServlet
  2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
  3. DispatcherServlet将请求提交到Controller
  4. Controller调用业务逻辑处理后,返回ModelAndView
  5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
  6. 视图负责将结果显示到客户端

在这里插入图片描述

springmvc框架搭建

1. 通过maven导入所需的jar

导入spring核心jar

 <!--spring start-->
    <!-- spring-beans -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>

    <!--spring-core -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>

    <!-- spring-context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>

    <!-- spring-expression -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>
    <!--spring end-->

导入springmvc jar

    <!--spring mvc start-->
    <!--spring-web -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>

    <!--spring-webmvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.9.RELEASE</version>
    </dependency>
    <!--spring mvc end-->

2. 配置springmvc

创建springmvc的配置文件 springmvc-config.xm

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--启用mvc注解-->
    <mvc:annotation-driven>
    </mvc:annotation-driven>

	<!-- spring可以自动去扫描base-pack下面的包或者子包下面的java文件,
    	如果扫描到有Spring的相关注解的类,则把这些类注册为Spring的bean -->
    <context:component-scan base-package="com.controller"/>
    
    <!-- 视图解析器  -->
     <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <!-- 前缀 -->
        <property name="prefix">
            <value>/WEB-INF/jsp/</value>
        </property>
        <!-- 后缀 -->
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
</beans>

配置web.xml文件 主要是配置 DispatcherServlet,即核心分发器:

<!--加入web.xml文件中-->
<!--配置springMVC-->
  <servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
        <!--读取springmvc的配置文件-->
      <param-value>classpath:spring-config.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

3.创建Controller

返回页面

  1. String返回页面

    package controller;
    
    import mapper.User;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.SessionAttributes;
    
    import java.util.Map;
    
    /**
     * 作者:weisen
     * 日期:2019/9/28 9:38
     */
    @Controller
    public class IndexController{
        /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public String index(){
            return "index";
        }
    }
    

    @RequestMapping注释用来映射一个请求,value="/index"表示请求的路径,返回值表示是要返回那个页面的名称,他会根据之前配置的视图解析器中的前缀跟后缀来找到正确的页面,如示例中的 index 加上视图解析器的前缀和后缀后---->/WEB-INF/jsp/index.jsp从而找到页面

  2. 通过ModelAndView返回页面

    /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public ModelAndView index(){
            ModelAndView m = new ModelAndView();
            m.setViewName("index");
            return m;
        }
    

带参返回页面

  1. 通过ModelAndView返回参数

    /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public ModelAndView index(){
            ModelAndView m = new ModelAndView();
            //保存基本数据类型
            m.addObject("key","value");
            //保存引用数据类型
            m.addObject("key",对象);
            m.setViewName("index");
            return m;
        }
    
  2. 通过参数传值

    1. ModelMap

      /*@RequestMapping表示方法与那个请求URL来对应*/
          @RequestMapping(value = "/index",method = RequestMethod.GET)
          public String index(ModelMap modelMap){
              //保存基本数据类型
              modelMap.put("key","value");
              //保存引用数据类型
              modelMap.put("key",对象);
              return "index";
          }
      
    2. Model

      /*@RequestMapping表示方法与那个请求URL来对应*/
          @RequestMapping(value = "/index",method = RequestMethod.GET)
          public String index(Model model){
              //保存基本数据类型
              modelMap.addAttribute("key","value");
              //保存引用数据类型
              modelMap.addAttribute("key",对象);
              return "index";
          }
      
    3. Map

      /*@RequestMapping表示方法与那个请求URL来对应*/
          @RequestMapping(value = "/index",method = RequestMethod.GET)
          public String index(Map map){
              //保存基本数据类型
              map.put("key","value");
              //保存引用数据类型
              map.put("key",对象);
              return "index";
          }
      

页面传入参数

  1. 容器自动注入

    /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public String index(Map map,String name){
            //保存基本数据类型
            map.put("key","value");
            //保存引用数据类型
            map.put("key",对象);
            sout(name);
            return "index";
        }
    

    在请求中拼接参数 容器通过key–value自动映射到参数中

  2. @RequestParam

    /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public String index(Map map,@RequestParam String name){
            //保存基本数据类型
            map.put("key","value");
            //保存引用数据类型
            map.put("key",对象);
            sout(name);
            return "index";
        }
    

    在请求中拼接参数 容器通过key–value自动映射到参数中,如果没有参数会报出400的错误

  3. @RequestMapper

    /*@RequestMapping表示方法与那个请求URL来对应*/
        @RequestMapping(value = "/index",method = RequestMethod.GET,params = "key")
        public String index(Map map, String name){
            //保存基本数据类型
            map.put("key","value");
            //保存引用数据类型
            map.put("key",对象);
            sout(name);
            return "index";
        }
    

    在请求中拼接参数 容器通过key–value自动映射到参数中,如果没有参数会报出400的错误

  4. Rest风格

4.创建jsp页面

创建index.jsp页面,通过el表达式获取值

<%--
  Created by IntelliJ IDEA.
  User: isWeisen
  Date: 2019/9/28
  Time: 16:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
   	${key}
</body>
</html>

如果el表达式在页面中不起作用,可以在头里加属性isELIgnored="false"

5. 通过url访问

在浏览器中输入访问路径

6.发送请求 返回json格式的值

/*@RequestMapping表示方法与那个请求URL来对应*/
    @RequestMapping(value = "/index",method = RequestMethod.GET)
	@ResponseBody
    public String index(String name){
        return json格式的值;		//返回json格式的值
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值