• Spring学习篇(六)


    1 MVC解释

    M---model 模型,即数据,就是dao和bean
    
    V----view 视图 网页 jsp 用来展示数据的
    
    c-controller 控制器 不同的数据,展示在不同的页面上
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2 springmvc的核心架构

    1.1 图例展示

    在这里插入图片描述

    1.2 理解

    springmvc的核心说白了就是servlet,然后把之前mvc架构中的model层拆分成了业务层(Service)和数据访问层(Dao,Data Access Object)
    
    springmvc是spring的一个模块
    
    • 1
    • 2
    • 3

    3 spring mvc请求的流程图

    在这里插入图片描述

    4 springmvc实现后台数据的获取以及页面跳转

    4.1 准备工作

    4.1.1 pom.xml中导入依赖

    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>5.3.20version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    4.1.2 pom.xml中设置打包方式为web工程
    a 代码展示
    <packaging>warpackaging>
    
    • 1
    b 使用说明
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    4.1.3 在main文件夹下创建前端文件夹webapp文件夹
    a 创建出来之后的效果图

    在这里插入图片描述

    b 补充
    若没有出现蓝色小圆点,你需要检查以下两点
    1 pom.xml是否配置了打包方式为war
    2 pom.xml内容变动后是否点击了右侧刷新小图标
    
    • 1
    • 2
    • 3
    4.1.4 生成web.xml
    a file-------Project Structure

    在这里插入图片描述

    b facets---->web(mvc)----->加号---->点击1.web.xml

    在这里插入图片描述

    c 点击ok按钮

    在这里插入图片描述

    d 再次点击ok按钮

    在这里插入图片描述

    e 点击ok按钮后 此时项目的结构如下所示

    在这里插入图片描述

    f 把WEB-INF 拖动到webapp下面
    f.1 点击Refactor按钮

    在这里插入图片描述

    f.2 移动后项目结构图

    在这里插入图片描述

    4.2 创建springmvc的配置文件

    4.2.1 resources—>new---->xml Configuration------>Spring Config

    在这里插入图片描述

    4.2.2 输入名称然后回车

    在这里插入图片描述

    4.2.3 创建成功时的项目结构图

    在这里插入图片描述

    4.3 在web.xml中配置mvc核心servlet

    4.3.1 代码展示
      
            <filter>
                <filter-name>encodingfilter-name>
                <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
                
                <init-param>
                    <param-name>encodingparam-name>
                    <param-value>utf-8param-value>
                init-param>
            filter>
            <filter-mapping>
                <filter-name>encodingfilter-name>
                <url-pattern>/*url-pattern>
            filter-mapping>
            
            <servlet>
                <servlet-name>mvcservlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
                <init-param>
                    
                    <param-name>contextConfigLocationparam-name>
                    <param-value>classpath:/springMvc.xmlparam-value>
                init-param>
                
                <load-on-startup>1load-on-startup>
            servlet>
            <servlet-mapping>
                
                <servlet-name>mvcservlet-name>
                <url-pattern>/url-pattern>
            servlet-mapping>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    4.3.2 代码分析
    a servlet-name标签里面的内容任意取,只是要求Servlet标签和Servlet-mapping标签里面的值要保持一致
    b servlet-class里面可以写dispatcherServlet,然后回车后就会自动补全的
    c url-pattern里面只能是/,一定不能/*.因为想要jsp页面正常展示
    d /*和/的区别
      简单来说就是/* 会拦截所有资源(包含jsp页面)
      会拦截除了jsp页面之外的所有资源,例如:html,css,静态资源
      这时图片资源可能会出现404错误,这时就需要我们去进行放行的配置了
    f 服务器默认是第一次被调用时的初始化,但是我们想springmvc在服务器一启动的时候就初始化,
      因此就需要做如下配置
       
                contextConfigLocation
                classpath:/springmvc.xml
      
      其中param-name是固定写contextConfigLocation
      param-value里面由两部分组成
      第一部分是根据主配置文件的位置来的,因为笔者创建的主配置文件位于resource资源文件夹,隶属于src/main下面,
            就是在src文件夹下的都要加classpath:,因此第一部分写的内容就是classpath:
      第二部分是你所创建主配置文件(spring Config形式的)
    h filter的配置是用于解决post请求乱码的问题
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    4.4 创建一个index.jsp页面,并在里面写一个简单的登录界面(表单提交)

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
        
    用户名: 密码:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.5 在java文件夹下创建com/controller文件夹

    4.6 配置springMvc.xml

    4.6.0 在springMvc.xml中配置组件扫描
    <context:component-scan base-package="com.controller">context:component-scan>
    
    • 1
    4.6.1 在springMvc.xml中开启mvc注解模式
    <mvc:annotation-driven/>
    
    • 1
    4.6.2 在springMvc.xml中进行视图解析器的配置
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
        <property name="prefix" value="/">property>
        <property name="suffix" value=".jsp">property>
    bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4.7 在controller文件夹下面创建UserController类

    package com.controller;
    import org.springframework.stereotype.Controller;
    /**
     * Controller是语义化的,用于控制器组件的生成
     */
    @Controller
    public class UserController {
      
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    4.8 书写UserController类里面的具体内容

    4.8.1 在UserController里面创建login1方法
    a 代码展示
    /*形参就是name属性*/
    public String login1(String yhm, String pwd){
        System.out.println("用户名:"+yhm);
        System.out.println("密码:"+pwd);
        /*跳到什么页面 就写什么名字 不要带上拓展名*/
        /* return "jsp/b"*/
        return "index";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    b 代码分析
    b.1 里面的形参名需要与form表单里面的name属性要保证一致的
    b.2 因为暂时没有前后端分离,此时方法的返回值可以用String
    b.3 方法的返回值直接填需要跳转的jsp页面名称,不需要写扩展名,如果jsp页面在文件夹里头,那就
    
    • 1
    • 2
    • 3
    4.8.2 在UserController里面配置请求映射
    a 代码展示
    @RequestMapping(value = "/login1",method = {RequestMethod.POST,RequestMethod.GET},
            params = {"yhm","pwd"},
           )
    
    • 1
    • 2
    • 3
    b 代码分析
    b.1 value是配置访问该方法的地址,不必与方法名一致,访问的链接必须与其一致,不然就会访问错误
    b.2 method是请求方式,多个请求可以用{}装,之中用,分隔
    b.3 params是要求访问该地址必须要携带的两个参数,也是通过,进行分隔
    
    • 1
    • 2
    • 3
    4.8.3 完整的UserController类
    package com.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.CookieValue;
    import org.springframework.web.bind.annotation.RequestHeader;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    @Controller
    public class UserController {
        @RequestMapping(value = "/login2",method = {RequestMethod.POST,RequestMethod.GET},
                params = {"yhm","pwd"}
               )
        /*形参就是name属性*/
        public String login1(String yhm, String pwd){
            System.out.println("用户名:"+yhm);
            System.out.println("密码:"+pwd);
            /*跳到什么页面 就写什么名字 不要带上拓展名*/
            /* return "jsp/b"*/
            return "index";
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    4.8.4 在index.jsp界面给form表单的action属性加上配好的value值
    用户名: 密码:
    • 1
    • 2
    • 3
    • 4
    • 5

    4.9 测试

    4.9.1 点击登录按钮前

    在这里插入图片描述

    4.9.2 点击登录按钮后

    在这里插入图片描述

    4.9.3 运行截图

    在这里插入图片描述

  • 相关阅读:
    力扣 556. 下一个更大元素 III
    美容美发店会员管理系统开发_分享美容美发店做会员管理系统的好处
    厉害!我带的实习生仅用四步就整合好SpringSecurity+JWT实现登录认证!
    码住!Elsevier-最全清样/校样(Proof)处理流程
    第五章 延迟计算
    cookie 里面都包含什么属性?
    中国奢侈品产业深度调研及未来发展现状趋势预测报告
    Flink 中的时间和窗口(一)
    HTC官方RUU固件提取刷机包rom.zip以及RUU解密教程
    BUUCTF reverse wp 91 - 95
  • 原文地址:https://blog.csdn.net/SSS4362/article/details/127830688