08.JavaWeb-SpringMVC

news2024/12/26 11:54:30

2.SpringMVC 

         Spring框架是一个开源的轻量级框架,SpringMVC是Spring的一个子框架

2.1SpringMVC工作机制

2.1.1 DispatcherServlet前端控制器

        【不需要程序员开发】

        作用:作为接受请求,响应结果,相当于转发器,中央处理器,减少其他组件之间的耦合度

2.1.2 HandlerMapping处理器映射器

        【不需要程序员开发】

        作用:根据请求的Url查找Handler

2.1.3 Handler处理器

        【需要程序员开发】

        Handler是后端控制器,对具体的用户业务请求进行处理

2.1.4 HandlerAdapter处理器适配器

        【不需要程序员开发】

        作用:适配处理器中的各个方法

2.1.5 ViewResolver视图解析器

        【不需要程序员开发】

        根据逻辑视图名解析成物理视图名(具体的页面地址),再生成View视图对象,最后对View进行渲染,将处理结果通过页面展示给用户

2.1.6View视图

        【需要程序员开发】

        需要通过页面标签或者页面模板将模型数据通过页面展示给用户,就是设计具体页面内容

2.2 配置SpringMVC

        这里只列出较为常用的一种

2.2.1 导入依赖

<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-core</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-beans</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-context</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-aop</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-expression</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>org.springframework</groupId>
  	<artifactId>spring-webmvc</artifactId>
  	<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
  	<groupId>javax.servlet</groupId>
  	<artifactId>servlet-api</artifactId>
  	<version>2.5</version>
</dependency>

2.2.2 在web.xml中引入Spring前端控制器

<!--  配置servlet-->
  <servlet>
<!--    名字-->
    <servlet-name>spring</servlet-name>
<!--    类型-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--    DispatcherServlet前端控制器-->

<!--    初始化参数-->
    <init-param>
<!--      属性名-->
      <param-name>contextConfigLocation</param-name>
<!--      属性值-->
      <param-value>classpath:spring-mvc.xml</param-value>
<!--      classpath:类的加载路径,项目部署之后class文件所在的路径-->

    </init-param>
  </servlet>

<!--  servlet映射-->
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/</url-pattern>
<!--    /在此处表示项目根路径,意味着只要是访问项目中的任何内容,都让名字叫做abc的servlet来处理-->
  </servlet-mapping>

2.2.3 在src/main/resources下创建spring-mvc.xml并添加以下内容

<?xml version="1.0" encoding="UTF-8"?><!--文档说明当前是一个xml文档。。-->

<!--bean对象,该标签中创建项目中需要的一些重要的对象-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<!--        第三种配置方式:掌握-->
    <!--    1.处理器映射器: 通过uri找到对应的类、方法来处理请求-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    <!--    2.处理器适配器:调用处理请求的方法,并将方法需要的参数提供给方法-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <!--    7.将jackson设置到适配器中-->
        <property name="messageConverters">
            <list>
                <ref bean="jackson"/>
            </list>
        </property>
    </bean>
    <!--    3.视图解析器:解析试图(页面:jsp)-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
    <!--    4.静态资源放行-->
    <mvc:default-servlet-handler/>

    <!--    5.配置uri与controller之间的关系-->
    <context:component-scan base-package="com.woniuxy.controller"></context:component-scan>

    <!--    6.添加json数据支持-->
    <bean id="jackson"
          class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>application/json;charset=utf-8</value>
                <value>text/html;charset=utf-8</value>
                <value>text/json;charset=utf-8</value>
            </list>
        </property>
    </bean>
</beans>

2.2.4 创建一个Controller类,并实现Controller接口

package com.woniuxy.controller;

import com.woniuxy.entity.User;
import com.woniuxy.util.ResponseResult;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * 常用写法controller:需要掌握
 */

//@Controller:用来表明当前类中的方法可以用来处理请求
//<!--    5.配置uri与controller之间的关系-->
//<context:component-scan base-package="com.woniuxy.controller"></context:component-scan>
//扫描到配置,一旦扫描到类上有@Controller注解,就会自动创建当前类对象,并放到HanderMapping(处理器映射器)
//默认以类名首字母小写作为名字 bLoginController
//通过反射读取当前类中所有带@RequestMapping的方法,并创建为一个handler,@RequestMapping里面的值作为key(uri)
@Controller
public class BLoginController {
    @RequestMapping("/login")
    @ResponseBody
    //@RequestBody将json格式的字符串转换为对象
    public ResponseResult<Boolean> login(@RequestBody User user){
        System.out.println("处理登录请求");
        System.out.println(user);

        if("qianqian".equals(user.getAccount())&&("123".equals(user.getPassword()))){
            ResponseResult<Boolean> responseResult = new ResponseResult<Boolean>(200, "登陆成功", true);
            return responseResult;
        }else{
            ResponseResult<Boolean> responseResult = new ResponseResult<Boolean>(200, "登陆失败", false);
            return responseResult;
        }
    }

}

2.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630668.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『Jenkins』最新版Jenkins安装与Git集成—CentOS 7安装的详细教程

&#x1f4e3;读完这篇文章里你能收获到 图文形式安装Jenkins在Jenkins集成Git并进行的配置感谢点赞收藏&#xff0c;避免下次找不到~ 文章目录 一、准备工作1. 安装Java Development Kit (JDK 11) 二、安装Jenkins1. 下载和安装最新版的Jenkins2. 启动Jenkins服务3. 将Jenkin…

【线性代数】

求解线性方程组 右乘向量/矩阵 把左边的矩阵拆成一个个列向量&#xff0c;右边的向量表示对左边列向量组的线性组合。 [ c o l 1 c o l 2 c o l 3 ] [ 3 4 5 ] [ 3 c o l 1 4 c o l 2 5 c o l 3 ] \left[\begin{array}{c} col_{1} & col_{2} & col_{3} \end{array}\…

类的三大特性——>封装

目录 理论知识 数据抽象&#xff1a; 封装&#xff1a; 细节知识 访问控制与封装 访问控制 STL使用封装 理论知识 类的基本思想是数据抽象、和封装。 数据抽象&#xff1a; 是一种依赖接口和实现分离的一种编程技术&#xff1a; 接口&#xff1a;包括用户所能执行的操…

点燃创作灵感:Prompt 实践指南揭秘!让 ChatGPT 更智能的六种策略(上)

在和 ChatGPT 对话中&#xff0c;Prompt 提示词的选择&#xff0c;如果遵循以下六种策略&#xff0c;我们将获得更好、更符合要求的回答。 这些策略&#xff0c;后几种更适合在编程调用 ChatGPT API 时使用&#xff0c;不过也适用直接和 ChatGPT 对话&#xff0c;让它更好的理解…

【LeetCode】HOT 100(7)

题单介绍&#xff1a; 精选 100 道力扣&#xff08;LeetCode&#xff09;上最热门的题目&#xff0c;适合初识算法与数据结构的新手和想要在短时间内高效提升的人&#xff0c;熟练掌握这 100 道题&#xff0c;你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

C语言之基于链表实现排序

题目&#xff1a;通过链表实现从小到大进行排序 代码&#xff1a; #include <stdio.h> #include <stdlib.h> #define N 9//通过链表实现从小到大排序 typedef struct node {int data;struct node *next; } NODE;//fun函数实现是将头结点的单向链表节点…

chatgpt赋能python:Python怎么倒序输出中文字典?

Python怎么倒序输出中文字典&#xff1f; 作为一门高效、易上手的编程语言&#xff0c;Python在数据处理、科学计算、机器学习等领域都有广泛应用。而对于SEO工程师来说&#xff0c;Python也是一款非常实用的工具。那么今天&#xff0c;我们就来探讨一下Python怎么倒序输出中文…

Sqlite 比较,安装,使用,个人总结

文章目录 什么是sqlite&#xff0c;和别的数据库有什么差别&#xff1f;sqlite介绍什么是边缘存储&#xff1f; sqlite存储上限sqlite和别的数据库的区别 Sqlite本地安装sqlite 在C# .net webapi 软件中的使用 什么是sqlite&#xff0c;和别的数据库有什么差别&#xff1f; sq…

【JavaSE】Java(五十七):核心要点总结

文章目录 1. HashMap 的实现原理2. Set 有哪些实现类3. HashSet 的实现原理4. 如何实现数组和List之间的转换5. Java中的迭代器 1. HashMap 的实现原理 HashMap 是一种基于哈希表的数据结构&#xff0c;它的实现原理简单来说就是将键值对存储在一个数组中&#xff0c;并通过哈希…

深入理解深度学习——注意力机制(Attention Mechanism):自注意力(Self-attention)

分类目录&#xff1a;《深入理解深度学习》总目录 相关文章&#xff1a; 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;基础知识 注意力机制&#xff08;AttentionMechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson核回归 注意力机制&#…

强化服务器安全!CentOS 7如何使用fail2ban防范SSH暴力破解攻击?

前言 本文主要讲解centos7操作系统下&#xff0c;如何使用fail2ban防范SSH暴力破解。 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是沐风晓月&#xff0c;阿里云社区博客专家 &#x1f609;&#x1f609; &#x1…

如何使用Python生成跑马灯视频

在这篇博客中&#xff0c;我将向您展示如何使用Python语言生成一个简单的跑马灯视频。我们将使用OpenCV和Pillow两个库来实现这个功能。 安装依赖库 首先&#xff0c;我们需要安装opencv-python和Pillow两个库。您可以使用以下命令来安装它们&#xff1a; pip install opencv…

Navicat 设置PostgreSQL数据库的表主键ID自增

文章目录 1 新建序列1.1 手动新建1.2 SQL语句新建 2 设置主键自增 1 新建序列 1.1 手动新建 选择 其他->序列 选择一个模式&#xff08;例如public&#xff09;&#xff0c;然后选择新增序列。 设置序列参数 刷新序列列表即可看到新建的序列 注意&#xff1a; 序列的最大…

C语言实现2048小游戏

大部分同学学习C语言编程以后不知道能通过什么样的项目才可以锻炼自己的思维功力&#xff0c;2048相信大家都应该熟悉&#xff0c;不管是手机上还是网页版的相信大家都玩过,这个简单的控制台版本的游戏是我曾经在伟易达上班时一个嵌入式应用游戏部门的大佬设计的&#xff0c;适…

简单使用gateway,以及gateway所需要的依赖

先声明&#xff0c;使用gateway需要有一定的SpringCloud的基础&#xff0c;再来使用时会看的很明白&#xff0c;使用前需要先开nacos服务&#xff0c;&#xff0c;确定无误。 下面直接开始 首先我们需要两个原来通信的模块&#xff0c;这里分别是service-const与service-provid…

《导航帖》-全系列软考A计划

专栏分享 点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 文章目录 &#x1f449;关于作者&#x1f449;前提&#x1f449;链接追踪&#x1f449…

高通 Camera HAL3:项目开发技术点总结

做高通 Camera HAL3开发的一些技术点的总结、整理。 做个记录&#xff0c;方便后续查阅。 1.目录、so、配置文件 productName是项目名 out Target路径&#xff1a;\out\target\product\productName\chi-cdk&#xff1a;\vendor\qcom\proprietary\chi-cdk\ldc node&#xff1…

【Hive】安装配置及导入Hdfs数据

知识目录 一、写在前面&#x1f495;二、Hive的安装与配置✨2.1 Hive简介2.2 上传与解压2.3 拷贝MySQL驱动2.4 hive-site.xml文件2.5 启动hive 三、导入Hdfs数据到Hive✨3.1 修改Hadoop集群配置3.2 初始化3.3 创建表3.4 从Hdfs导入数据 四、总结撒花&#x1f60a; 一、写在前面…

【Leetcode】贪心 区间问题 | 用最小数量的箭引爆气球、无重叠区间、划分字母区间、合并区间

452 用最少数量的箭引爆气球 更像一个重叠区间问题&#xff0c;贪心策略&#xff1a;应该在重叠最多处射出。 按区间左端点递增序进行排序&#xff0c;左端点相同时&#xff0c;按右端点递增序排序。 现在欲射穿气球 i i i&#xff0c;当发现相邻的两个区间有重叠时&#xff…

[230604] 听力TPO66汇总·上篇| C1 L1 C2|10:20~12:00

目录​​​​​​​ Science Fiction And Sci-fi-C1 错题分析 C1-3 细节双选题 C1 精听练习 做题笔记 Financial Advice-C2 全对 C2 精听练习 Sleep-L1 错题分析 L1-4 细节题 L1-5 细节双选题 L1 精听练习 做题笔记 词汇&#xff1a;http://t.csdn.cn/Zhuws 两篇对…