71muke?v=1
在线看书
立即购买

第一章 spring MVC介绍

收起
2024-02-12更新,每天更一篇

第二章 参数接收

收起
2024-02-12更新,每天更一篇

第三章 结果输出

收起
2024-02-12更新,每天更一篇

第四章 RESTful接口规范的使用

收起
2024-02-12更新,每天更一篇

第五章 拦截器的使用

收起
2024-02-12更新,每天更一篇

第六章 案例整合实战

收起
2024-02-12更新,每天更一篇
71muke 71muke

URL映射的使用

在Spring MVC中,URL映射是通过控制器(Controller)来处理的,通常使用@RequestMapping@GetMapping@PostMapping等注解来指定控制器方法应该响应哪些URL。以下是URL映射的详细使用步骤:

1. 创建控制器类

控制器类用于处理用户请求,并返回视图或数据。创建一个控制器类,并使用@Controller注解来标识它是一个Spring MVC控制器。

package com.example.controller;

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

@Controller
public class HomeController {

    @RequestMapping("/")
    public ModelAndView home() {
        ModelAndView mav = new ModelAndView("home");
        mav.addObject("message", "Welcome to Spring MVC!");
        return mav;
    }
}

2. 使用 @RequestMapping 注解进行URL映射

@RequestMapping注解可以应用于类级别和方法级别,用于定义请求URL的映射。

2.1 类级别的@RequestMapping

在类级别应用@RequestMapping时,所有的方法URL都将以类级别定义的URL作为前缀。

@Controller
@RequestMapping("/app")
public class AppController {

    @RequestMapping("/home")
    public ModelAndView home() {
        ModelAndView mav = new ModelAndView("home");
        mav.addObject("message", "Welcome to the App Home!");
        return mav;
    }
}

上面的例子中,访问http://localhost:8080/app/home将会触发home()方法。

2.2 方法级别的@RequestMapping

在方法级别应用@RequestMapping时,可以直接定义方法处理的URL。

@Controller
public class HomeController {

    @RequestMapping("/about")
    public ModelAndView about() {
        ModelAndView mav = new ModelAndView("about");
        mav.addObject("message", "About Page");
        return mav;
    }
}

上面的例子中,访问http://localhost:8080/about将会触发about()方法。

3. HTTP方法映射

通过@RequestMapping注解的method属性,可以指定该方法处理的HTTP请求方法(GET、POST等)。

@RequestMapping(value = "/submit", method = RequestMethod.POST)
public ModelAndView submitForm() {
    ModelAndView mav = new ModelAndView("result");
    mav.addObject("message", "Form Submitted");
    return mav;
}

或者使用更简便的注解@GetMapping@PostMapping

@GetMapping("/getForm")
public String getForm() {
    return "form";
}

@PostMapping("/submitForm")
public String submitForm() {
    return "result";
}

4. URL路径变量

你可以使用路径变量(Path Variables)来捕获URL中的动态部分,并将其传递给控制器方法。

@RequestMapping("/user/{id}")
public ModelAndView getUser(@PathVariable("id") String userId) {
    ModelAndView mav = new ModelAndView("user");
    mav.addObject("userId", userId);
    return mav;
}

在这个例子中,@PathVariable("id")将捕获URL中的{id}部分,并将其值传递给getUser方法。访问http://localhost:8080/user/123将会调用这个方法,并传递123作为userId参数。

5. URL查询参数

@RequestParam注解用于将URL中的查询参数映射到控制器方法的参数中。

@RequestMapping("/search")
public ModelAndView search(@RequestParam("q") String query) {
    ModelAndView mav = new ModelAndView("searchResult");
    mav.addObject("query", query);
    return mav;
}

访问http://localhost:8080/search?q=SpringMVC将会调用search方法,并将q参数的值传递给query变量。

6. 消息体映射

@RequestBody注解用于将请求体映射到控制器方法的参数中,通常用于处理POST请求中的数据。

@PostMapping("/submitData")
public ResponseEntity<String> submitData(@RequestBody Data data) {
    // 处理数据
    return ResponseEntity.ok("Data received");
}

7. 处理不同的内容类型

通过@RequestMapping注解的consumesproduces属性,可以指定处理的内容类型和返回的内容类型。

@RequestMapping(value = "/json", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public ResponseEntity<String> handleJson(@RequestBody Data data) {
    // 处理JSON数据
    return ResponseEntity.ok("{\"status\":\"success\"}");
}

8. 配置静态资源映射

在Spring MVC中,通常需要配置静态资源(如CSS、JavaScript、图像等)的映射:

<mvc:resources mapping="/resources/**" location="/resources/" />

这可以确保静态资源可以通过/resources/路径访问。

9. 使用Ant风格路径映射

Spring MVC支持使用Ant风格的路径映射,可以匹配多种路径模式:

  • ?:匹配任意单个字符

  • *:匹配任意数量的字符

  • **:匹配多层路径

@RequestMapping("/files/**")
public String handleFiles() {
    return "files";
}

在上面的例子中,/files/**可以匹配任意文件路径。

10. 配置默认控制器和视图

如果希望将默认的请求映射到某个控制器或视图,可以使用//**映射:

@RequestMapping("/")
public String home() {
    return "home";
}

访问根路径时,将自动映射到home()方法。

11. 全局配置URL映射

如果需要对所有控制器的URL进行统一配置,可以使用全局配置方式。例如,所有请求都以/app开头:

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

12. 配置RESTful API的URL映射

对于RESTful API,可以使用类似的方式配置不同的HTTP方法映射,定义RESTful风格的URL:

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/users/{id}")
    public User getUser(@PathVariable("id") String userId) {
        // 获取用户
        return new User(userId, "John Doe");
    }

    @PostMapping("/users")
    public ResponseEntity<String> createUser(@RequestBody User user) {
        // 创建用户
        return ResponseEntity.ok("User created");
    }

    @PutMapping("/users/{id}")
    public ResponseEntity<String> updateUser(@PathVariable("id") String userId, @RequestBody User user) {
        // 更新用户
        return ResponseEntity.ok("User updated");
    }

    @DeleteMapping("/users/{id}")
    public ResponseEntity<String> deleteUser(@PathVariable("id") String userId) {
        // 删除用户
        return ResponseEntity.ok("User deleted");
    }
}

通过以上详细的步骤和示例,您可以灵活地配置和使用Spring MVC中的URL映射,实现对不同请求的精准处理。

留言

发布留言

需要购买本课才能留言哦~

{{ item.createtime | dateStr }}