SpringMVC学习总结

SpringMVC学习总结

一:Spring MVC简介:
Spring MVC是一个基于Java的Web框架,用于构建灵活和高效的Web应用程序。
它遵循MVC(模型-视图-控制器)架构模式,将应用程序分为模型、视图和控制器三个组件。
二:组件解析和配置:
在Spring MVC中,通过@Configuration注解和@EnableWebMvc注解来配置和启用Spring MVC。
@Configuration注解用于指示配置类,其中包含了创建Bean的方法。
@EnableWebMvc注解用于启用Spring MVC的功能,例如请求映射、数据绑定等。
三:数据响应:
Spring MVC可以使用ModelAndView对象返回视图和模型数据。
ModelAndView是一个包含视图名称和模型数据的对象,它可以在控制器方法中返回。
可以使用@ResponseBody注解将方法的返回值直接作为响应的内容发送给客户端,例如纯文本或JSON格式的数据。
示例代码:

     @Controller

     public class MyController {

     @RequestMapping("/hello")

     public ModelAndView hello() {

      ModelAndView modelAndView = new ModelAndView("hello"); modelAndView.addObject("message", "Hello, Spring MVC!");

    return modelAndView; }

   @RequestMapping("/json")

   @ResponseBody

  public Map<String, String> json() {

  Map<String, String> data = new HashMap<>(); data.put("message", "Hello, JSON!"); return data; } }

在上面的示例中,hello()方法返回一个名为"hello"的视图,并将"message"属性设置为"Hello, Spring MVC!"。json()方法使用@ResponseBody注解返回一个包含"message"属性的JSON对象。

四:请求处理:
Spring MVC使用@RequestMapping注解来处理请求。
可以使用value属性指定URL路径,method属性指定请求方法,params属性指定请求参数等。
控制器方法可以接受HttpServletRequest和HttpServletResponse对象作为参数,还可以接受其他类型的参数,例如路径变量、请求参数等。
示例代码:

@Controller

public class MyController {

@RequestMapping(value = "/greet/{name}", method = RequestMethod.GET)

public ModelAndView greet(@PathVariable("name") String name) {

ModelAndView modelAndView = new ModelAndView("greet"); modelAndView.addObject("message", "Hello, " + name); return modelAndView; } @RequestMapping(value = "/search", method = RequestMethod.GET)

public ModelAndView search(@RequestParam(“keyword”) String keyword) { // 处理搜索逻辑 } }

在上面的示例中,greet()方法使用@PathVariable注解接受名为"name"的路径变量作为参数。search()方法使用@RequestParam注解接受名为"keyword"的请求参数作为参数。

五:文件上传:
Spring MVC可以处理文件上传,使用@RequestParam注解和MultipartFile类型的参数来接受上传的文件。
MultipartFile是Spring提供的表示上传文件的接口,可以通过它获取文件的内容、名称、大小等信息。
示例代码:

@Controller

public class MyController {

@RequestMapping(value = "/upload", method = RequestMethod.POST)

public String handleFileUpload(@RequestParam("file") MultipartFile file) { // 处理文件上传逻辑 } }

在上面的示例中,handleFileUpload()方法使用@RequestParam注解接受名为"file"的文件参数作为MultipartFile类型的参数。

六:拦截器:
Spring MVC提供了拦截器(Interceptor)来拦截请求并执行相应的逻辑。
可以通过实现HandlerInterceptor接口,并在配置类中添加拦截器来进行配置。
拦截器可以在请求处理之前或之后执行一些公共的逻辑,例如身份验证、日志记录等。
示例代码:

public class MyInterceptor extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前执行的逻辑 }

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在请求处理之后执行的逻辑 } }

@Configuration

@EnableWebMvc

public class AppConfig extends WebMvcConfigurerAdapter {

@Override

public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()); } }

在上面的示例中,创建了一个名为MyInterceptor的拦截器,并在配置类中通过addInterceptors()方法将其添加到拦截器注册表中。

七:异常处理:
Spring MVC提供了异常处理机制,可以通过@ControllerAdvice注解和@ExceptionHandler注解来处理全局的异常。
@ControllerAdvice注解用于指示全局异常处理类,其中包含了处理不同类型异常的方法。
@ExceptionHandler注解用于指定处理特定类型异常的方法,并在方法中返回错误页面或错误消息。
示例代码:

@ControllerAdvice 

public class GlobalExceptionHandler {

@ExceptionHandler(Exception.class)

public ModelAndView handleException(Exception ex) {

ModelAndView modelAndView = new ModelAndView("error"); modelAndView.addObject("errorMessage", ex.getMessage());

return modelAndView; } }

在上面的示例中,handleException()方法用于处理Exception类型的异常,并返回名为"error"的视图,其中包含了错误消息。

八:注解模式:
在Spring MVC中,可以使用@RestController注解和@RequestMapping注解来创建RESTful风格的API。
@RestController注解用于指示控制器类,并表示所有的处理方法都以JSON格式作为响应内容。
@RequestMapping注解用于指定URL路径和请求方法,支持HTTP的GET、POST、PUT、DELETE等方法。
示例代码:

javaCopy Code

@RestController

@RequestMapping("/api")

public class MyRestController {

@GetMapping("/data") public String getData() {

return "Some data from the API"; } }

在上面的示例中,getData()方法使用@GetMapping注解指定了URL路径"/api/data"和HTTP的GET方法,返回一个字符串作为响应内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值