zoukankan      html  css  js  c++  java
  • (1)SpringMVC的入门

    章节目标:

    1.SpringMVC的好处

    2.SpringMVC的工作流程

    3.Spring的注解开发,核心类

    1.SpringMVC是什么?好处是什么?

    答:此框架是spring提供一个实现WebMVC设计模式的轻量级web框架.

    好处:1.灵活性强易于其他框架集成.2.提供前端控制器DispatchServlet3.自动绑定用户输入.4.内置常见校验器.5.基于XML配置文件,不需要重写编译应用程序等等

    2.Spring的工作流程

    废话不多先上例子

    项目例子

    1.创建项目,引入jar包,搭建环境

    在这里要注意spring和Tomcat的版本配对问题,spring版本过高必报错,所以我的版本和之前不同

                          

    2.在web.xml下写写前端控制器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <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-config.xml</param-value>
        </init-param>
        <!-- 表示容器在启动时立即加载Servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    </web-app>
    View Code

    3.创建Controller类

    public class FirstController implements Controller{
        public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            //创建ModelAndView对象
            ModelAndView mav = new ModelAndView();
            //向模型对象中添加数据
            mav.addObject("msg", "大家好,mynameis springmvc");
            //设置逻辑视图名
            mav.setViewName("/WEB-INF/jsp/first.jsp");
            //返回ModelAndView对象
            return mav;
        }
    }
    View Code

    4.编写配置文件springmvc-config.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 ">
            
            <!-- 配置处理器Handle,映射/firstController 请求 -->
            <bean name="/firstController" class="com.itheima.controller.FirstController"/>
            
            <!-- 处理器映射器,将处理器Handle的name作为url进行查找 -->
            <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
            
            <!-- 处理器适配器,配置对处理器中handleRequest()方法的调用 -->
            <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
            
            <!-- 视图解析器 -->
            <bean class="org.springframework.web.servlet.view.InternalResourseViewResolver"/>
    
    </beans>
    View Code

    5.在创建first.jsp 文件WEB-INF的jsp文件夹下

    <body>${msg}<body>

    6.完成项目然后发布到Tomcat中启动服务器输入这个网址:http://localhost:8080/SpringMVCdemo/firstController

    SpringMVC的工作流程

    先看图

                                          

    此图就是SpringMVC工作流程,其中HandlerAdapter,HandlerMapping,viewResolver分别表示处理器适配器,处理器映射器,视图解析器,

    在上述springmvc-config.xml中对应的xml语句写了对应的功能(其中xml文件的这些内容可以省略,spring自动为我们实现了这些功能,为了理解我们写上)

    Handler相当于之前的Controller类,称为后端控制器

    工作流程按数字顺序:

    1.客户通过客户端向服务器发起请求,2.被DispatcherServlet拦截,拦截请求后调用HandlerMapping,

    3.HandlerMapping功能是根据请求的url找到具体处理器,生成此对象返回给DispatcherServlet

    4.DispatcherServlet通过返回的信息选择合适的HandlerAdapter

    5.HandlerAdapter调用执行Handler,也就是执行对应的Controller类

    6.Controller类执行完返回一个ModelAndView对象,里面包含模型和视图名.

    7.HandlerAdapter将此对象返回给DispatcherServlet

    8.DispatcherServlet通过MAV对象选择合适的viewResolver

    9.viewResolver解析后,返回具体的view给DispatcherServlet

    10.DispatcherServlet得到数据给view进行渲染

    11.视图渲染后返回客户端的浏览器得到显示

    SpringMVC核心类和注解

    说实话,上面的东西只是帮助我们理解springmvc是如何工作的,在实际开发中我们一定要用注解开发,因为十分方便.

    注解在spring2.5后使用

    先上代码,看看和之前有什么区别

    前端控制器

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <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-config.xml</param-value>
        </init-param>
        <!-- 表示容器在启动时立即加载Servlet -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    </web-app>
    View Code

    Controller注解类型

    package com.itheima.controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    
    @Controller
    @RequestMapping(value="/hello")
    public class FirstController{
        @RequestMapping(value="/firstController")
        public String handleRequest(HttpServletRequest request,
                HttpServletResponse response,Model model){
            model.addAttribute("msg", "这是我的第一个springmvc程序");
            return "first";
        }
    
    }
    View Code

    springmvc-config.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 ">
            
            <!-- 指定需要扫描的包 -->
            <context:component-scan base-package="com.itheima.controller"/>
            
            <!-- 定义视图解析器 -->
            <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            
            <!-- 设置前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/" />
            
            <!-- 设置后缀 -->
            <property name="suffix" value=".jsp" />
            
            </bean>
    
    </beans>
    View Code

    然后输入http://localhost:8080/SpringMVCdemo/hello/firstController即可查看结果,与上面相同

  • 相关阅读:
    Debian 安装配置(包括kdevelop)
    linux matlab2016 安装
    Qt5.7 无法输入中文问题
    阻塞方法与InterruptedException
    java的null
    原子性、可见性、有序性与指令重排序
    物理机内存模型与java内存模型
    java构造函数总结
    什么时候需要用super
    重载与重写
  • 原文地址:https://www.cnblogs.com/zoulingjin/p/9525047.html
Copyright © 2011-2022 走看看