国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何在Spring Boot中使用Spring MVC

這篇具有很好參考價(jià)值的文章主要介紹了如何在Spring Boot中使用Spring MVC。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1.MVC

2.Spring MVC

3.Spring Boot中使用Spring MVC

3.1.配置

3.1.1.文件配置

3.1.2.代碼配置

3.2.使用

3.2.1.映射處理器

3.2.2.傳參

3.2.3.參數(shù)轉(zhuǎn)換

3.2.4.數(shù)據(jù)校驗(yàn)

3.2.5.數(shù)據(jù)模型

3.2.6.視圖和解析器

3.2.7.攔截器


1.MVC

MVC 是一種常見的軟件設(shè)計(jì)模式,用于分離應(yīng)用程序的不同部分以實(shí)現(xiàn)松散耦合和高內(nèi)聚性。MVC 模式由三個(gè)核心組件組成:

  • 模型(Model):表示應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯。模型處理應(yīng)用程序的數(shù)據(jù),并根據(jù)控制器的指令執(zhí)行相應(yīng)的操作。

  • 視圖(View):提供模型數(shù)據(jù)的用戶界面。視圖通常是模板、HTML 頁面、XML 文件或其他格式,可以呈現(xiàn)模型數(shù)據(jù)給用戶。

  • 控制器(Controller):處理用戶交互并更新模型和視圖??刂破髫?fù)責(zé)接收來自視圖的用戶輸入,對(duì)模型進(jìn)行相應(yīng)的操作,并更新視圖以反映更改。

MVC 模式的優(yōu)點(diǎn)是可以將代碼分離成三個(gè)獨(dú)立的組件,使得應(yīng)用程序更易于維護(hù)和擴(kuò)展。例如,如果要更改視圖的外觀,可以修改視圖而不影響模型和控制器;如果要更改數(shù)據(jù)存儲(chǔ)方式,可以修改模型而不影響視圖和控制器。同時(shí),MVC 模式還有助于降低應(yīng)用程序中的耦合度,使得各組件更加獨(dú)立和可重用。

2.Spring MVC

在Spring體系下的MVC架構(gòu)中一次請(qǐng)求處理的流程如下:

請(qǐng)求到控制器(controller),經(jīng)過業(yè)務(wù)模型(model)處理后返回響應(yīng)給識(shí)圖層。

如何在Spring Boot中使用Spring MVC

整個(gè)流程里面Spring MVC干了些啥:

整個(gè)Spring MVC的核心是DispatcherServlet,圍繞DispatcherServlet SpringMVC提供了一套組件配合DispatcherServlet完成整個(gè)工作流程。

DispatcherServlet 首先收到請(qǐng)求,將請(qǐng)求映射到對(duì)應(yīng)的處理器(controller)上,映射到controller的時(shí)候會(huì)觸發(fā)攔截器;處理器處理完后封裝數(shù)據(jù)模型,交給視圖解析器將數(shù)據(jù)模型解析為對(duì)應(yīng)的視圖返回給前端。

如何在Spring Boot中使用Spring MVC

當(dāng)然有時(shí)候以上流程不會(huì)全部走完,比如使用@RestController或者@ResponseBody的時(shí)候由于直接返回響應(yīng)了,不會(huì)轉(zhuǎn)跳識(shí)圖,所以不會(huì)走視圖解析器。

3.Spring Boot中使用Spring MVC

3.1.配置

因?yàn)镾pring Boot自動(dòng)裝配機(jī)制的存在,一般來說我們不需要對(duì)Spring MVC進(jìn)行配置,如果要進(jìn)行特別定制化的配置,Spring Boot也支持配置文件或者編寫代碼的兩種方式來進(jìn)行配置。

3.1.1.文件配置

# 啟用Spring MVC
spring.mvc.enabled=true

# 配置靜態(tài)資源路徑
spring.mvc.static-path-pattern=/static/**
spring.resources.static-locations=classpath:/static/

# 配置視圖解析器
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

# 配置HTTP緩存
spring.resources.cache.period=3600

# 配置文件上傳
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

# 配置JSON序列化
spring.jackson.serialization.indent_output=true
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss

# 配置異常處理
server.error.whitelabel.enabled=false

# 配置攔截器
spring.mvc.interceptor.exclude-path-patterns=/login,/logout
spring.mvc.interceptor.include-path-patterns=/admin/**

# 配置會(huì)話管理
server.session.timeout=1800
server.session.cookie.max-age=1800

3.1.2.代碼配置

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {

    // 配置視圖解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        registry.viewResolver(resolver);
    }

    // 配置靜態(tài)資源
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("/static/");
    }

    // 配置攔截器
    @Autowired
    private MyInterceptor myInterceptor;
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(myInterceptor).addPathPatterns("/**");
    }

    // 配置消息轉(zhuǎn)換器
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
        supportedMediaTypes.add(MediaType.APPLICATION_JSON);
        converter.setSupportedMediaTypes(supportedMediaTypes);
        converters.add(converter);
    }

    // 配置異常處理器
    @ControllerAdvice
    public class GlobalExceptionHandler {
        @ExceptionHandler(value = Exception.class)
        public ModelAndView handleException(HttpServletRequest req, Exception e) {
            ModelAndView mav = new ModelAndView();
            mav.addObject("exception", e);
            mav.addObject("url", req.getRequestURL());
            mav.setViewName("error");
            return mav;
        }
    }

    // 配置跨域資源共享(CORS)
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**").allowedOrigins("http://localhost:8080");
    }

    // 配置文件上傳
    @Bean
    public MultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setMaxUploadSize(10485760);
        resolver.setMaxInMemorySize(4096);
        return resolver;
    }

    // 配置請(qǐng)求緩存
    @Bean
    public KeyGenerator keyGenerator() {
        return new DefaultKeyGenerator();
    }

    @Bean
    public RequestCache requestCache() {
        return new HttpSessionRequestCache();
    }

    // 配置視圖控制器
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("index");
        registry.addViewController("/login").setViewName("login");
    }
}

3.2.使用

3.2.1.映射處理器

這里只介紹@RequestMapping,@GETMapping和@PostMapping類似。

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {
	
    String name() default "";
    
    @AliasFor("path")
    String[] value() default {};
	
    @AliasFor("value")
    String[] path() default {};

    RequestMethod[] method() default {};

    String[] params() default {};

    String[] headers() default {};

    String[] consumes() default {};

    String[] produces() default {};
}

各參數(shù)的作用如下:

  1. value和path:用于指定請(qǐng)求的URL路徑,可以使用占位符和正則表達(dá)式。

  2. method:指定HTTP請(qǐng)求方法,可以是GET、POST、PUT、DELETE等。

  3. params:指定請(qǐng)求參數(shù)的條件,支持表達(dá)式、多個(gè)參數(shù)和邏輯運(yùn)算。

  4. headers:指定請(qǐng)求頭的條件,支持表達(dá)式、多個(gè)頭和邏輯運(yùn)算。

  5. consumes:指定請(qǐng)求的MIME類型,用于限制請(qǐng)求內(nèi)容類型。

  6. produces:指定響應(yīng)的MIME類型,用于限制響應(yīng)內(nèi)容類型。

  7. name:指定請(qǐng)求參數(shù)的名稱,用于自動(dòng)綁定參數(shù)值。

  8. defaultValue:指定請(qǐng)求參數(shù)的默認(rèn)值。

  9. pathVariable:用于綁定URL路徑中的占位符。

  10. required:指定請(qǐng)求參數(shù)是否為必須的。

  11. value、method、params、headers、consumes和produces屬性都支持?jǐn)?shù)組形式,可以匹配多個(gè)條件。

3.2.2.傳參

1.按參數(shù)名匹配

@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping("/info")
    public String getUserInfo(Integer userId, Model model) {
        // 根據(jù)用戶ID查詢用戶信息并返回
        User user = userService.getUserById(userId);
        model.addAttribute("user", user);
        return "user_info";
    }
}

URL:

ip:port/info?userId=1

2.@RequestParam

通過@RequestParam注解可以指定匹配的參數(shù).

@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping(value = "/search", method = RequestMethod.GET, params = "keyword")
    public String searchUser(@RequestParam("keyword") String keyword, Model model) {
        // 根據(jù)關(guān)鍵詞查詢用戶信息并返回
        List<User> userList = userService.searchUser(keyword);
        model.addAttribute("userList", userList);
        return "user_list";
    }
}

3.傳數(shù)組

@RequestMapping("/delete")
public String deleteUsers(int[] userIds, Model model) {
    // 根據(jù)用戶ID數(shù)組刪除多個(gè)用戶,并返回用戶列表頁面
    userService.deleteUsers(userIds);
    List<User> userList = userService.getUserList();
    model.addAttribute("userList", userList);
    return "user_list";
}

4.傳JSON

傳JSON只能用POST方法,使用@ResponseBody注解參數(shù)列表中的參數(shù),就可以用來接收J(rèn)SON,如果被注解的參數(shù)是個(gè)對(duì)象那么會(huì)將JSON自動(dòng)轉(zhuǎn)化為改對(duì)象。

@RequestMapping(value = "/save", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> saveUser(@RequestBody User user) {
    // 保存用戶信息,并返回成功的響應(yīng)
    userService.saveUser(user);
    return Collections.singletonMap("success", true);
}

注意傳參的時(shí)候要將設(shè)置好contentType: "application/json"

我們什么時(shí)候會(huì)傳Json過來喃:form表單?。?!所以接收表單數(shù)據(jù)是就要用上這個(gè)注解。所以這個(gè)注解很常用。

5.Restful

@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping("/info/{id}")
    public String getUserInfo(@PathVariable("id") Integer userId, Model model) {
        // 根據(jù)用戶ID查詢用戶信息并返回
        User user = userService.getUserById(userId);
        model.addAttribute("user", user);
        return "user_info";
    }
}

前端URL為:

ip:port/info/1

3.2.3.參數(shù)轉(zhuǎn)換

當(dāng)后端接口的參數(shù)列表是對(duì)象類型時(shí),Spring MVC會(huì)自動(dòng)按照參數(shù)名完成參數(shù)的轉(zhuǎn)換和填充,當(dāng)然這種轉(zhuǎn)化規(guī)則也可以由我們自己定義,Spring MVC為我們準(zhǔn)備了轉(zhuǎn)換接口,以下是一個(gè)完整示例:

實(shí)體對(duì)象:

public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    // 省略 getter 和 setter 方法
}

參數(shù)轉(zhuǎn)換器:

public class UserConverter implements Converter<String, User> {

    @Override
    public User convert(String source) {
        // 將請(qǐng)求參數(shù)解析為User對(duì)象
        String[] values = source.split(",");
        User user = new User();
        user.setId(Long.parseLong(values[0]));
        user.setName(values[1]);
        user.setAge(Integer.parseInt(values[2]));
        user.setEmail(values[3]);
        return user;
    }
}

注冊(cè)參數(shù)轉(zhuǎn)換器:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new UserConverter());
    }
}

以后再傳對(duì)應(yīng)類型的參數(shù)時(shí),會(huì)用我們自定義的轉(zhuǎn)換規(guī)則來進(jìn)行轉(zhuǎn)換:

@RequestMapping(value = "/save", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> saveUser(User user) {
    // 保存用戶信息,并返回成功的響應(yīng)
    userService.saveUser(user);
    return Collections.singletonMap("success", true);
}

3.2.4.數(shù)據(jù)校驗(yàn)

有時(shí)候我們希望前端傳過來的參數(shù)是滿足一定格式的,Spring MVC也考慮到了這一點(diǎn),為我們提供了基于注解的參數(shù)校驗(yàn)功能。

public class User {
    @NotNull(message = "id不能為空")
    private Long id;

    @NotBlank(message = "name不能為空")
    private String name;

    @Min(value = 0, message = "age不能小于0")
    @Max(value = 150, message = "age不能大于150")
    private Integer age;

    @Email(message = "email格式不正確")
    private String email;

    // 省略 getter 和 setter 方法
}

只是使用了注解,校驗(yàn)并不會(huì)生效,還需要在想要進(jìn)行校驗(yàn)的地方配上@Validated開啟校驗(yàn):

@RestController
@RequestMapping("/user")
public class UserController {

    @PostMapping("/save")
    public Map<String, Object> saveUser(@Validated @RequestBody User user, BindingResult bindingResult) {
        if (bindingResult.hasErrors()) {
            // 參數(shù)校驗(yàn)失敗,返回錯(cuò)誤信息
            List<ObjectError> errors = bindingResult.getAllErrors();
            List<String> errorMessages = new ArrayList<>();
            for (ObjectError error : errors) {
                errorMessages.add(error.getDefaultMessage());
            }
            return Collections.singletonMap("success", false, "errors", errorMessages);
        }

        // 保存用戶信息,并返回成功的響應(yīng)
        userService.saveUser(user);
        return Collections.singletonMap("success", true);
    }
}

3.2.5.數(shù)據(jù)模型

Spring MVC 中的數(shù)據(jù)模型用于在處理器方法(Controller)和視圖之間傳遞數(shù),有三種:

  • Model

  • ModelMap

  • ModelAndView

Model:

只能承載參數(shù)

@GetMapping("/hello")
public String hello(Model model) {
    model.addAttribute("message", "Hello, world!");
    return "hello";
}

ModelMap:

和Model功能相似。

@GetMapping("/hello")
public String hello(ModelMap model) {
    model.put("message", "Hello, world!");
    return "hello";
}

ModelAndView:

既能承載參數(shù)也能承載視圖名。

@GetMapping("/hello")
public ModelAndView hello() {
    ModelAndView mav = new ModelAndView("hello");
    mav.addObject("message", "Hello, world!");
    return mav;
}

3.2.6.視圖和解析器

1.視圖

Spring MVC的視圖可以理解為最終返給前端的東西,分為兩類:

  • 邏輯視圖

  • 非邏輯視圖

邏輯視圖:

邏輯視圖是指一個(gè)字符串,它代表了一個(gè)視圖的邏輯名稱,與實(shí)際的視圖實(shí)現(xiàn)解耦合,而是通過視圖解析器將其映射為實(shí)際的視圖。在 Spring MVC 中,處理器方法可以返回邏輯視圖名,由 DispatcherServlet 根據(jù)視圖解析器的配置,將其映射為實(shí)際的視圖。

常用的邏輯視圖包括:

  • JSP 視圖:使用 InternalResourceViewResolver 視圖解析器,將邏輯視圖名映射為 JSP 文件名。

  • Velocity 視圖:使用 VelocityViewResolver 視圖解析器,將邏輯視圖名映射為 Velocity 模板文件名。

  • Thymeleaf 視圖:使用 ThymeleafViewResolver 視圖解析器,將邏輯視圖名映射為 Thymeleaf 模板文件名。

非邏輯視圖:

非邏輯視圖是指一個(gè)具體的視圖實(shí)現(xiàn),通常是一個(gè)視圖類或者一個(gè) RESTful Web Service。在處理器方法中,可以直接返回一個(gè)非邏輯視圖,它會(huì)被直接渲染,而不需要通過視圖解析器進(jìn)行轉(zhuǎn)換。

常用的非邏輯視圖包括:

  • JSON 視圖:使用 MappingJackson2JsonView 視圖實(shí)現(xiàn),將模型數(shù)據(jù)轉(zhuǎn)換為 JSON 格式返回給客戶端。

  • XML 視圖:使用 MappingJackson2XmlView 視圖實(shí)現(xiàn),將模型數(shù)據(jù)轉(zhuǎn)換為 XML 格式返回給客戶端。

  • PDF 視圖:使用 iText PDF 庫和 AbstractPdfView 視圖實(shí)現(xiàn),將模型數(shù)據(jù)轉(zhuǎn)換為 PDF 格式返回給客戶端。

需要注意的是,非邏輯視圖通常需要進(jìn)行額外的配置和處理,比如 JSON 視圖需要添加 Jackson 依賴庫,并在 Spring 配置文件中配置 MappingJackson2JsonView 視圖解析器。

2.視圖解析器

視圖解析器決定@Controller的return具體映射到什么類型的視圖上,默認(rèn)是使用InternalResourceViewResolver視圖解析器,也就是JSP視圖解析器,當(dāng)我們配置好前綴、后綴后,它會(huì)自動(dòng)將@Controller的return映射到對(duì)應(yīng)的jsp上去。

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

當(dāng)然在Spring Boot中也支持我們切換視圖解析器,以下是切換為JSON視圖解析器的示例,切換為JSON視圖解析器后return會(huì)直接返回JSON給前端:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    // 重寫configureViewResolvers方法,配置視圖解析器
    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        // 使用視圖解析器注冊(cè)表啟用內(nèi)容協(xié)商,并指定MappingJackson2JsonView作為視圖實(shí)現(xiàn)類
        registry.enableContentNegotiation(new MappingJackson2JsonView());
    }
}

3.2.7.攔截器

Spring Boot中使用自定義Spring MVC攔截器鏈的代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-414500.html

@Configuration
public class WebConfig implements WebMvcConfigurer {
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new FirstInterceptor());
        registry.addInterceptor(new SecondInterceptor());
    }
}

public class FirstInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // 在處理器處理請(qǐng)求之前執(zhí)行
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // 在處理器處理請(qǐng)求之后,渲染視圖之前執(zhí)行
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) throws Exception {
        // 在渲染視圖之后執(zhí)行
    }
}

public class SecondInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        // 在處理器處理請(qǐng)求之前執(zhí)行
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // 在處理器處理請(qǐng)求之后,渲染視圖之前執(zhí)行
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
            Exception ex) throws Exception {
        // 在渲染視圖之后執(zhí)行
    }
}

到了這里,關(guān)于如何在Spring Boot中使用Spring MVC的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 簡(jiǎn)單談下Spring、Spring MVC和Spring Boot

    Spring是一個(gè)開源的輕量級(jí)框架,用于構(gòu)建Java應(yīng)用程序。它提供了一種全面的編程和配置模型,可以幫助開發(fā)人員構(gòu)建各種類型的應(yīng)用程序,從簡(jiǎn)單的控制臺(tái)應(yīng)用程序到大型企業(yè)級(jí)應(yīng)用程序。Spring框架的主要目標(biāo)是提高應(yīng)用程序的可維護(hù)性、可擴(kuò)展性和測(cè)試性。 以下是Spring框

    2024年02月10日
    瀏覽(102)
  • Spring Boot、Spring MVC 和 Spring Cloud 深度解析

    Spring Boot、Spring MVC 和 Spring Cloud是三個(gè)在Java企業(yè)級(jí)開發(fā)中非常重要的框架。他們各自具有不同的功能,但是也可以一起使用來創(chuàng)建強(qiáng)大且可擴(kuò)展的應(yīng)用程序。 Spring Boot是為了簡(jiǎn)化Spring應(yīng)用開發(fā)而創(chuàng)建的。它使用了一種\\\"約定優(yōu)于配置\\\"的方法,使得開發(fā)者可以更加專注于編寫業(yè)

    2024年02月07日
    瀏覽(37)
  • SpringBoot整理-Spring Boot與Spring MVC的區(qū)別

    Spring?Boot?和?Spring?MVC?是?Spring?框架的兩個(gè)不同部分,它們?cè)?Java?Web?開發(fā)中扮演著各自獨(dú)特的角色。理解它們之間的區(qū)別有助于更好地利用?Spring?生態(tài)系統(tǒng)進(jìn)行有效的應(yīng)用開發(fā)。 Spring?MVC 定義:? Spring?MVC?是基于?Model-View-Controller(模型-視圖-控制器)設(shè)計(jì)模式的一個(gè)?

    2024年01月22日
    瀏覽(29)
  • 一次搞清Spring 、Spring Boot、Spring Web MVC、Spring WebFlux

    一次搞清Spring 、Spring Boot、Spring Web MVC、Spring WebFlux

    介紹Spring生態(tài)系統(tǒng),辨析Spring、Spring Boot、Spring Web MVC和Spring WebFlux。 微信搜索關(guān)注《Java學(xué)研大本營(yíng)》 在軟件開發(fā)中,應(yīng)用框架為代碼庫提供基礎(chǔ)設(shè)施支持,使編程更容易。Spring是Java領(lǐng)域最受歡迎的開源應(yīng)用框架。Spring由多個(gè)模塊和附加組件組成,術(shù)語“Spring”通常用來指代

    2024年02月19日
    瀏覽(25)
  • 11 spring-boot的MVC配置原理

    11 spring-boot的MVC配置原理

    ? ? ? ? 1.ContentNegotiatingViewResolver視圖解析器; ? ? ? ? 2.靜態(tài)資源或者支持WebJars; ? ? ? ? 3.自動(dòng)注冊(cè)類型轉(zhuǎn)換器:比如說前臺(tái)提交user的字段,后臺(tái)自動(dòng)封裝的意思; ? ? ? ? 4.HttpMessageConverters:轉(zhuǎn)換http的請(qǐng)求和相應(yīng),比如把一個(gè)user字符串轉(zhuǎn)為一個(gè)json字符串; ? ? ? ?

    2024年02月15日
    瀏覽(20)
  • spring boot入門與理解MVC三層架構(gòu)

    spring boot入門與理解MVC三層架構(gòu)

    分層是為了實(shí)現(xiàn)“高內(nèi)聚,低耦合”,把問題劃分開來,各個(gè)解決,易于控制,延展和分配資源,最重要有利于后期維護(hù)項(xiàng)目; MVC指的是model,view,controller; 在SpringMVC編程中一般分為四層: 1.表示層:(jsp、html 主要就是界面的展示),負(fù)責(zé)前后端交互,接收前端發(fā)送的請(qǐng)求,

    2024年02月05日
    瀏覽(97)
  • Java 新手如何使用Spring MVC 中的查詢字符串和查詢參數(shù)

    Java 新手如何使用Spring MVC 中的查詢字符串和查詢參數(shù)

    目錄 前言? ?什么是查詢字符串和查詢參數(shù)? Spring MVC中的查詢參數(shù)? 處理可選參數(shù) 處理多個(gè)值 處理查詢參數(shù)的默認(rèn)值 處理查詢字符串 示例:創(chuàng)建一個(gè)RESTful服務(wù)? 總結(jié) 作者簡(jiǎn)介: ?懶大王敲代碼,計(jì)算機(jī)專業(yè)應(yīng)屆生 今天給大家聊聊Java 新手如何使用Spring MVC 中的查詢字符串

    2024年02月03日
    瀏覽(27)
  • 38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    ▲ 默認(rèn)的四個(gè)靜態(tài)資源目錄: /META-INF/resources /resources /static /public ▲ ResourceProperties.java類的源代碼,可看到CLASSPATH_RESOURCE_LOCATIONS常量的定義: CLASSPATH_RESOURCE_LOCATIONS = new String[]{“classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/”}; 這意味

    2024年02月11日
    瀏覽(24)
  • 網(wǎng)頁版Java(Spring/Spring Boot/Spring MVC)五子棋項(xiàng)目(四)對(duì)戰(zhàn)模塊

    網(wǎng)頁版Java(Spring/Spring Boot/Spring MVC)五子棋項(xiàng)目(四)對(duì)戰(zhàn)模塊

    匹配成功返回?cái)?shù)據(jù) 1. message消息類別 2. ok 3. reson 4. 房間id 5. 雙方id 6.白色玩家 一個(gè)類記錄房間中的信息(房間id,兩個(gè)用戶id,是否為白棋) 信息提示框 處理匹配API 初始化游戲(棋盤,下一個(gè)棋子,接受棋子處理響應(yīng),判斷是否結(jié)束) 1. 客戶端連接到游戲房間后, 服務(wù)器返回

    2024年02月13日
    瀏覽(20)
  • Spring Boot項(xiàng)目 目錄結(jié)構(gòu)

    根目錄: com.zhangziwa.practisesvr 啟動(dòng)類: com.zhangziwa.practisesvr.PractisesvrApplication 實(shí)體類: com.zhangziwa.practisesvr.model 數(shù)據(jù)傳輸對(duì)象(dto): com.zhangziwa.practisesvr.dto 視圖包裝對(duì)象(vo)推薦: com.zhangziwa.practisesvr.vo 數(shù)據(jù)接口訪問層(Dao): com.zhangziwa.practisesvr.mapper 數(shù)據(jù)服務(wù)接口層(S

    2024年01月25日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包