【Spring MVC】(一)体系结构及开发环境搭建2

简介: 【Spring MVC】(一)体系结构及开发环境搭建2

Spring MVC的体系结构


DispatcherServlet(前端控制器)

Spring MVC最核心的类

web.xml中配置


Handler(处理器):对应MVC中C(Controller层)

     类型:Object

作用:实际处理请求

标注了@RequestMapping的所有方法都可以看作是一个Handler


ModelAndView

逻辑视图名

模型对象


核心组件


HandlerMapping(处理器映射)

BeanNameUrlHandlerMapping(默认)

将请求URL映射到同名的控制器Bean上

DefaultAnnotationHandlerMapping

将请求映射到标注@RequestMapping注解的控制器和处理方法上

RequestMappingHandlerMapping

HandlerAdapter(适配器)

AnnotationMethodHandlerAdapter

RequestMappingHandlerAdapter

ViewResolver(视图解析器)

InternalResourceView


20191108084358697.png

HelloSpringMVC


1、引入JAR包


在“WEB-INF”目录下,建立“lib”目录,导入 Spring MVC 框架的相关依赖包,同时,在“External Libraries”中也导入相同的 jar 包,其中对于“lib”目录,我们直接把 jar 包复制过来就可以;但是对于“External Libraries”,我们就得通过“Project Structure”进行导入啦。至于需要导入的 jar 包,在我们先前下载的“Spring MVC框架的各种依赖包”中都可以找到,下面附上需要导入的 jar 名称:

spring-aop-3.2.2.jar                        AOP
spring-aspects-3.2.2.jar                    AOP
spring-beans-3.2.2.jar                      核心包
spring-context-3.2.2.jar                    扩展包
spring-context-support-3.2.2.jar            对扩展包支持
spring-core-3.2.2.jar                       核心包
spring-expression-3.2.2.jar spring          表达式
spring-web-3.2.2.jar                        web b/s
spring-webmvc-3.2.2.jar                     springmvc
com.springsource.org.aopalliance-1.0.0.jar                  AOP
com.springsource.org.apache.commons.logging-1.1.1.jar       通用日志


2、配置web.xml


servlet

DispatcherServlet(替代所有的servlet) -->主要就是配置 DispatcherServlet,即核心分发器

init-param: classpath:springmvc-servlet.xml

对应的mapping 指定的url-pattern–> / 【不要用/*,会404】

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--关联SpringMVC配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <!--这个东西要和服务器一起启动;
    load-on-startup,启动级别,数字越小级别越高!-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!--所有请求都会经过这个DispatcherServlet请求分发器-->
  <!--
  /和/*的区别:
  < url-pattern > / </ url-pattern > 不会匹配到.jsp, 只针对我们编写的请求;
    即:.jsp不会进入spring的 DispatcherServlet类 。
  < url-pattern > /* </ url-pattern > 会匹配*.jsp,
    会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。
  -->
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!--欢迎页面-->
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


3、编写SpringMVC的配置文件


1.让IOC的注解生效

2.静态资源过滤 :HTML,JS,CSS,图片 , 视频 …

3.MVC的注解驱动

4.配置视图解析器

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       https://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--扫描指定包下的注解,让指定的类能够被IOC容器管理-->
    <context:component-scan base-package="controller"/>
    <!--静态资源过滤-->
    <mvc:default-servlet-handler/>
    <!--annotation-driven:支持MVC注解驱动 -->
    <mvc:annotation-driven/>
    <!--
    视图解析器
    作用;方便统一管理
    -->
    <bean id="InternalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>


4.编写Controller类


需要给类加注解 :@Controller , 可以让IOC容器管理 , 等价于Bean


请求映射的路径 :@RequestMapping (“路径”),如果类上有就先写类的,在写方法的


Model :模型传递参数


return “hello”:它会去视图解析中拼接前缀和后缀来找到对应的视图


@Controller
@RequestMapping("/HelloController")
public class HelloWorldController {
    //请求映射("路径")
    @RequestMapping("/hello")
    public String hi(Model model){
        model.addAttribute("msg","Hello,SpringMVC");
        System.out.println("进入HELLO");
        return "hello";  // WEB-INF/jsp/hello.jsp
    }
}


5.视图层


注意视图的位置,要和视图解析器对应 web-inf / jsp , 为什么需要在web-inf路径下 , 因为这个路径下的东西用户无法直接访问,更加安全


可以通过EL表达式取出Model中存放的值,或者对象

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>SpringMVC</title>
</head>
<body>
   ${msg}
</body>
</html>


6.测试


配置Tomcat , 设置项目名 , 开启服务器 , 访问对应的请求路径


20191108084358697.png


流程总结


1.建立web项目


2.导包


3.编写web.xml


4.编写springmvc的配置文件 【servletname】-servlet.xml


5.编写控制类


6.编写视图层


7.测试

目录
相关文章
|
1月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
8月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
482 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
8月前
|
Java Maven Android开发
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
本文介绍了Spring Boot开发环境的搭建和项目启动流程。主要内容包括:jdk的配置(IDEA、STS/eclipse设置方法)、Spring Boot工程的构建方式(IDEA快速构建、官方构建工具start.spring.io使用)、maven配置(本地maven路径与阿里云镜像设置)以及编码配置(IDEA和eclipse中的编码设置)。通过这些步骤,帮助开发者顺利完成Spring Boot项目的初始化和运行准备。
722 0
微服务——SpringBoot使用归纳——Spring Boot开发环境搭建和项目启动
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
726 0
|
8月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
474 0
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = &quot;/test&quot;, produces = &quot;application/json; charset=UTF-8&quot;)`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
418 0
|
8月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
340 0
|
4月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
330 0
|
4月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
155 0
|
4月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
265 0
下一篇
oss云网关配置