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会在校验不通过时直接抛出异常