SpringMVC--第一篇

一.概述


Spring MVC 是一种基于 Java 的框架,用于创建 Web 应用程序。它是 Spring 框架的一部分,遵循 MVC(Model-View-Controller,模型-视图-控制器)设计模式。Spring MVC 的主要功能包括:

  • 控制器(Controller):处理用户请求并返回响应。控制器通常会调用业务逻辑层,然后选择合适的视图来展示数据。
  • 模型(Model):表示应用程序的数据和业务逻辑。它包含了处理数据和执行业务规则的类。
  • 视图(view):负责显示数据给用户。视图可以是 JSP 页面、HTML 文件、或者其他任何形式的网页模板。
  • 前端控制器(DispatcherServlet):Spring MVC使用前端控制器来接收所有的请求,然后将这些请求分发给具体的控制器进行处理。
  • 视图解析器(ViewResolver):负责将逻辑视图名称解析为实际的视图文件(如 JSP 文件)。

Spring MVC 的主要优点包括:

1.松耦合:通过将请求处理逻辑、业务逻辑和视图分离,提高了应用程序的可维护性。

2.灵活性:支持多种视图技术,如 JSP、Thymeleaf 等。

3.集成:可以与 Spring 框架的其他组件(如 Spring Security、Spring Data)无缝集成,提供全面的解决方案。

二.原理与流程

1.常用注解

2.简单的页面访问测试

!!!在这之前要配置Tomcat。!!!

(1)首先在resources下创建配置文件spring-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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="buka" />
</beans>

这里的base-package是要扫描的包

(2)配置DispatcherServlet:

在WEB-INF下的web.xml中添加以下代码:

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>DispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:spring-mvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>


</web-app>

注意上面的classpath*后面接的是刚刚创建的配置文件

(3)在包下创建MyController并书写测试代码:

注意要用@Controller注解将该类注入并用@RequestMapping将地址映射保存进Map中

(4)启动服务器并访问"/hello"

这表明返回index.jsp页面成功,我们的项目没有问题。

3.@RequestMapping详解

(1)@RequestMapping 可以映射单个路径  也可以映射多个路径:

多路径的写法:@RequestMapping(value={"/hello","/test"})

(2)可以通过method指定请求类型,也可以用对应派生注解:

  • 处理Get请求的映射: @GetMapping === @RequestMapping(method = RequestMethod.GET)
  • 处理Post请求的映射: @PostMapping === @RequestMapping(method = RequestMethod.POST)
  • 处理Put请求:  @PutMapping === @RequestMapping(method = RequestMethod.PUT)
  • 处理Delete请求: @DeleteMapping ===  @RequestMapping(method = RequestMethod.DELETE)

(3)可以通过 params 限定在发送请求的时候需要携带参数:

  • params ={"name"} 发送请求时 必须携带name参数
  • params={"!name"} 发送请求时 不能写携带name参数
  • params={"name=zhangsan"} 发送请求时 必须携带name参数 而且参数值必须是zhangsan
  • params={"name!=zhangsan"} 发送请求时 可以不携带name参数了 如果携带 参数的值不能为zhangsan

(4)通过headers进行请求头信息匹配
             headers = {"User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"}
               只能通过谷歌浏览器发送请求了 其他浏览器不好使

(5)部分演示:

创建test.jsp:

<%--
  Created by IntelliJ IDEA.
  User: Lenovo
  Date: 2024/7/19
  Time: 10:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form action="/hello" method="post">
    用户名:<input type="text" name="name">
    <input type="submit" value="submit">
</form>

</body>
</html>

修改MyController中的hello方法:

启动服务器并访问test.jsp页面:

点击提交观察页面跳转和控制台:

(6)占位符的使用:

    @RequestMapping(value = "/test/{id}" )
    public String test(@PathVariable(value = "id",required = false)String id){
        System.out.println("id=="+id);
        System.out.println("test执行了");
        return "/test.jsp";
    }

注意@PathVariable后面的value要与上面路径中的{}中的名字一致

以上是SpringMVC的简单介绍

关于@RequestMapping接下来还有获取请求参数中的值和设置参数值,放到以后的文章中吧

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值