码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringMVC基础篇(一)


    文章目录

      • 1.基本介绍
          • 1.特点
          • 2.SpringMVC跟SpringBoot的关系
      • 2.快速入门
          • 1.需求分析
          • 2.图解
          • 3.环境搭建
            • 1.创建普通java工程
            • 2.添加web框架支持
            • 3.配置lib文件夹
              • 1.导入jar包
              • 2.Add as Library
              • 3.以后自动添加
            • 4.配置tomcat
              • 1.配置上下文路径
              • 2.配置热加载
            • 5.src下创建Spring配置文件applicationContext-mvc.xml
            • 6.配置中央控制器web.xml读取Spring配置文件
          • 4.具体实现
            • 文件目录
            • 1.编写首页面login.jsp
            • 2.编写控制器UserServlet.java
            • 3.编写视图解析器要跳转的页面login_ok.jsp
            • 4.配置视图解析器和容器扫描applicationContext-mvc.xml
            • 5.配置login.jsp的action
          • 5.结果展示
            • 1.login.jsp
            • 2.点击登录
          • 6.注意事项和细节说明
            • 1.控制器UserServlet指定url的时候可以省略value
            • 2.关于web.xml文件中配置读取Spring的配置文件
      • 3.SpringMVC执行流程
      • 4.RequestMapping注解使用方式(不要背!)
          • 1.@RequestMapping可修饰方法和类
            • 文件目录
            • 1.编写控制器UserHandler.java
            • 2.编写success.jsp
            • 3.编写request.jsp
            • 4.结果展示
              • 1.首页
              • 2.点击提交
            • 5.注意事项
              • 1.如果指定了post请求,使用其他请求方式则会报错
              • 2.如果没有指定请求方式则get或post都可以
          • 2.@RequestMapping可指定params支持简单表达式
            • 文件目录
            • 1.基本介绍
            • 2.请求必须包含某个参数
              • 1.UserHandler.java添加方法
              • 2.编写request.jsp
              • 3.结果展示
            • 3.请求必须包含参数并且指定参数值
              • 1.修改UserHandler.java
              • 2.结果展示
            • 4.需要有参数并且值不等于什么
              • 1.修改UserHandler.java
              • 2.结果展示
          • 3.@RequestMapping支持Ant风格资源地址
            • 1.基本介绍
            • 2.匹配多层路径
              • 1.修改UserHandler.java
              • 2.结果展示
          • 4.@RequestMapping可配合@PathVariable映射URL绑定的占位符
            • 1.基本介绍
            • 2.通过路径变量获取参数
              • 1.修改UserHandler.java
              • 2.结果展示
          • 5.@RequestMapping注意事项和细节
            • 1.映射的URL不能重复
              • 1.修改UserHandler.java
              • 2.结果展示
            • 2.请求方式简写
              • 1.基本介绍
              • image-20240224145148794
              • 2.修改UserHandler.java
              • 3.结果展示
            • 3.提交数据简写
              • 1.基本介绍
              • 2.修改UserHandler.java
              • 3.结果展示
      • 5.课后练习
          • 1.题目
          • 2.第一题
          • 3.第三题
            • 1.修改UserHandler.java
            • 2.homework01.jsp
            • 3.结果展示

    1.基本介绍

    1.特点

    image-20240223192448774

    2.SpringMVC跟SpringBoot的关系

    image-20240223192736386

    2.快速入门

    1.需求分析

    image-20240223192930065

    2.图解

    image-20240223193451223

    3.环境搭建
    1.创建普通java工程

    image-20240223194100727

    2.添加web框架支持

    image-20240223194147591

    3.配置lib文件夹
    1.导入jar包

    image-20240223194449878

    2.Add as Library

    image-20240223195934690

    3.以后自动添加

    image-20240223200030178

    4.配置tomcat
    1.配置上下文路径

    image-20240224103832982

    2.配置热加载

    image-20240224103924512

    5.src下创建Spring配置文件applicationContext-mvc.xml

    image-20240223200341022

    image-20240223200417284

    6.配置中央控制器web.xml读取Spring配置文件
    • 服务器启动则自动装载这个servlet,实例化servlet,调用init方法,读取spring配置文件
    
    <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">
        
        
        <servlet>
            <servlet-name>springDispatcherServletservlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
            
            <init-param>
                <param-name>contextConfigLocationparam-name>
                
                <param-value>classpath:applicationContext-mvc.xmlparam-value>
            init-param>
            
            <load-on-startup>1load-on-startup>
        servlet>
        <servlet-mapping>
            <servlet-name>springDispatcherServletservlet-name>
            
            <url-pattern>/url-pattern>
        servlet-mapping>
    web-app>
    
    • 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
    4.具体实现
    文件目录

    image-20240224105354224

    1.编写首页面login.jsp
    <%--
      Date: 2024/2/23
      Time: 20:44
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    
    username: password:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    2.编写控制器UserServlet.java
    package com.sun.web;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    /**
     * @author 孙显圣
     * @version 1.0
     */
    //表示这是一个控制器
    @Controller
    public class UserServlet {
        //这个方法的网址是上下文路径 + login
        @RequestMapping(value = "/login")
        public String login() {
            System.out.println("login ok...");
            //视图解析器配置的前缀是/WEB-INF/pages/ 后缀是.jsp所以这个资源的路径就是/WEB-INF/pages/login_ok.jsp
            return "login_ok"; //返回的这个值会交给视图解析器,指定要跳转的页面
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    3.编写视图解析器要跳转的页面login_ok.jsp
    <%--
      Date: 2024/2/23
      Time: 20:54
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    

    ok!

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    4.配置视图解析器和容器扫描applicationContext-mvc.xml
    
    <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.sun.web"/>
    
        
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
            
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        bean>
    
    beans>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    5.配置login.jsp的action

    image-20240224104147538

    5.结果展示
    1.login.jsp

    image-20240224105434692

    2.点击登录

    image-20240224105458408

    image-20240224105448068

    6.注意事项和细节说明
    1.控制器UserServlet指定url的时候可以省略value

    image-20240224110906407

    2.关于web.xml文件中配置读取Spring的配置文件

    image-20240224111017861

    image-20240224111135354

    image-20240224111147986

    3.SpringMVC执行流程

    image-20240224121542328

    4.RequestMapping注解使用方式(不要背!)

    1.@RequestMapping可修饰方法和类
    文件目录

    image-20240224130136558

    1.编写控制器UserHandler.java
    package com.sun.web;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    /**
     * @author 孙显圣
     * @version 1.0
     */
    @Controller
    @RequestMapping(value = "/user")
    public class UserHandler {
        /**
         * 1.requestMethod支持四个常用选项,get,post,delete,put
         * 2.如果不写method参数则默认支持get和post
         * 3.目前这个buy方法的访问路径是上下文路径 + user/buy
         */
        @RequestMapping(value = "/buy", method = RequestMethod.POST)
        public String buy() {
            System.out.println("buy方法被调用");
            return "success";
        }
    
    }
    
    
    • 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
    2.编写success.jsp
    <%--
      Date: 2024/2/24
      Time: 12:40
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h1>success</h1>
    </body>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    3.编写request.jsp
    <%--
      Date: 2024/2/24
      Time: 12:43
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <form action="user/buy" method="post">
        <input type="submit" value="提交">
    </form>
    </body>
    </html>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    4.结果展示
    1.首页

    image-20240224133830110

    2.点击提交

    image-20240224133855776

    image-20240224133848615

    5.注意事项
    1.如果指定了post请求,使用其他请求方式则会报错

    image-20240224134246207

    image-20240224134310894

    2.如果没有指定请求方式则get或post都可以
    2.@RequestMapping可指定params支持简单表达式
    文件目录

    image-20240224140401963

    1.基本介绍

    image-20240224135027610

    2.请求必须包含某个参数
    1.UserHandler.java添加方法
        /**
         * 会将参数bookid自动填充到方法中
         * @param bookid
         * @return
         */
        @RequestMapping(value = "/find", method = RequestMethod.POST, params = "bookid")
        public String search(String bookid) {
            System.out.println("bookid=" + bookid);
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.编写request.jsp
    <%--
      Date: 2024/2/24
      Time: 12:43
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    
    输入bookid:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    3.结果展示

    image-20240224140620866

    image-20240224140632295

    image-20240224140638300

    3.请求必须包含参数并且指定参数值
    1.修改UserHandler.java

    image-20240224141101245

    2.结果展示

    image-20240224141201463

    4.需要有参数并且值不等于什么
    1.修改UserHandler.java

    image-20240224141327544

    2.结果展示

    image-20240224141544349

    3.@RequestMapping支持Ant风格资源地址
    1.基本介绍

    image-20240224141721097

    2.匹配多层路径
    1.修改UserHandler.java
        /**
         * 要求可以匹配 /user/message/aa, /user/message/aa/bb/cc
         * @return
         */
        @RequestMapping(value = "/message/aa/**")
        public String im() {
            System.out.println("匹配成功");
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    2.结果展示

    image-20240224142418810

    image-20240224142439596

    4.@RequestMapping可配合@PathVariable映射URL绑定的占位符
    1.基本介绍

    image-20240224142811521

    2.通过路径变量获取参数
    1.修改UserHandler.java
        /**
         * 可以编写路径变量,直接在路径中接受变量,结合@PathVariable来进行参数传递
         *
         * @return
         */
        @RequestMapping(value = "/reg/{username}/{password}")
        public String register(@PathVariable("username") String name, @PathVariable("password") String password) {
            System.out.println("username = " + name + " password = " + password);
            return "success"; //请求转发
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2.结果展示

    image-20240224143702209

    image-20240224143711263

    5.@RequestMapping注意事项和细节
    1.映射的URL不能重复
    1.修改UserHandler.java
        /**
         * 两个重复的url
         */
        @RequestMapping("/l1")
        public String h1() {
            return "success";
        }
        @RequestMapping("/l1")
        public String h2() {
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    2.结果展示

    image-20240224145020830

    2.请求方式简写
    1.基本介绍
    image-20240224145148794
    2.修改UserHandler.java
        /**
         * 这样表示的就是get类型的请求,请求地址为“/buy1”
         */
        @GetMapping("/buy1")
        public String buy_() {
            return "success";
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    3.结果展示

    image-20240224145559819

    3.提交数据简写
    1.基本介绍

    image-20240224145849259

    2.修改UserHandler.java
        //提交的信息如果包含这个参数则会自动填充,否则会传入一个空值
        @GetMapping("/hello")
        public String hello(String email) {
            System.out.println(email);
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    3.结果展示

    image-20240224150305065

    image-20240224150311409

    image-20240224150325939

    image-20240224150331787

    5.课后练习

    1.题目

    image-20240224151703113

    2.第一题

    image-20240224151653390

    3.第三题
    1.修改UserHandler.java
        //课后练习
        @PostMapping("/computer")
        public String computer(String brand, String price, String num) {
            System.out.println("brand=" + brand + " price=" + price + " num=" + num);
            return "success";
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    2.homework01.jsp
    <%--
      Date: 2024/2/24
      Time: 15:21
      User: 孙显圣
      Version:1.0
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        Title
    
    
    
    品牌:
    价格:
    数量:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    3.结果展示

    image-20240224153140501

    image-20240224153147054

  • 相关阅读:
    自动化测试报告
    Vulkan API的性能及兼容性
    unordered_set && unordered_map 的封装
    Linux-初学者系列_docker
    LVS,Nginx,Haproxy三种负载均衡产品的对比
    2021年研究生数学建模D题:抗胰腺癌候选药物的优化建模
    阿里云ACP考试内容是什么?考试时间是什么时候?
    生活中的光伏
    Spring-MVC
    Spring
  • 原文地址:https://blog.csdn.net/m0_64637029/article/details/138171750
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号