学无先后,达者为师

网站首页 编程语言 正文

SpringMVC @Controller和@RequestMapping注解

作者:ezezeez 更新时间: 2022-07-16 编程语言

URLBasedViewResolver

UrlBasedViewResolver 是对 ViewResolver 的一种简单实现,主要提供了一种拼接 URL 的方式来解析视图。

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">            
    <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceViewResolver"/> <!--不能省略-->
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <!--后缀-->
    <property name="suffix" value=".jsp"/>  
 </bean>

Spring MVC接口

Spring MVC 涉及到的组件有 DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。下面对各个组件的功能说明如下。
1)DispatcherServlet
DispatcherServlet 是前端控制器,从图 1 可以看出,Spring MVC 的所有请求都要经过 DispatcherServlet 来统一分发。DispatcherServlet 相当于一个转发器或中央处理器,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。
2)HandlerMapping
HandlerMapping 是处理器映射器,其作用是根据请求的 URL 路径,通过注解或者 XML 配置,寻找匹配的处理器(Handler)信息
3)HandlerAdapter
HandlerAdapter 是处理器适配器,其作用是根据映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)
4)Handler
Handler 是处理器,和 Java Servlet 扮演的角色一致。其作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装至 ModelAndView 对象中。
5)View Resolver
View Resolver 是视图解析器,其作用是进行解析操作,通过 ModelAndView 对象中的 View 信息将逻辑视图名解析成真正的视图 View(如通过一个 JSP 路径返回一个真正的 JSP 页面)。
6)View
View 是视图,其本身是一个接口,实现类支持不同的 View 类型(JSP、FreeMarker、Excel 等)。

以上组件中,需要开发人员进行开发的是处理器(Handler,常称Controller)和视图(View)。通俗的说,要开发处理该请求的具体代码逻辑,以及最终展示给用户的界面。

注意:由于 Spring MVC 结构比较复杂,所以学习的时候也要掌握学习方法。首先要明确 Spring MVC 是一个工具,既然是工具,那么我们就需要先掌握工具的使用方法,不要陷入细节中,深入浅出,慢慢通过实际运用来加深对其的理解。

Controller注解

在 net.biancheng.controller 包中创建控制器类 IndexController

package net.biancheng.controller;

import org.springframework.stereotype.Controller;

@Controller
public class IndexController {
    // 处理请求的方法
}

springmvcDemo 应用的配置文件 springmvc-servlet.xml 中添加以下代码:

<!-- 使用扫描机制扫描控制器类,控制器类都在net.biancheng.controller包及其子包下 -->
<context:component-scan base-package="net.biancheng.controller" />

RequestMapping注解

  1. value 属性
@RequestMapping(value="toUser")
@RequestMapping("toUser")
  1. path属性
@RequestMapping(path="toUser")
  1. name属性
@RequestMapping(value = "toUser",name = "获取用户信息")
  1. method属性
@RequestMapping(value = "toUser",method = RequestMethod.GET) 

@RequestMapping(value = "toUser",method = {RequestMethod.GET,RequestMethod.POST})
  1. params属性
@RequestMapping(value = "toUser",params = "type")
public String toUser() {
    return "showUser";
}
  1. header属性
@RequestMapping(value = "toUser",headers = "Referer=http://www.xxx.com") 
  1. consumers属性
@RequestMapping(value="toUser",consumers="application/json");
  1. produces属性
    produces 属性用于指定返回的内容类型
@RequestMapping(value="toUSer",produces="application/json,charst=utf-8");

通过请求URL进行映射

1)方法级别注解
@Controller
public class IndexController{
@RequestMapping(value="/index/login")
public String login(){
return "login";
}
@RequestMapping(value="/index/register")
public String register(){
return "register";
}
}

2)类级别注解

@Controller
@RequestMapping("/index")
public class IndexController{

@RequestMapping("/login")
  public Sting login(){
  return "login";
  }

}

通过请求参数、请求方法进行映射

package net.biancheng.controller;

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

@Controller
public class IndexController {
    @RequestMapping(value = "/index/success" method=RequestMethod.GET, Params="username")
    public String success(@RequestParam String username) {    
        return "index";
}

编写请求处理方法⭐

1)请求处理方法中常出现的参数类型

package net.biancheng.controller;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/index")
public class IndexController {
    @RequestMapping("/login")
    public String login(HttpSession session,HttpServletRequest request) {
        session.setAttribute("skey", "session范围的值");
        session.setAttribute("rkey", "request范围的值");
        return "login";
    }
}

2)请求处理方法常见的返回类型

请求处理方法可以返回如下类型的对象:
ModelAndView
Model
包含模型属性的 Map
View
代表逻辑视图名的 String
void
其它任意Java类型

最常见的返回类型就是代表逻辑视图名称的 String 类型,例如前面几节中的请求处理方法。

web.xml
springmvc-servlet.xml
User.java
UserController.java
index.jsp
login.jsp
register.jsp
当用户单击“注册”超链接时,控制器会将该请求转发给 UserController 的 getLogin 方法处理,处理后跳转到 /WEB-INF/jsp 下的 register.jsp 视图。同理,当单击“登录”超链接时,控制器处理后转到 /WEB-INF/jsp下的 login.jsp 视图。

原文链接:https://blog.csdn.net/qq_44174346/article/details/125737862

栏目分类
最近更新