SpringMVC:创建一个简单的SpringMVC框架

目录

一、框架介绍

两个重要的xml文件 

SpringMVC执行流程 

二、Vscode搭建SpringMVC框架

1、maven创建webapp原型项目

2、pom.xml下添加springmvc的相关依赖

3、在web.xml配置

 4、springmvc.xml的配置

5、编写Controller控制器类

6、 编写JSP界面

7、项目结构图 


一、框架介绍

两个重要的xml文件 

        web.xml文件是Java Web应用程序的部署描述文件,用于配置Web应用程序的部署信息和配置参数。

<?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" version="3.0">
  <display-name>spring_mvc</display-name>
    <!-- springMVC的前端控制器,此处为名称显示在Web服务器管理页面的 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
      <!-- 如果以xxx-servlet.xml命名,并且位于/WEB-INF下,则服务器会自动识别,
不需要配置 init-param-->
       
      <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
      </init-param>
      <!--init-param配置是告诉服务器DispatcherServlet的配置文件在哪,
      此处是告诉服务器文件在src/classes下去找该配置文件 -->
    <load-on-startup>1</load-on-startup><!-- 立即加载 -->
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <!-- 此处为url匹配器,这里/表示处理所有请求,可以设置一些固定格式,
  来过滤非法请求。 -->
</web-app>

         springmvc.xml文件,该文件是springmvc的配置文件。该文件的名称可以自定,文件位置甚至可以放在任意位置,但这样做就要在web.xml配置相关文件信息和文件位置。

        具体配置方法:要配置init-param元素,param-value值就要修改为相对于web.xml所在的路径。上面web.xml的param-value值,说明DispatcherServlet的配置文件位于/项目名/src/resources目录下,此目录一般放java代码,打包后会该配置文件会存在于\项目名\WEB-INF\classes的目录下。

        如果不想配置init-param元素,则要将springmvc的配置文件命名为xxx-servlet.xml,并且文件位于WEB-INF文件夹下。

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
  http://www.springframework.org/schema/context     
  http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
  <!-- 配置controller -->
  <bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean>
  <!-- 配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) -->
  <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	
  <!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图  根据控制器返回的字符串拼接成jsp路径:/WEB-INF/page/xx.jsp -->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/page/"/><!-- 前缀 -->
	<property name="suffix" value=".jsp"/><!-- 后缀 -->
  </bean>
</beans>

SpringMVC执行流程 

 01、用户发送url请求到前端控制器DispatcherServlet拦截进行处理。

        以下是具体的DispatcherServlet前端拦截器配置,DispatcherServlet的配置文件可以放在项目的任意目录

在web.xml文件下配置:

<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        该语句配置了Spring MVC框架中的DispatcherServlet。

        其中org.springframework.web.servlet.DispatcherServlet是DispatcherServlet的类路径。

02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器) 

        HandlerMapping的实现一共有多种。以下BeanNameUrlHandlerMapping是Spring MVC 框架中最简单的通过name映射寻找controller的 HandlerMapping 实现。

在springmvc.xml文件里配置:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) -->

HandlerMapping的实现方式还有

        SimpleUrlHandlerMappingControllerClassNameHandlerMapping

03、HandlerMapping找到具体的处理器Handler(查找XML配置或注解配置),返回执行链。

         XML配置:在springmvc.xml文件里进行相关Controller类的配置

<bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean>

         注释配置:在Controller类中使用@Controller@RequestMapping等注解来指定请求路径与处理方法的映射关系。Spring框架会扫描这些注解,并根据它们建立映射关系,从而将请求路由到相应的Controller处理方法上。

@Controller
@RequestMapping("/example")
public class ExampleController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "helloPage";
    }
}

04、HandlerAdapter(处理器适配器)经过适配调用具体的处理器(Handler/Controller)

        HandlerAdapter适配器会找到合适的方法调用处理器Handler(因为Handler的定义方式不止一种)

05、Controller执行完成返回ModelAndView对象。

06、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

07、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器) 

        ViewReslover具体要在springmvc的配置文件里进行如下语句的具体配置,设置前缀和后缀。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/page/"/><!-- 前缀 -->
            <property name="suffix" value=".jsp"/><!-- 后缀 -->
</bean>
08、ViewReslover解析ModelAndView后返回具体View(视图)给DispatcherServlet。
09、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中),再响应给用户。

二、Vscode搭建SpringMVC框架

1、maven创建webapp原型项目

参考:http://t.csdnimg.cn/fg98g

resources的lib文件夹放相关jar包

java文件夹下放相关java代码 

2、pom.xml下添加springmvc的相关依赖

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.30</version>
 </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.30</version>
    </dependency>

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>

只有添加完相关依赖(相当于引入相关jar包)后,才能配置springmvc。 

3、在web.xml配置

一、配置拦截器DispatcherServlet

<servlet-name>myspringmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

二、配置springmvc配置文件的地址 

<init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/springmvc.xml</param-value>
 </init-param>

 三、配置servlet映射 

​<servlet-mapping>
  	<servlet-name>myspringmvc</servlet-name>
  	<url-pattern>/</url-pattern>
 </servlet-mapping>

 四、配置欢迎界面

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

最终配置代码:

<?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" version="3.0">
  <display-name>spring_mvc</display-name>
    <!-- springMVC的前端控制器 -->
   <servlet>
  	<servlet-name>myspringmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--init-param配置文件的位置 如果springmvc.xml是以xxx-servlet.xml命名,并且位于/WEB-INF下则不需要配置 -->
    <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  	<load-on-startup>1</load-on-startup><!-- 立即加载 -->
  </servlet>
  <servlet-mapping>
  	<servlet-name>myspringmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 4、springmvc.xml的配置

        我们在web.xml文件下配置了springmvc.xml的路径。该文件位于以下文件夹(resources)下。也可以自定目录,根目录从web项目起。

        在配置springmvc之前,我们要生成其xml文件,eclipse可以通过可视化自动生成,而在vscode中我们可以手动创建并导入版本约束命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context     
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
</beans>

        然后我们就能在beans标签里配置具体内容。 

一、配置映射处理器

常见的映射处理器有:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping、ControllerClassNameHandlerMapping等。

​<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

二、配置视图解析器 :

                用于将控制器返回的字符串拼接成可访问的url路径(前提是真实存在)。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"/>
		<property name="suffix" value=".jsp"/>
</bean>

三、配置包扫描器:用于组件的自动发现和自动装配。

<context:component-scan base-package="com.edu"/>
<mvc:annotation-driven/>
<!--启用对处理mvc注解的支持-->

最终配置代码:  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/mvc/spring-mvc-4.0.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
    http://www.springframework.org/schema/context     
    http://www.springframework.org/schema/context/spring-context-3.0.xsd">
	
   	<!-- 配置controller
	<bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean> -->
	<!-- 1、配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) -->
    
    <context:component-scan base-package="com.edu"/>
    
    <mvc:annotation-driven/>
	<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/page/"/>
		<property name="suffix" value=".html"/>
	</bean>
</beans>

5、编写Controller控制器类

        在java文件下创建包,并编写控制器类Controller,此类继承了抽象类AbstractController,覆写其方法。

package com.edu;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

@Controller
public class Calculate extends AbstractController {
    @RequestMapping("/calculate")
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {
        ModelAndView mav=new ModelAndView();
        String x="";
        for(int i=1;i<=5;i++){
            String t=req.getParameter(Integer.toString(i));
            x+=t;
        }

        Integer result= count(x);
        System.out.println(result);
        mav.setViewName("result");
        mav.addObject("result", result);
        return mav;
    }

    protected Integer count(String x){
        String ture_result="ACCBD";
        Integer cnt=0;
        for(int i=0;i<x.length();i++){
            if(ture_result.charAt(i)==x.charAt(i)){
                cnt++;
            }
        }
        return cnt*20;
    }
    

 

    
}

6、 编写JSP界面

JSP的页面文件放在webapp的文件夹下 。

 result.jsp

使用el表达式提取ModelAndView传递的值。

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
	<h1 color="red">您本次的测试成绩为:${result}分</h1>
   
</body>
</html>

index.jsp

用表单属性action发送数据到/examination/calculate上。

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>C语言考试</title>
</head>

<body>
<form action="/examination/calculate" method="post">

<p>1、以下哪个是C语言整形数据类型</p>
<p>
  <input name="1" type="radio" value="A" />A、int 
  <input name="1" type="radio" value="B" />B、char
  <input name="1" type="radio" value="C" />C、float
  <input name="1" type="radio" value="D" />D、double
</p>
<p>2、以下哪个是C语言浮点型数据类型</p>
<p>
  <input name="2" type="radio" value="A" />A、int
  <input name="2" type="radio" value="B" />B、char
  <input name="2" type="radio" value="C" />C、float
  <input name="2" type="radio" value="D" />D、double 
</p>
<p>3、以下哪个是C语言中格式正确的标识符</p>
<p>
  <input name="3" type="radio" value="A" />A、int
<input name="3" type="radio" value="B" />B、1ch
<input name="3" type="radio" value="C" />C、word
<input name="3" type="radio" value="D" />D、()!@#¥ 
</p>
<p>4、以下哪个是C语言的文件后缀</p>
<p>
  <input name="4" type="radio" value="A" />A、.c
  <input name="4" type="radio" value="B" />B、.cpp
  <input name="4" type="radio" value="C" />C、.java
  <input name="4" type="radio" value="D" />D、.py
</p>
<p>5、以下哪个是C语言中的一维数组</p>
<p>
  <input name="5" type="radio" value="A" />A、int a;
  <input name="5" type="radio" value="B" />B、chara;
  <input name="5" type="radio" value="C" />C、float a [] [] ;
  <input name="5" type="radio" value="D" />D、double a [] ;
</p>
  <input type="submit"/>
</form>
</body>
</html>

7、项目结构图 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

12.RedHat认证-Linux文件系统(下)

12.RedHat认证-Linux文件系统(下) swap虚拟内存 我加一个硬盘做实验sdc # 创建交换分区&#xff08;不用做成逻辑卷也能灵活分区&#xff09; [rootcentos8 ~]# fdisk /dev/sdc -l Disk /dev/sdc&#xff1a;10 GiB&#xff0c;10737418240 字节&#xff0c;20971520 个扇区 …

【监控】prometheus自定义指标 exporter

一、【写在前面】 prometheus自定义指标本质是用代码自己写一个网络访问的采集器&#xff0c;你可以在官网看到&#xff0c;Client libraries | Prometheus官方支持的语言有GO JAVA PYTHON RUBY RUST, 第三方的库就支持的更多了&#xff0c;有BASH C CPP LUA C# JS PHP R PER…

ADuM1201可使用π121U31间接替换π122U31直接替换

ADuM1201可使用π121U31间接替换π122U31直接替换 一般低速隔离通信150Kbps电路可使用π121U31&#xff0c;价格优势较大。速度快的有其它型号可达10M,200M,600M。 本文主要介绍ADUM1201,替换芯片π121U31简单资料请访问下行链接 只要0.74元的双通道数字隔离器&#xff0c;1T1…

智和信通助力中国移动湖南某市分公司县级政府外网运维项目

中国移动湖南某市分公司承建市下属某县政务外网网络建设项目&#xff0c;且在网络建设完工后&#xff0c;承担起运维职责&#xff0c;随着工作的推进市移动公司发现仅靠人力难以高效开展运维工作。 设备类型&#xff1a;OLT、ONU等通信设备 设备品牌&#xff1a;华为、中兴等…

记一次安卓.apk加固,加固后安装失败,重新签名也安装失败问题

1、AndroidStudio打包生成.apk文件 2、使用360加固apk&#xff08;或其他平台&#xff09; 注意&#xff1a;加固后的apk必须进行重新签名才能安装&#xff0c;否则安装失败。apk签名可以使用jarsigner 和 apksigner&#xff0c;jarsigner 只能进行v1签名&#xff1b;apksigner…

【PostgreSQL17新特性之-冗余IS [NOT] NULL限定符的处理优化】

在执行一个带有IS NOT NULL或者NOT NULL的SQL的时候&#xff0c;通常会对表的每一行&#xff0c;都会进行检查以确保列为空/不为空&#xff0c;这是符合常理的。 但是如果本身这个列上有非空&#xff08;NOT NULL&#xff09;约束&#xff0c;再次检查就会浪费资源。甚至有时候…

Git使用规范及命令

文章目录 一、Git工作流二、分支管理三、Git命令操作规范1. 切到develop分支&#xff0c;更新develop最新代码2. 新建feature分支&#xff0c;开发新功能3. 完成feature分支&#xff0c;合并到develop分支4. 当某个版本所有的 feature 分支均合并到 develop 分支&#xff0c;就…

CSS--学习

CSS 1简介 1.1定义 层叠样式表 (Cascading Style Sheets&#xff0c;缩写为 CSS&#xff09;&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现&#xff08;美化内容&#xff09;。 1.2 特性 继承性 子级默认继承父级的文字控制属性。层叠性 相同的属性…

不借助三方平台自主搭建量化回测系统 ——以海龟交易策略为例

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学&#xff0c;点击下方链接报名&#xff1a; 量化投资速成营&#xff08;入门课程&#xff09; Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

Vue 2.0使用Vue-count-to给数字添加增长动画

在开发后台管理系统时&#xff0c;时常会遇到数据汇总&#xff0c;为了页面展示更生动&#xff0c;用户体验更好&#xff0c;通常会对汇总的数字加一个逐步递增动画。 实现这个效果一般是用的 Vue-count-to这个插件&#xff0c;这是一款简单好用的一个数字滚动插件&#xff0c;…

前端传String字符串 后端使用enun枚举类出现错误

情况 前端 String 后端 enum 前端 后端 报错 2024-05-31T21:47:40.61808:00 WARN 21360 --- [nio-8080-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to con…

OSPF状态机+SPF算法

OSPF状态机 1.点到点网络类型 down-->init-->(前提为可以建立邻接)exstart——>exchange-->若查看邻接的DBD 目录后发现不用进行LSA 直接进入ful。若查看后需要进行查询、应答先进入loading&#xff0c;在查询应答完后再进入 fuIl: 2.MA网络类型 down --&g…

Linux下配置Pytorch

1.Anaconda 1.1虚拟环境创建 2.Nvidia驱动 3.CUDA驱动安装 4.Pytorch安装 具体的步骤如上&#xff1a;可参考另一位博主的博客非常详细&#xff1a; Linux服务器配置PythonPyTorchCUDA深度学习环境_linux cuda环境配置-CSDN博客https://blog.csdn.net/NSJim/article/detai…

民国漫画杂志《时代漫画》第35期.PDF

时代漫画35.PDF: https://url03.ctfile.com/f/1779803-1248636125-ee3a2b?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

微信小程序-页面导航-导航传参

1.声明式导航传参 navigator组件的url属性用来指定将要跳转到的页面的路径&#xff0c;同时&#xff0c;路径的后面还可以携带参数&#xff1a; &#xff08;1&#xff09;参数与路径之间使用 ? 分割 &#xff08;2&#xff09;参数键与参数值用 相连 &#xff08;3&…

LeetCode503:下一个更大元素Ⅱ

题目描述 给定一个循环数组 nums &#xff08; nums[nums.length - 1] 的下一个元素是 nums[0] &#xff09;&#xff0c;返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序&#xff0c;这个数字之后的第一个比它更大的数&#xff0c;这…

CSwin-PNet 新的医学图像分割网络

很长时间没有看到一些比较传统的医学图像分割网络了&#xff0c;2022年&#xff0c;来自哈尔滨工业大学的研究团队在Expert Systems With Applications. 期刊上发表了题为《CSwin-PNet: A CNN-Swin Transformer combined pyramid network for breast lesion segmentation in ul…

Web前端三大主流框:React、Vue 和 Angular

在当今快速发展的 Web 开发领域&#xff0c;选择合适的前端框架对于项目的成功至关重要。React、Vue 和 Angular 作为三大主流前端框架&#xff0c;凭借其强大的功能和灵活的特性&#xff0c;赢得了众多开发者的青睐。本文将对这三大框架进行解析&#xff0c;帮助开发者了解它们…

二叉树的前序遍历(oj题)

一、题目链接&#xff1a; https://leetcode-cn.com/problems/binary-tree-preorder-traversal/ 二、题目思路 先调用二叉树节点计算函数&#xff0c;得到二叉树的总结点数。然后申请该大小的数组空间。 再使用前序遍历&#xff0c;依次访问每个结点的数据&#xff0c;依次存…

Linux —— MySQL操作(1)

一、用户与权限管理 1.1 创建与赋予权限 create user peter% identified by 123465 # 创建用户 peter&#xff0c;# %&#xff1a;允许所有用户登录这个用户访问数据库 刚创建的新用户是什么权限都没有&#xff0c;需要赋予权限 grant select on mysql.* to peter%; # 赋予…