博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Mvc的核心类与注解
阅读量:3963 次
发布时间:2019-05-24

本文共 6922 字,大约阅读时间需要 23 分钟。

Spring Mvc的核心类与注解

DispatcherServlet

  • 它的全名是org.springfarmework.web.servlet.DispatcherServlet,它在程序中充当着前端控制器的角色,在使用的将配置在项目web.xml文件中,
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc-config.xml
1
springmvc
/

@ Controller注解类型

org.springframework.steretype.Controller注解类型用于指示Spring类的实例是一个控制器,它的注解形式是@Controller,该注解在使用时不需要在使用Controller接口,只需要将@Controller注解加入到控制器类上,然后通过Spring的扫描机制找到标注了该注解的控制器即可,

代码

FirstController

package com.yzb.chapter12;import org.springframework.stereotype.Controller;@Controllerpublic class FirstController {}

springmvc.xml

RequestMapping注解的使用

  • Spring通过@Controller注解找到相应的控制类后,还需要知道控制器内部对每个请求是如何处理的,这就需要使用@RequestMapping注解类型,它用于映射一个请求或一个方法,使用时,可以标注在一个方法或类上,

FirstController

package com.yzb.chapter12;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controllerpublic class FirstController {    @RequestMapping(value = "/firstController")    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {        //创建一个对象ModelAndView对象        ModelAndView modelAndView = new ModelAndView();        //像模型对象中添加数据        modelAndView.addObject("msg","这是我的一个程序");        //设置逻辑视图名        modelAndView.setViewName("/WEB-INF/JSP/first.jsp");        //返回ModelAndView对象        return modelAndView;    }}
  • 该类中的所有的方法都映射为相对于类级别的请求,表示该控制器所处理的所有请求都被映射到value属性值所制定的路径下。
package com.yzb.chapter12;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controller@RequestMapping(value = "/hello")public class FirstController {    @RequestMapping(value = "/firstController")    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {        //创建一个对象ModelAndView对象        ModelAndView modelAndView = new ModelAndView();        //像模型对象中添加数据        modelAndView.addObject("msg","这是我的一个程序");        //设置逻辑视图名        modelAndView.setViewName("/WEB-INF/JSP/first.jsp");        //返回ModelAndView对象        return modelAndView;    }}

由于在类上添加@RequestMapping注解,并且其value属性值“/hello”,请求代码就会变成:http://localhost:8080/chapter12/hello/firstController

在这里插入图片描述

  • 所有属性都是可选的,但其 默认的属性是value,当value是唯一的属性值是可以省略。

组合注解

为了简化常用的HTTP方法的映射,

@GetMapping:匹配GET方式的请求
@PostMapping:匹配POST方式的请求
@PutMapping:匹配PUT方式的请求
@DeleteMapping:匹配DELETE方式的请求
@PatchMapping:匹配PATCH方式的请求
例如:
@GetMapping(value="/user/{id}")=@RequestMapping(value="/user/{id}",method=RequestMethod.GET);

请求处理方法的参数和返回类型

参数

@PathVariable

@RequestParam
@RequestHeader
@RequestBody
@MatrixVariable
@QRequestPart
@SessionAttribute
@RequestAttribute
在这里插入图片描述
在这里面org.springframework.ui.Model,它不是一个ServletAPI类型,而是一个包含了Map对象的Spring MVC类型,如果方法中添加了Model的参数,则每次调用该请求处理方法时,SpringMVC都会创建Moodel对象,并将其作为参数传递给方法。

返回类型

  • ModelAndView:可以添加M数据,并指定视图
  • Model
  • Map
  • View
  • String:可以跳转视图,但不能携带数据
  • void:在异步请求时使用,它只返回数据,而不会跳转视图
  • HttpEntity<?>或ReponseEntity<?>
  • Callable<?>
  • DeferredResult<?>

@@@

  • 由于ModelAndView类型不能实现数据与视图之间的解耦
  • 在企业开发时的返回类型都会使用String

web.xml

springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springmvc
/

springmvc.xml

FirstController

package com.yzb.chapter12;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controller@RequestMapping(value = "/hello")public class FirstController {    @RequestMapping(value = "/firstController")    public String handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model) throws Exception {        //使用model对象存储数据        model.addAttribute("msg","这是我的一个程序");        //设置逻辑视图名        return "/WEB-INF/JSP/first.jsp";    }}

first.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title<%--EL表达式--%>${msg}

结果图

在这里插入图片描述

String返回类型的两种用法

String类型出了可以返回上述代码中视图页面外,还可以进行重定向与请求转发,

redirect重定向

例如在修改用户信息操作后,将请求重定向到用户查询方法的实现代码

@RequestMapping(value="/update")public String update(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model){	......	return "redirect:queryUser";}

forward请求转发

用户执行修改操作时,转发到用户修改页面的实现

@RequestMapping(value="/toEdit")public String update(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model){	......	return "forward:editUser";}

ViewResolver视图解析器

package com.yzb.chapter12;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controller@RequestMapping(value = "/hello")public class FirstController {    @RequestMapping(value = "/firstController")    public String handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Model model) throws Exception {        //使用model对象存储数据        model.addAttribute("msg","这是我的一个程序");        //设置逻辑视图名        //return "/WEB-INF/JSP/first.jsp";        return "first";    }}
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springmvc
/
<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title<%--EL表达式--%>${msg}

SpringMVC应用

在web.xml中配置一个DispatcherServlet,初始化文件配置里加上配置文件

在配置文件中加入扫描的组件,和视图解析器的前后缀,
编写controller类加注解,返回类型String类型
上面就是该实例的代码。

转载地址:http://vzwki.baihongyu.com/

你可能感兴趣的文章
UI自动化测试框架对比(二)
查看>>
Selenium-webdriver系列教程(9)——如何操作select下拉框
查看>>
Selenium-webdriver系列教程(10)——如何智能的等待页面加载完成
查看>>
Robotium测试NotePad(一)
查看>>
Robotium测试NotePad(二) //测试添加文本
查看>>
Kafka 只有一个broker的例子
查看>>
ZooKeeper 精萃
查看>>
ZooKeeper 简介
查看>>
ZooKeeper 下载和安装
查看>>
只有一个 ZooKeeper 服务器的例子
查看>>
ZooKeeper 节点
查看>>
申请美国商务签证(B1/B2) -- 大连
查看>>
Oracle SQL 精萃
查看>>
特殊符号用英语怎么说
查看>>
Oracle PL/SQL 精萃
查看>>
PL/SQL 注释(Comment)
查看>>
PL/SQL 标识符(Identifier)
查看>>
Oracle 空字符串和NULL
查看>>
Oracle 内置数据类型 -- 字符
查看>>
Oracle 内置数据类型 -- 数值
查看>>