学习笔记:JavaEE开发的颠覆者SpringBoot实战(四)spring MVC基础

spring3.1.1源码导入eclipse时缺少的依赖包 spring3.1.1源码导入eclipse时缺少的依赖包 将目录粘贴到ivy-cache/repository下 立即下载

资源信息都来自网络,本人只是记录作为个人笔记

一.概述

MVC:Model+View+Controller(数据模型+视图+控制器)

三层架构:Presentation tier+Application tier+Data tier(展示层+应用层+数据访问层)

在spring mvc里,有个专门的类叫Model,用来和V之间的数据交互,传值;V指的是试图页面,包含jsp,freeMarker,Velocity,Thymeleaf,Tile等;C当然就是控制器(Spirng MVC的注解@Controller类)

二.项目快速搭建

1.构建maven项目

pom.xml

<dependencies>
    <dependency>
        <groupId></groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provied</scope>
    </dependency>

    <!--spring mvc-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.18.RELEASE</version>
    </dependency>

    <!--other web-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
    </dependency>

    <!--spring and transactions-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.1.8.RELEASE</version>
    </dependency>

    <!--slf4j和LogBack-->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.26</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.26</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins<groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</verison>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>    
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configruation>    
        </plugin>
    </plugins>
</build>

2.日志配置

/*
Logback 配置文件的语法非常灵活。正因为灵活,所以无法用 DTD 或 XML schema 进行定义。尽管如此,可以这样描述配置文件的基本结构:以<configuration>开头,后面有零个或多个<appender>元素,有零个或多个<logger>元素,有最多一个<root>元素。
*/
<?xml version="1.0" encoding="UTF-8" ?>

/*
scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
*/
<configuration scan="true" scanPeriod="1 seconds">
    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
        <resetJUL>true</resetJUL>
    </contextListener>

    <jmxConfigurator/>

    /*
    负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名
    */
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender" >
        <encoder>
            <pattern>logbak:%d{HH:mm:ss.SSS} %logger{36} - %msg%n </pattern>
        </encoder>
    </appender>
    
    /*
    用来设置某一个包或具体的某一个类的日志打印级别、以及指定<appender>。<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个loger
    name: 用来指定受此loger约束的某一个包或者具体的某一个类。
    level: 用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。 如果未设置此属性,那么当前loger将会继承上级的级别。
       addtivity: 是否向上级loger传递打印信息。默认是true。同<loger>一样,可以包含零个或多个                              <appender-ref>元素,标识这个appender将会添加到这个loger。
    */
    <logger name="org.springframework.web" level="DEBUG" />

    /*
    它也是<loger>元素,但是它是根loger,是所有<loger>的上级。只有一个level属性,因为name已经被命名为"root",且已经是最上级了。
    */
    <root level="info">
        <appender-ref ref="console" />
    </root>

</configuration>

3.演示页面

在src/main/resources下建立views目录,并在此目录下新建index.jsp

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head></head>
<body>
    <pre>
        welcome to spring mvc world
    </pre>
</body>
</html>

4.spring mvc配置

@Configuration
@EnableWebMvc //开启一些默认配置,如ViewResolver或者MeaaageConverter等
@ComponentScan("com.shm.springdemo")
public class MyMvcCofig{
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver; 
    }
}

5.web配置

/**
WebApplicationInitializer是spring提供用来配置servlet3.0+的接口,从而实现了替代web.xml的位置。实现此接口将会自动被SpringServletContainerInitializer(用来启动Servlet3.0容器)获取到。
*/
public class WebInitializer implements WebApplicationInitializer{
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        //注册配置类,并作关联
        AnnotationConfigWebApplication ctx = new AnnotationConfigWebApplication();
        ctx.register(MyMvcConfig.class);
        ctx.setServletContext(servletContext);

        //注册Spring MVC的DispatcherServlet
        Dynamic servlet = servletContext.addServlet("dispatcher",new DispatcherServlet(ctx));
        servlet.addMapping("/");
        servlet.setLoadOnStartup(1);
    }
}

6.控制器

@Controller
public class HelloController{
    @RequestMapping("/index")
    public String hello(){
        return "index";
    }
}

三.Spring MVC的常用注解

  • @Controller  注解在类上,表明这个类是spring mvc里的controller,将其声明为spring的一个bean,DiapathcServlet会自动扫描注解了此注解的类并将web请求映射到注解了@RequestMapping的方法上。
  • @RequestMapping  是用来映射web请求,处理类和方法的。可注解在类和方法上
  • @ResponseBody  支持将返回值放在response体内,而不是返回一个页面。可注解在返回值前或者方法上。
  • @RequestBody  允许request的参数在request体内,而不是在直接连接在地址后面。注解在参数前。
  • @PathVariable 用来接收路劲参数。注解在参数前。
  • @RestController 是一个组合注解,组合了@Controller和@ResponseBody。

添加jackson及其以来获得对象和json的转换

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.5.3</verison>    
</dependency>
@Controller //1 声明此类事一个控制器
@RequestMapping("/anno")  //2 映射此类的访问路径是/anno
public class DemoAnnoController{

    @RequestMapping(produces="text/plain;charset=URF-8") //3 未标注路径,故使用类级别的路径。procuces可定制返回的response的媒体类型和字符集。
    public @ResponseBody String index(HttpServletRequest request){ //4 接受HttpServletRequest 作为参数
        return "url:"+request.getRequestURL+" can access";
    }

    @RequestMapping(value="/pathvar/{str}",produces="text/plain;charset=URF-8") //5 接受路径参数,并在方法参数前结合@PathVariable 使用。
    public @ResponseBody String demoPathVar(@PathVariable String str,HttpServletRequest request){
        return "url:"+request.getRequestURL+" can access,str:"+str;
    }

    @RequestMapping(value="/requestParam",produces="text/plain;charset=URF-8") //6 常规的request参数获取
    public @ResponseBody String passRequestParam(Long id,HttpServletRequest request){
        return "url:"+request.getRequestURL+" can access,id:"+id;
    }

    @RequestMapping(value="/obj",produces="application/json;charset=URF-8") //7 解释参数到对象
    @ResponseBody //8 也可以用在方法上
    public String passObj(DemoObj obj,HttpServletRequest request){
        return "url:"+request.getRequestURL+" can access,obj id:"+obj.getId()+"obj name:"+obj.getName();
    }

    @RequestMapping(value={"/name1","name2"},produces="text/plain;charset=URF-8") //9映射不同的路径到相同的方法
    public @ResponseBody String remove(HttpServletRequest request){
        return "url:"+request.getRequestURL+" can access";
    }


}

四.spring mvc基本配置

Spring MVC的定制配置需要我们实现接口WebMvcConfigurer,并在此类使用@EnableWebMvc注解,来开启对spring mvc的配置支持,我们实现相应的方法,来完成我们的常用配置。

1.静态资源映射

在src/main/resources下建立assets/js目录

配置:

@Configuration
@EnableWebMvc //开启一些默认配置,如ViewResolver或者MeaaageConverter等
@ComponentScan("com.shm.springdemo")
public class MyMvcCofig implements WebMvcConfigurer{ //实现WebMvcConfigurer接口,重写其方法可以springmvc进行配置
    @Bean
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/classes/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver; 
    }

    @Verride
    public void addResourceHandlers(ResourceHanlerRegistry registry){
        registry.addResourceHandler("/assets/**").addResourceLocations("calsspath:/assets/"); //addResourceLocations指的是文件存放的目录,addResourceHandler指的是对外暴露的访问路径
    }    

}

2.拦截器配置

拦截器(Interceptor)实现对每一个请求处理前后进行的相关业务处理,类似于servlet的Filter

可让普通的Bean实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来实现自定义拦截器

通过重写WebMvcConfigurer的addInterceptors方法来注册自定义的拦截器。

拦截器:

public class DemoInterceptor extends HandlerInterceptorAdapter{ //继承HandlerInterceptorAdapter来实现自定义拦截器

    @Verride
    public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception{ //重写preHandle方法,在请求发生前
        long startTime = System.currentTimeMillis();
        request.setAttribute("startTime",startTime)
    }

    @Verride
    public void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModeAndView modelAndView)  throws Exception{ //重写postHandle方法,在请求完成后执行
        long startTime = (Long)request.getAttribute("startTime");
        request.removeAttribute("startTime");
        long endTime = System.currentTimeMills();
        System.out.println("本次请求处理时间为:"+new Long(endTime-startTime)+"ms");
        request.setAttribute("handlingTime",endTime-startTime)
    }


}

配置:

@Bean //配置拦截器的bean
public DemoInterceptor demoInterceptor(){
    return new DemoInterceptor ();
}

@Overide //重写addInterceptor方法,注册拦截器
public void addInterceptors(InterceptorRegistry registry){
    registry.addInterceptor(demoInterceptor());
}

3.@ControllerAdvice 全局控制

通过@ControlerAdvice,我们可以将对于控制器的全局配置放在同一个位置,注解了@Controller的类的方法可以使用@ExceptionHandler,@InitBinder,@ModelAttribute注解到方法上,这对所有注解了@RequestMapping的控制器内的方法有效。

  • @ExceptionHandler  用于全局处理控制器里的异常。
  • @InitBinder 用来设置WebDataBinder,自动绑定前台请求参数到model中。
  • @ModelAttribute 本来的作用是绑定键值对到model里,此处是让全局的@RequestMapping都能获得在此处设置的键值对。

定制ControllerAdvice

@ControllerAdvice  //1 声明一个控制器建言,组合了@Component
public class ExceptionHandleAdvice{

    @ExceptionHandler(value=Exception.class)  //2在此定义全局处理,value属性可过滤拦截的条件
    pbulic ModelAndView exception(Exception exception,WebRequest request){
        ModelAndView modelAndView = ModelAndView("error"); //error页面
        modelAndView.addObject("""errorMessage",exception.getMessage());
        return modelAndView;
    }

    @ModelAttribute //3 注解将键值对添加到全局,所有注解了@RequestMapping的方法可获的此键值对
    public void addAttributes(Model model){
        model.addAttribute("msg","额外信息");
    }

    @InitBinder //4 注解定制WebDataBinder
    public void initBinder(WebDataBinder webDataBinder){
        webDataBinder.setDisalloweFields("id"); //5 忽略request参数中的id
    }

}

控制器

@Controller
public class AdviceController{

    @RequestMapping("/advice") 
    public String getSomething(@ModelAttribute("msg") String msg,DemoObj obj){
        throw new IllegalArgumentException("非常抱歉,参数有误:"+"来自@ModelAttribute"+msg);
    }   

}

异常页面

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head></head>
<body>
    <pre>
        ${errorMessage}
    </pre>
</body>
</html>

四.其他配置

1.快捷的ViewController

@Override
public void addViewControllers(ViewControllerRegistry registry){
    registry.addViewController("index").setViewName("/index");
}

 

2.路径匹配参数配置

路径参数如果带“.”的话,“.”后面的4值将被沪铝,入股哦让其不被忽略,配置

@Verride
pbulic void configurePathMatch(PathMatchCOnfigurer configurer){
    configurer.setUseSuffixPatternMatch(false);
}

3.更多配置

 

五.spring mvc的高级配置

1.文件上传配置

spring mvc通过配置要给MultipartResolver来上传文件。

在spring的控制器中,通过MultipartFile file来接收文件,通过MultipartFile[] files接收多个文件上传。

依赖:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</verison>    
</dependency>
<!--非必须,可简化I/O操作-->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.3</verison>    
</dependency>

页面:

<div>
    <form action="upload" enctype="multipart/form-data" method="post">
        <input type="file" name="file" /> <br/>
        <input type="submit" value="上传" />
    </form>
</div>

配置:

@Bean
public MultipartResolver multipartResolver(){
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    multipartResolver.setMaxUploadSize(1024*1024); //限制上传文件大小1M,单位B
    multipartResolver.setDefaultEncoding("utf-8"); //中文乱码处理
    return multipartResolver;
}

控制器

@Controller
public class uploadController{
    @RequestMapping(value="/upload",method=RequestMethod.POST)
    public @ResponseBody String upload(MultipartFile){
        FileUtils.writeByteArrayToFile(new File("D:/upload/"+file.getOriginalFilename()),file.getBytes());
        return "ok";
    }
}

 

 

2.自定义HttpMessageConverter

HttpMessageConverter是用来处理request和response里的数据的。spring为我们内置了大量的HttpMessageConverter,列如,MappingJackson2HttpMessageConverter,StringHttpMessageConverter。

3.服务器端推送技术

当客户端向服务端发送请求,服务端会抓住这个请求不放,等有数据更新的时候才返回给客户端,当客户端接收到消息后,再向服务端发送请求,周而复始。

六.spring mvc的测试

1.测试依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.8.RELEASE</verison>
    <scope>test</scope>   <!--test说明这些包的存活是在test周期,发布时将不包含这些jar包--> 
</dependency>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</verison>  
    <scope>test</scope>  
</dependency>

2.演示服务

@Service
public class DemoService{
    public String saySomething(){
        return "hello";
    }
}


/*********************************************************************/

@Controller
public class NormalController{
    @Autowired    
    DemoService demoService;
    
    @RequestMapping("/normal")
    public String testPage(Model model){
        model.addAttribut("msg",demoService.saySomething());
        return "page";    
    }

}

/**********************************************************************/

@RestController
public class MyTestController{
    @Autowired
    DemoService demoService;
    
    @RequestMapping(value="/testRest",produces="text/plain;charset=utf-8")
    public @ResponseBody String testRest(){
        return demoService.saySomething();
    }


}

3.在src/main/resources/vies下新建页面page.jsp

4.测试用例

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@RunWith(SpringJUnit4ClassRunner.class)
@ContestConfiguration(classes={MyMvcConfig.class}) //springmvc配置java文件
@WebAppConfiguration("src/main/resources") //声明是一个WebAppConfiguration,他的属性指定的是web资源的位置
public class TestControllerTests{
    private MockMvc mockMvc; //模拟mvc对象
    @Autowired
    private DmeoService demoService;
    @Autowired
    WebApplicationContext wac;
    @@Autowired
    MockHttpSession session;
    @Autowired
    MockHttpServletRequest request;

    @Before  //测试前,做的初始化工作
    public void setup(){
        this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();//初始化mvc对象
    }

    @Test
    public void testNormalController(){
        mockMvc.perform(get("/normal")) //模拟向“/normal”进行get请求
                .addExpect(status().isOk()) //预期控制返回状态为200
                .addExpect(view().name("page")) //预期view的名称
                .addExpect(forwardedUrl("/WEB-INF/classes/views/page.jsp")) //预取也买你转向的真正路径
                .addExpect(model().attribute("msg",demoService.saySomething())); //预取model里的值是方法返回的值“hello”
    }

    
    @Test
    public void testRestConteroller{
        mockMvc.perform(get("/normal")) //模拟向“/normal”进行get请求
                .addExpect(status().isOk()) //预期控制返回状态为200
                .addExpect(content().contentType("text/plain;charset=UTF-8")) //预期返回值的媒体类型
                .addExpect(content().string(demoService.saySomething())); //预取返回值内容为方法返回的值“hello”
    }


}

 

变邻域搜索(VNS)原理梳理和应用细节-附求解VRPTW问题C++代码 文章目录1、简介-introduction2、VNS的基本机制2.1 变邻域下降方法-Variable Neighborhood Descent2.2基本变邻域搜索方法-Basic Variable Neighborhood Search2.3 终止准则3、VNS的拓展和混杂算法3.1 VNS的拓展3.2 变邻域分解搜索-Variable Neighborhood Decomposition Search3.3 偏变邻域搜索-Skewed VNS3.4 并行变邻域搜索-Parallel VNS4、VNS和其 阅读详情

相关推荐

VSCode玩转STM32:手把手教你配置EIDE插件与OpenOCD调试(附野火DAP配置文件详解)

本文详细介绍了如何在VSCode中配置EIDE插件与OpenOCD进行STM32开发,特别针对野火DAP调试器提供了配置文件详解。从基础环境搭建到深度调试技巧,帮助开发者高效完成STM32项目开发,实现现代化嵌入式开发工作流。

weixin_26905487的博客 552

报错:Dependency ‘xxx‘ not found的原因以及解决方法

报错:`Dependency'xxx' not found`

后端小白个人学习记录 1141

R语言绘图中文显示全攻略:从乱码到完美适配

本文详细解析了R语言绘图中的中文显示问题,从乱码根源到完美适配方案。通过showtext、sysfonts和extrafont等工具包的应用,提供跨平台的中文显示解决方案,涵盖ggplot2图表、PDF/PNG输出及Shiny应用等场景,助力用户高效实现R绘图中文完美呈现。

hp777的博客 256

Dependency ‘XXX:‘ not found,三步解决

Dependency ‘XXX:‘ not found,三步解决

m0_56375025的博客 8102

Cadence Allegro 17.4学习记录开始02-原理图Capture CIS 17.4

Allegro的第一方网表与第三方网表有以下几个区别点;Ø 与Allegro实现交互式操作的是第一方网表,第三方网表时不可以实现交互式操作;Ø 第三方网表不能将器件的Value属性导入到PCB中,输出时以封装属性来代替Value属性,第一方网表是可以的;Ø 网表导入到PCB中时,第三方的网表需要指定事先指定好PCB封装库文件,并产生Device文件,才可以将网表导入到PCB中,第一方网表则可以直接导入。

qq_31444421的博客 1万+

电池保护板为什么采用NTC热敏电阻而不是PTC热敏电阻?

R25=10K,即环境温度25°时,阻值是10K),温度变化1°C,阻值相应地明显变化,温度响应很灵敏,也就能精准地反向换算出阻值对应的温度。另外,还有功率型NTC热敏电阻,其主要用在开关电源设计中,串联在市电输入上,抑制浪涌电流。电池保护板上的NTC热敏电阻(NTC一端接地,另一端接电池充电控制IC管脚),在电池温度上升时,NTC热敏电阻温度也会随之上升,从而NTC电阻值会下降,因此电池充电控制IC用ADC检测的电压值就降低,当检测到的电压值达到下限阈值时,电池充电控制IC就会停止对电池的充电或放电。

电子绿洲的博客 5624

Dependency not found解决方案(Springboot,绝对有效)

springboot 中 Maven 依赖无法拉取的解决方案

m0_54355172的博客 1万+

通义千问对接FreeSWITCH实现大模型呼叫中心

通义千问是由阿里云开发的大规模语言模型,具备优秀的自然语言处理能力,支持文本生成、问答对话、摘要提取等多种任务。它不仅拥有丰富的知识储备,还能根据上下文灵活调整回答策略,适用于各种复杂场景下的自动化交流。FreeSWITCH是一个开源的多媒体通信服务器,提供了包括VoIP通话、即时消息传递在内的多种通信服务。它的模块化设计允许开发者根据实际需求定制功能,广泛应用于企业级通信系统中。通过集成通义千问,FreeSWITCH能够实现更智能的客户服务体验。

技术永不眠 Q:53195017 1498

【Java开发】Dependency ‘XXX‘ not found

在配置 pom 文件时,遇到。

见见大魔王 1269

Vue - 详细完美解决 ElementUI MessageBox “多次“ 弹框问题,让其无论执行多少次都只弹出来一次(常见于请求拦截器多次触发弹框,导致弹出来很多个)详细示例代码,保证完美解决!

vue如何防止ElementUIMessageBox多次弹框,vueelement弹框弹出来很多次怎么办,elementvueMessageBox解决执行多次后出现多次弹框的问题,elementUI如何阻止MessageBox多次弹出来,vue+element解决多个请求同时报错,弹出多个消息框message,饿了么组件库MessageBox弹框频繁弹出解决方法,vue调用MessageBox出现多次弹框,vueelementMessageBox怎么只弹出一次,vue之axios请求

🏆 前端领域优质创作者 8194

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1195

idea导入依赖时显示:Dependency “xxxxxx“ not found (从根本上解决问题)

一、问题描述 在idea中,导入依赖时,有时会出现这种导入不进来的情况,让人非常难受。即时"reimport", 删除缓存后重启也没什么用。 二、解决办法 Step1: 去maven依赖下载地址这个网站下载需要的jar包。例如:我这里需要的是swagger的包 Step2: 如果配置了maven的路径,就随便哪里打开命令行(如果没有配置路径,就去安装maven的bin路径打开命令行)。运行代码: mvn install:install-file -DgroupId=io.springfox -Darti

qq_41915623的博客 8569

西门子博图v16安装密钥提示报错:CryptAcquireContext MS_DEF_PROV Error of containger opening...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 3297

JavaEE开发的颠覆者 Spring Boot实战

网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击“普通下载”) 购买正版 封页 内容简介 在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Ja...

CiCi岛的专栏 1514

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【JavaEE】创建SpringBoot第一个项目,Spring Web MVC⼊⻔,从概念到实战的 Web 开发进阶之旅

本文深入剖析 Spring Web MVC 这一基于 Servlet API 构建的 Web 框架。开篇阐述 Spring MVC 的定义,将其置于 MVC 架构设计模式的语境中,清晰展现其作为 MVC 思想具体实现的本质。接着详细讲解学习 Spring MVC 的重点,涵盖建立连接、处理请求与响应等关键环节。在建立连接部分,着重介绍 RequestMapping 注解的强大功能,包括路径与请求方式的映射。请求部分则深入探讨从无参到复杂对象传递的多种情况,以及后端参数重命名的技巧。开启高效开发之路。

Code哈哈笑的博客 4368

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Spring框架与J2EE框架

Spring框架与J2EE框架 J2EE框架 简介: J2EE的全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准。 J2EE的体系结构: 客户端层:负责与用户直接交互,J2EE支持多种客户端,所以客户端既可以是WEB浏览器,也可以是专用的Java客户端。 服务器端组件层:本层是为了基于WEB的应用服...

子敬的技术博客 8360

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【JavaEE】JavaEE进阶:框架的学习 - Spring的初步认识

这是JavaEE进阶的第一篇文章,主要讲解框架学习的必要性,方便性,还有初步了解Spring!

Carefree_State的博客 3081

《javaEE 开发的颠覆者,Spring boot实战》

本书简介 1 推荐使用@configuration @bean 的Java配置来替代xml。 2 习惯优于配置的原则。快速搭建项目 3 在第一部分,介绍了快速Spring4.x各个知识点:基础配置、常用配置、高级配置等。 4 在第二部分,介绍了Spring MVC 的各个知识点。 5 在第三部分,才是核心的介绍Spring boot。 Spring boot 核心 -各种配置

a314773862的博客 7697

JavaEE介绍及Springboot入门

目录哈喽!各位老铁,从本期开始我会给大家分享JavaEE的学习分享,javaEE是javaEE的扩展,使用起来更加高效便捷,让我们一起开始JavaEE的学习吧!目录1.JavaEE发展历史2.JavaEE主要学习内容3.JavaEE怎么学习4.Maven配置一、JavaEE发展历程Java EE的起源可以追溯到J2EE(Java 2 Platform, Enterprise Edition),它是Java SE(Java Standard Edition)的一个扩展,主要用于企业级应用开发。

2301_80651010的博客 1279

学习笔记:JavaEE开发的颠覆者SpringBoot实战(一)spring基础

资源信息都来自网络,本人只是记录作为个人笔记 一 spring概述 1 spring的简史 第一阶段:xml配置;第二阶段:注解配置(2.x时代,jdk5);第三阶段:java配置(3.x开始) 2 spring概述 spring框架是一个轻量级的企业级开发的一站式解决方案。所谓解决方案就是可以基于spring解决java ee开发的所有问题。spring框架主要提供了Ioc容器,...

java_shm的专栏 451

JavaEE颠覆者:spring-boot实战随书源码

在当今Java EE 开发中,Spring 框架是当之无愧的王者。而Spring Boot 是Spring 主推的基于“习惯优于配置”的原则,让你能够快速搭建应用的框架,从而使得Java EE 开发变得异常简单。 《JavaEE开发的颠覆者: Spring Boot实战》从Spring 基础、Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习。涵盖使用Spring Bo

lice1010的博客 2862

Spring Boot实战学习笔记(四)

摘要本文为学习Java EE开发的颠覆者 Spring Boot实战的学习笔记,学习了一遍,但是好记性不如烂笔头,所以文章记录下来。图书购买地址为: https://item.jd.com/11894632.html.Spring Boot实战学习笔记1Spring Boot实战学习笔记2Spring Boot实战学习笔记3Spring Boot实战学习笔记4Spring Boot实战学习笔记5S...

殘遛的博客 612

JavaEE、SSM基础框架、JavaWeb、MVC(认识)

本篇博客主要内容是了解和认识一些关于Java实际开发中用到的一些技术。如SSM基础框架、MVC架构、JavaWeb、JavaEE的介绍和认识等等......

岁岁岁平安的博客 1630

【SpringBoot】从零开始全面解析Spring MVC (一)

本篇博客给大家带来的是SpringBoot的知识点, 本篇是SpringBoot入门, 介绍Spring MVC相关知识.🐎文章专栏: JavaEE初阶🚀若有问题 评论区见❤如果你不知道分享给谁,那就分享给薯条.你们的支持是我不断创作的动力 .王子,公主请阅🚀1. 什么是Spring Web MVC?1.1 什么是MVC?1.2 什么是Spring MVC?2.1 项目准备2.2 建立连接2.2.1 @RequestMapping 注解介绍。

薯条不要番茄酱的博客 4901

【JavaEE】Spring Web MVC入门:掌握Spring的MVC框架基础

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring MVC".什么是Servlet呢?Servlet 是⼀种实现动态⻚⾯的技术。

Hsusan的博客 860

《JavaEE开发的颠覆者:Spring Boot实战》笔记

待写

philsonzhao的博客 295
上一篇: logback的使用和logback.xml详解
下一篇: 学习笔记:JavaEE开发的颠覆者SpringBoot实战(五)spring boot基础
夜未眠shm
博客等级 码龄14年 15粉丝 101原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值