Spring MVC核心应用

2023-05-04 19:27:08 浏览数 (2)

springmvc核心应用

@RequestMapping下的方法的注意事项

返回值

可以为modelandview或者是String

modelandview上一章已经讲过不做赘述

接下来将String返回值的场景

代码语言:javascript复制
package control;
​
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
​
@Controller
public class userController {
​
    @RequestMapping("jump")
    public String jump(){
        System.out.println("jump");
        //return "login";//逻辑视图名跳转地址 纯粹用于跳转页面,会拼接配置文件里设置的前缀和后缀
​
        return "redirect:login";//重定向 两次请求,地址变了,不会拼接配置文件里设置的前缀和后缀
​
       // return "forward:login";//转发一次请求地址不变,如果是forward,那么不会拼接配置文件里设置的前缀和后缀,直接原字符串转发资源
​
    }
    @RequestMapping("login")
    public String login() {
​
        System.out.println("controller");
        return "";
    }
}
​
参数

直接写接受参数,但是一般在参数前面加上@RequsetParam注解

代码语言:javascript复制
 @RequestMapping("jump")
    public String jump(@RequestParam String name){
        System.out.println(name);
        //return "login";//逻辑视图名跳转地址 纯粹用于跳转页面,会拼接配置文件里设置的前缀和后缀
​
        return "redirect:login";//重定向 两次请求,地址变了,不会拼接配置文件里设置的前缀和后缀
​
       // return "forward:login";//转发一次请求地址不变,如果是forward,那么不会拼接配置文件里设置的前缀和后缀,直接原字符串转发资源
​
    }

局部异常处理

仅能处理指定Controller中的异常

@ExceptionHandler注解

一般不用

代码语言:javascript复制
 @ExceptionHandler(value = {RuntimeException.class})
    public String ex(){
        xxxxx
        return "";
    }
全局异常处理

现在流行的就是在web.xml里去做。详细请看webxml配置

Spring 表单标签应用

必须在JSP页面的开头处声明taglib指令

代码语言:javascript复制
<%@ taglib prefix="fm"     
         uri="http://www.springframework.org/tags/form" %>
​
Spring常用表单标签

名称

说明

fm:form/

渲染表单元素

fm:input/

输入框组件标签

fm:password/

密码框组件标签

fm:hidden/

隐藏框组件标签

fm:textarea/

多行输入框组件标签

fm:radiobutton/

单选框组件标签

fm:checkbox/

复选框组件标签

fm:select/

下拉列表组件标签

fm:error/

显示表单数据校验所对应的错误信息

了解一下,基本不用

Rest风格

简介

REST规范:

  • 强调HTTP应当以资源为中心,并且规范了资源URI的风格;
  • 规范了HTTP请求动作(PUT,POST等)的使用,具有对应的语义;

遵循REST规范的网络应用将会获得下面好处:

  • URL具有很强可读性的,具有自描述性;
  • 资源描述与视图的松耦合;
  • 可提供的OpenAPI,便于第三方系统集成,提高互操作性;
  • 如果提供无状态的服务接口,可提高应用的水平扩展性;
@PathVariable与@RequestParam区别

@PathVariable主要用于接收http://host:port/path/{参数值}数据。

@RequestParam主要用于接收http://host:port/path?参数名=参数值数据,这里后面也可以不跟参数值。

现在一般不使用这种方式了

服务器端的数据校验

利用JSR 303实现
步骤

1.加入jar文件

hibernate-validator-4.3.2.Final.jar jboss-logging-3.1.0.CR2.jar validation-api-1.0.0.GA.jar

2.实体类添加注解

约束

说明

@Null

被注释的元素必须为**null**

@**NotNull**

被注释的元素必须不为**null**

@**AssertTrue**

被注释的元素必须为 true

@AssertFalse

被注释的元素必须为 false

@Min(value)

被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@Max(value)

被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@DecimalMin(value)

被注释的元素必须是一个数字,其值必须大于等于指定的最小值

@DecimalMax(value)

被注释的元素必须是一个数字,其值必须小于等于指定的最大值

@Size(max, min)

被注释的元素的大小必须在指定的范围内

@Digits (integer, fraction)

被注释的元素必须是一个数字,其值必须在可接受的范围内

@Past

被注释的元素必须是一个过去的日期

@Future

被注释的元素必须是一个将来的日期

3.在controller层改动

方法参数中的实体类上加入@Vaild注解,紧跟着后面加上BindingResult br

方法体中通过hasErrors()方法判断是否要执行下面的程序

注意:@Valid注解标示的参数后面,必须紧挨着一个BindingResult参数,否则Spring会在校验不通过时直接抛出异常

0 人点赞