您的位置:首页 > 编程语言 > Java开发

Spring MVC

2020-02-02 01:48 561 查看

Spring MVC

  • 什么是springMVC

      ​ Spring Web MVC是一种基于Java的实现了MVC设计模式的、请求驱动类型的、轻量级Web框架。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vegwi9Qu-1571630033795)(C:\Users\陈加乐\Desktop\20190303142800705.jpg)]

    1. Spring MVC 的请求流程

      用户发送请求 -----------前端处理器---------------通过HandlerMapping映射返回一个HandlerExecutionChain-------------在通过HandlerAdapter执行真正的方法------------

      放回一个ModelAndView到前端处理器--------------通过解析器返回一个view视图-------

      响应结果

    2. SpringMVC核心开发步骤

    ​ 3.1 DispatcherServlet在web.xml中的部署描述,从而拦截请求到springMVC

    <web-app>
    <display-name>Archetype Created Web Application</display-name>
    
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    </web-app>

    ​ 3.2 HandlerMapping的配置,从而将请求映射到处理器
    ​ 3.3 HandlerAdapter的配置,从而支持多种类型的处理器
    ​ 3.4 处理器(页面控制器)的配置,从而刊行功能处理
    ​ 3.5 ViewResolver的配置,从而将逻辑视图名解析为具体的视图技术

  1. SpringMVC的组件

    4.1 前端控制器(DispatcherServlet)
    4.2 请求到处理器映射(HandlerMapping)
    4.3 处理器适配器(HandlerAdapter)
    4.4 视图解析器(ViewResolver)
    4.5 处理器或页面控制器(Controller)
    4.6 验证器(Validator)

  2. SpringMVC的常用注解

    5.1 @Controller注解

    ​ @Controller注解是在Spring的org.springframework.stereotype包下,

    ​ @Controller注解注解的控制器可以同时支持处理多个请求动作,使程序开发变的更加灵活。

    使用它须知:

    ​ 1、在Spring MVC的配置文件中的头部引入spring-context;

    ​ 2、 使用

    <context:component-scan/>
    元素,该元素的功能是:启动包扫描功能,以便注册带有 @Controller、@Service、@repository、@Component等注解的类成为Spring的Bean。配置文件如下所示:

    <?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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd ">
    
    <!-- 扫描biz层注解-->
    <context:component-scan base-package="cn.service" />
    
    </beans>

    演示@Controller

    ​ 先建一个spring项目

    ​ 在项目的“src/main/java”下创建一个包,包名叫“com.qianchunhua.controller”,在包下创建 ControllerTest类,用来演示@Controller注解控制器的使用。如下代码:

    package com.qianchunhua.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    /**
    * ControllerTest是一个基于注解的控制器,
    * 可以同时处理多个请求动作,并且无须实现任何接口。
    * org.springframework.stereotype.Controller注解用于指示该类是一个控制器.
    * @author Cody
    */
    @Controller
    public class ControllerTest {
    @RequestMapping("/helloWorld")
    public String helloWorld(Model model) {
    model.addAttribute("message", "你好,欢迎访问my,,heart的专栏!");
    return "helloWorld";
    }
    }

    它返回的是一个页面

    接下来,我们要创建一个Spring MVC的配置文件,并且从中配置,在我们的maven项目“src/main/webapp/WEB-INF”目录下创建一个springmvc-config.xml,这个xml文件就是我们的Spring MVC配置文件。配置信息如下:

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

    由于在我们的java文件中使用了注解类型,因此不需要再配置文件中使用xml描述bean。<context:component-scan base-package=“com.qianchunhua.controller”/> 指定需要Spring扫描com.qianchunhua.controller包及其子包下面的所有java文件。最后配置了视图解析器InternalResourceViewResolver来解析视图,将View呈现给用户。视图解析器中配置的prefix属性表示视图的前缀,suffix表示视图的后缀,返回的视图字符串是“helloWorld”,经过视图解析器之后,则视图的完整路径是:/WEB-INF/content/helloWorld.jsp。因此,在这里,我们需要在项目的WEB-INF下,创建一个“content”文件夹,里面用来保存jsp文件,在content文件下创建一个helloWorld.jsp。如下代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <!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>测试@Controller注解</title>
    </head>
    <body>
    <!-- 页面可以访问Controller传递传递出来的message -->
    ${requestScope.message}
    </body>
    </html>

    需要注意的是,在此配置文件中没有配置处理映射器和处理适配器时,Spring会使用默认的处理映射器和处理适配器处理请求。此外,还需要在web.xml中配置Spring MVC的前端控制器DispatcherServlet。web.xml配置信息如下:

    <web-app>
    <display-name>Archetype Created Web Application</display-name>
    
    <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    </web-app>

    到此,我们就将@Controller注解的案例应用给写完了。下面,我将部署springmvc-comment1项目,在浏览器中输入如下url地址来测试应用:

    然后按下回车,看到如下图所示。就表示Spring MVC访问成功!

    结果输出 “你好,欢迎访问my,heart的专栏!”

    5.2 @RequestMapping("/helloWorld")

    ​ 通过前端dispatchservlet拦截路径,@RequestMapping("/helloWorld")是访问路径

    5.3 @RequestParam注解

    ​ 使用来复制

    @RequestMapping(value="/hello")
    public ModelAndView hello(
    @RequestParam("loginname") String loginname,
    @RequestParam("password") String password) {
    return...;
    }

    映射方式: 自动映射,手动映射同上,(注:自动映射需要名字对应,手动映射需要与@RequestParam(“loginname”)参数对应)

questParam(“loginname”) String loginname,
@RequestParam(“password”) String password) {
return…;
}

映射方式: 自动映射,手动映射同上,(注:自动映射需要名字对应,手动映射需要与@RequestParam("loginname")参数对应)
  • 点赞
  • 收藏
  • 分享
  • 文章举报
my,,heart 发布了6 篇原创文章 · 获赞 4 · 访问量 644 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: