快速入门SpringMVC

本文介绍了SpringMVC,一种基于MVC模式的轻量级框架,它具有IOC和AOP特性,便于上手且功能强大。讲解了web请求流程、@RequestMapping注解的使用、数据提交优化、中文乱码解决、Action方法返回值、跳转方式以及日期处理等关键概念。同时,深入探讨了SpringMVC的拦截器机制,包括其执行时机和实现方式。
摘要由CSDN通过智能技术生成

SpringMVC

1.什么是SpringMVC

​ 它是基于MVC开发模式的框架,用来优化控制器;它是Spring家族的一员,也具备AOP和IOC。

2.什么是MVC

  • 是一种开发者模式,是模型视图控制器的简称;所有的web应用都是基于MVC开发。
  • M 模型层:包含实体类、业务逻辑层、数据访问层
  • V 视图层:包含html、JavaScript、vue等都是视图层,用来呈现数据的
  • C 控制器:它是用来接收客服端的请求,并返回响应到客服端的组件,Servlet就是这个组件

3.SpringMVC的优点

  1. 轻量级,基于MVC的框架
  2. 易于上手,功能强大
  3. 他具备IOC和AOP
  4. 完全基于注解开发

4.分析web请求

  • web请求执行流程:

​ index.jsp(客服端的请求)<——————>DispatcherServlet(核心处理器)——————>SpringMVC的处理器 (一个普通方法)

  • DispatcherServlet要在web.xml文件中注册才可用

5.@RequestMapping注解

  1. ​ 该注解可加在方法上,是为此方法注册一个可以访问的名称(路径)

    @RequestMapping("/demo")//通过注解来声明访问的路径
    public String demo(){
         
        return "main";
    }
    

    ​ 在index.jsp中有访问/demo的超链接:

    <a href="${pageContext.request.contextPath}/demo.action">访问服务器</a>
    
  2. 此注解可加在类上,相当于包名(虚拟路径),用于区分不同类中相同的action名称

  3. 此注解可区分get和post请求

    @RequestMapping(value = "/req",method = RequestMethod.GET)
        public String req(){
         
            System.out.println("get req");
            return "main";
        }
        @RequestMapping(value = "/req",method = RequestMethod.POST)
        public String req1(){
         
            System.out.println("post req");
            return "main";
        }
    

6.五种数据提交的优化

  1. 散提交数据

    index.jsp中:

    <form action="${pageContext.request.contextPath}/one.action" >
        姓名:<input name="myname">
        年龄:<input name="age">
        <input type="submit" value="提交">
    </form>
    

    Action控制类中:

    @RequestMapping("/one")
    public String one(String myname,int age){
         //入参名直接与定义的<input name="myname">一致即可取数据
        System.out.println("myname="+myname+",age="+(age+100));
        return "main";
    }
    
  2. 对象封装提交数据

    在提交请求中,保证请求参数的名称与实体类中成员变量的名称一致,则可自动创建对象、自动提交数据、自动类型转换、自动封装数据到对象中。

    页面:

    <h2>对象封装数据提交</h2>
    <form action="${pageContext.request.contextPath}/two.action" >
        姓名:<input name="name">
        年龄:<input name="age">
        <input type="submit" value="提交">
    </form>
    

    Action和实体类:

    //private String name;
    //private int age;
    @RequestMapping("/two")
    public String two(Users users){
         
        System.out.println(users);
        return "main";
    }
    
  3. 动态占位符提交

    仅限于超链接或地址栏提交数据;它是一杠一值,一杠一大括号,使用@PathVariable(路径中的变量)注解来解析。

    页面:

    <h2>动态占位符提交</h2>
    <a href="${pageContext.request.contextPath}/three/张三/22.action" >动态占位符提交</a>
    

    Action:

    @RequestMapping("/three/{name}/{uage}")
    public String three(
            @PathVariable//路径中的变量
            String name,
            @PathVariable("uage") //路径名和形参名不一致时要指定
            int age){
         
        System.out.println("name="+name+",age="+(age+100));
        return "main";
    }
    
    <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值