zoukankan      html  css  js  c++  java
  • SpringMVC概念、原理及搭建

    MVC概念:

    model模型(dao service):保存数据状态,业务逻辑

    view视图(jsp):显示页面

    controller控制器(servlet):取得表单数据,调用业务逻辑,转向指定页面

    MVC框架做了哪些事:

    1、将url映射到java类或者java方法

    2、封装用户提交的数据

    3、处理请求,调用相关的业务处理,封装响应数据

    4、将响应的数据渲染到页面展示

    SpringMVC原理:

    1.在web.xml中配置SpringMVC的核心DispatcherServlet

    2.新建springmvc-servlet.xml配置HandlerMapping,HandlerMapping会把请求(controller bean)映射为HandlerExecutionChain类型的handler对象;

    3.将handler对象作为参数传递给HandlerAdapter的实例化对象,调用其handler方法会生成一个ModelAndView对象;

    4.通过ViewResolver视图解析器,将上一步骤中生成的ModelAndView解析为View;

    5.DispatcherServlet根据获取到View,将视图返回给用户。

    SpirngMVC初步搭建步骤:

    java环境预先准备

    新建项目,然后添加web框架支持

    执行过程:

    浏览器输入url,服务器找到dispatcherservlet,dispatcherservlet绑定了springmvc-servlet.xml的配置,通过处理器映射器handlermapping找到对应的bean,bean对应的类(controller)由handleradapter来处理,controller返回一个ModelandView对象交给视图解析器处理,最后浏览器展示视图解析器拼接的页面

    1、配置web.xml,注册DispatcherServlet

    <?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="3.1">
    
        <!--1.注册DispatcherServlet-->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc-servlet.xml</param-value>
            </init-param>
            <!--启动级别-1-->
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <!--/ 匹配所有的请求;(不包括.jsp)-->
        <!--/* 匹配所有的请求;(包括.jsp)-->
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    
    </web-app>

    2、编写SpringMVC 的 配置文件,固定名称格式:springmvc-servlet.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"
          xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">
    
    <!-- 添加 处理器映射器 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    
    <!-- 添加 处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
    
    <!--视图解析器:DispatcherServlet给他的ModelAndView-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    
    </beans>

    3、新增controller类

    package com.alan.controller;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    //注意:这里先导入Controller接口
    public class helloController implements Controller {
    
        public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
            //ModelAndView 模型和视图
            ModelAndView mv = new ModelAndView();
    
            //封装对象,放在ModelAndView中。Model
            mv.addObject("msg","HelloSpringMVC!");
            //封装要跳转的视图,放在ModelAndView中
            mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
            return mv;
        }
    
    }

    4、注册controller类的bean

    <!--HandlerMapping-->
    <bean id="/hello" class="com.alan.controller.HelloController"/>

    5、编写要跳转的jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>alan</title>
    </head>
    <body>
        ${msg}
    </body>
    </html>

    配置Tomcat 启动测试

     可能遇到的问题:访问出现404,可能tomcat缺少jar包,在structure-Atifacts中新建lib导入jar包即可

    SpringMVC使用注解搭建

    1、编写web.xml

        <!--1.注册servlet-->
        <servlet>
            <servlet-name>SpringMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc-servlet.xml</param-value>
            </init-param>
            <!-- 启动顺序,数字越小,启动越早 -->
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <!--所有请求都会被springmvc拦截 -->
        <servlet-mapping>
            <servlet-name>SpringMVC</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>

    2、编写springmvc-servlet.xml

        <!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->
        <context:component-scan base-package="com.alan.controller"/>
        <!-- 让Spring MVC不处理静态资源 -->
        <mvc:default-servlet-handler />
        <!--
        支持mvc注解驱动
            在spring中一般采用@RequestMapping注解来完成映射关系
            要想使@RequestMapping注解生效
            必须向上下文中注册DefaultAnnotationHandlerMapping
            和一个AnnotationMethodHandlerAdapter实例
            这两个实例分别在类级别和方法级别处理。
            而annotation-driven配置帮助我们自动完成上述两个实例的注入。
         -->
        <mvc:annotation-driven />
    
        <!-- 视图解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
              id="internalResourceViewResolver">
            <!-- 前缀 -->
            <property name="prefix" value="/WEB-INF/jsp/" />
            <!-- 后缀 -->
            <property name="suffix" value=".jsp" />
        </bean>

    3、创建controller类

    @Controller
    public class TestController {
    
        @RequestMapping("/hello")
        public String hello(Model model){
            model.addAttribute("msg","666");
            return "hello";
        }
    }

    4、编写hello.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>SpringMVC</title>
    </head>
    <body>
        ${msg}
    </body>
    </html>
  • 相关阅读:
    static link:关于gcc连接静态库的几种方式
    gcc同时使用动态和静态链接
    解决 liblog4cpp.a: could not read symbols: Bad value
    lombok 下的@Builder注解用法
    mybatis-plus id主键生成的坑
    关于mybatis-plus 和 mybatis-plus-boot-starter 异同点分析
    解决SpringBoot2.0集成Swagger2访问404的问题
    Google 开源的这个库,性能快到让程序员飞起来!
    解决mybatisplus saveBatch 或者save 无法插入主键问题
    intellij IDEA github clone 指定分支代码
  • 原文地址:https://www.cnblogs.com/alanchenjh/p/12302652.html
Copyright © 2011-2022 走看看