动力节点 SpringMVC P1-11

哔哩哔哩视频链接
笔记参考链接

(一)SpringMVC知识介绍

动力节点 SpringMVC P1-11_第1张图片
可以理解为,springMVC就是spring,只不过是专门用于web开发的spring框架。能够使用spring的IOC和AOP,方便整合strtus,MyBatis,Hiberate,JPA等其他框架。
在这里插入图片描述

(二)第一个注解的SpringMVC程序

2.1 创建项目

1、打开IDEA,选择“Create a new project”,选择"Empty Project",点击next,再下一步我们选择项目工作路径为“F:\follow DongLi learn SpringMVC”,这时项目自动命名,再点击Finish即可。
2、项目打开即进入Project Structure,左栏选择Modules,点上面的“+”号,选择“New Module”。
我们要做的是web应用,左侧选择“Maven”,勾选“Create from archetype”,找到“Maven-archetype-webapp”,点击next。
动力节点 SpringMVC P1-11_第2张图片更改项目名,并存储到刚刚创立的文件夹中,并更改组id即GroupId为com.bjpowernode。
动力节点 SpringMVC P1-11_第3张图片点击next,然后勾选第一个Override,点击Finish,然后点击OK即可。
创建成功,点击右下角"Auto Import”自动导入功能,创建成功后出现:
动力节点 SpringMVC P1-11_第4张图片

2.2 梳理需求及实现步骤

动力节点 SpringMVC P1-11_第5张图片

2.3 代码实现

1、在main文件下右键新建Directory,新建java目录和resources目录。注意:选中java文件夹,右键“Mark Directory as”,选择“source Root”,选中的java文件夹变蓝了才行。
动力节点 SpringMVC P1-11_第6张图片
2、接下来修改pom.xml文件
(1) 在这里插入图片描述
(2)这里我们将jdk版本改成1.8的:
动力节点 SpringMVC P1-11_第7张图片
(3)这是加载单元测试:
动力节点 SpringMVC P1-11_第8张图片
(4) 现在在

3、接下来修改WEB-INF下面的web.xml文件
(1)我们可以看到自带的web.xml文件的dtd版本很低,那么怎么改呢?
点击右上角的“Project Structure”,点击web,点击右边的-号,删掉这个默认文件,再点击右边的+号,点击“web.xml”,这时弹出这个web.xml的文件名,改为1web.xml,并更改版本为4.0,点击OK。
动力节点 SpringMVC P1-11_第9张图片然后我们要将这个1web.xml文件重命名为web.xml文件,这样就改好了。
(2)在里面声明一下注册springmvc的核心对象DispatcherServlet。然后在resource文件下右键新建文件,命名为springmvc.xml。
回到web.xml文件,自定义springmvc.xml文件是容器配置文件:

<?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">
    <!--声明:注册springmvc的核心对象DispatcherServlet
            需要在tomcat服务器启动后,创建DispatcherServlet对象实例

            为什么要创建DispatcherServlet对象的实例呢?
            因为在DispatcherServlet创建过程中,会同时创建springmvc容器对象,
            读取springmvc的配置文件,把这个配置文件中的对象都配置好,
            当用户发起请求时就可以直接使用对象了。

            servlet的初始化会执行init()方法,DispatcherServlet在init(){
                //创建容器,读取配置文件
                webApplicationContext ctx = new ClassPathXmlApplicationContext("springmvc.xml");
                //把容器对象放入到ServletContext中
                getServletContext().setAttribute(key,ctx);
             }
        -->

    <servlet>
        <servlet-name>myweb</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!--自定义springmvc读取文件的位置-->
        <init-param>
            <!--springmvc配置文件的位置属性-->
            <param-name>contextConfigLocation</param-name>
            <!--指定自定义文件的位置-->
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!--表示在tomcat启动后,创建servlet对象
            数字表示启动后创建对象的顺序,数值越小,tomcat创建对象越早,要求大于等于0的整数
        -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>myweb</servlet-name>
        <!--
                使用框架的时候,url-pattern可以使用两种值
                1.使用扩展名方式,语法 *.xxxx , xxxx时自定义扩展名。常用的方式 *.do, *.action, *.mvc等等
                    http://localhost:8080/myweb/some.do
                    http://localhost:8080/myweb/other.do
                2.使用斜杠"/"
            -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

</web-app>

4、创建一个发起请求的页面index.jsp
因为可能出现编码问题,所以我们先将原webapp下的index.jsp删除,新建一个jsp文件命名为index.jsp。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>第一个springmvc项目</p>
    <p><a href="some.do">发起some.do的请求</a></p>
</body>
</html>

5、创建控制器类(处理器类)MyController.class
在java文件处右键新建Java class,命名为com.bjpowernode.controller.MyController。

package com.bjpowernode.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/*
 * @Controller:创建处理器对象,对象放在springmvc容器中
 *
 * 能处理请求的都是控制器(处理器):MyController能处理请求,
 *                               叫做后端控制器(back controller)
 * */
@Controller
public class MyController {
    /*
     * 处理用户提交的请求,springmvc中是使用方法来处理的。
     * 方法是自定义的,可以有多种返回值,多种参数,方法名称也可以自定义,比如下面自定义方法名为dosome()
     * */

    /*
     * 准备使用doSome方法处理some.do请求。
     * @RequestMapping:请求映射,作用是把一个请求地址和一个方法绑定在一起。
     *                  一个请求指定一个方法处理。
     *             属性:1. value是一个String类型,表示请求的uri地址(这里是:some.do)
     *                     value值是唯一的,不能重复
     *             说明:使用@RequestMapping修饰的方法叫做处理器方法或者控制器方法
     *                   可以处理请求,类似servlet中的doGet,doPost
     * */

    /*
     * 返回值 ModelAndView 表示本次请求的处理结果
     *   model:数据,请求处理完后,要显示给用户的数据
     *   view:视图,比如jsp等
     * */
    @RequestMapping(value="/some.do")
    public ModelAndView doSome(){
        //处理some.do请求,相当于service调用处理完成
        ModelAndView mv = new ModelAndView();
        //添加数据,框架在请求的最后把数据放入到request作用域
        //request.setAttribute("msg","欢迎使用...");
        mv.addObject("msg","欢迎使用springmvc做web开发");
        mv.addObject("fun","执行的是doSome方法");

        //指定视图,指定视图的完整路径
        //框架对视图执行的forward操作,request.getRequestDispather("/show.jsp").forward(...)
        mv.setViewName("/show.jsp");
        return mv;
    }

}

6、创建一个作为结果的jsp即show.jsp
在webapp文件夹下新建一个jsp文件,命名为show.jsp。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h3>show.jsp从request作用域获取数据</h3><br/>
    <h3>msg数据:${msg}</h3>
    <h3>fun数据:${fun}</h3>
</body>
</html>

7、springmvc配置文件
前面使用了controller注解,那么就需要在resource文件夹下的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: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
       https://www.springframework.org/schema/context/spring-context.xsd">

    <!--声明组件扫描器-->
    <context:component-scan base-package="com.bjpowernode.controller"/>

</beans>

8、发布项目
点击右上方“Add Configuration”,打开左边的“Templates”折叠板,找到"Tomcat Server",选择下面的“Local”。如果上方有黄色感叹号提醒,点击上面的“Create configuration”,命名为MyTomcat,取消“After launch”前面的勾选,并为Application server选择一个本地的Tomcat。
动力节点 SpringMVC P1-11_第10张图片
然后到“Deployment”菜单下,点击右边的+号,选择“Artif…”,找到“ch01 hello springmvc:war exploded”,点击OK。在下面的Application context把名字改短一点:
动力节点 SpringMVC P1-11_第11张图片
点击OK即可。
这时即可直接点击运行按钮发布程序了。
动力节点 SpringMVC P1-11_第12张图片
浏览器访问:http://localhost:80/ch01_hello_springmvc/(如果不知道访问路径是啥,单击上方的MyTomcat,选择“Edit Configuration”,看到上面的URL写的是啥就知道了)
动力节点 SpringMVC P1-11_第13张图片
跑起来后:
动力节点 SpringMVC P1-11_第14张图片
单击该超链接:
动力节点 SpringMVC P1-11_第15张图片

(三)总结

3.1 springmvc开发流程

动力节点 SpringMVC P1-11_第16张图片
首先,扫描web.xml文件,根据servlet-mapping中的*do请求找到对应的servlet-name是myweb,再根据myweb找到相应的servlet(因为这两个的servlet-name相同),找到中央处理器DispatcherServlet,跟着这个找到下面的自定义文件springmvc.xml。根据springmvc.xml找到@controller注解从而找到MyControl类里面定义的doSome()方法,里面通过ModelAndServlet对消息进行处理并转发到show.jsp。
动力节点 SpringMVC P1-11_第17张图片

3.2 springmvc执行过程源代码分析

动力节点 SpringMVC P1-11_第18张图片

你可能感兴趣的:(springMVC,java,intellij-idea)