springmvc学习日志四
一、回顾
1.文件上传
1.1引入fileupload的jar包
1.2在springmvc的配置文件中引入CommonsMutilpartResolver文件上传解析器
1.3在控制层在写入代码
2.拦截器
2.1创建一个类实现HandlerInterceptor接口
2.2在springmvc配置文件中配置该拦截器
3.数据校验
3.1引入Hibernate-validate的jar包
3.2在相应的实体类属性上加上校验注解
3.3在控制层接受参数的地方加上 @Valid 如果参数不符合校验 把错误封装到BindingResult对象中
二、restful风格
特点:
请求地址http://localhost:8080/Springmvc-04/user/6
设置restful风格无需在添加jar包,只需在之前示例的基础上设置请求处理方式
建立实体类
public class User {
private String name;
private String password;
private String phone;
}
建立jsp页面,向控制层传输数据和提交方式
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/springmvc4/js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$.ajax({
url:"user/1",
type:"post",
data:{
_method:"delete",
"name":"张三",
"password":"123456",
"phone":"15295730918"
},
success:function(result){
//alert(result);
location.href="/springmvc4/index.jsp";
}
});
</script>
</head>
<body> </body>
</html>
1.当请求提交方式为get时,建立Controller类,并根据请求的方式调用相应的方法
@Controller
@RequestMapping("user")
public class UserController { //restFul---->user/1
//method:表示方法处理get请求
//把1赋值给{uid}了,uid可自定义
@RequestMapping(value="{uid}", method=RequestMethod.GET) //查询操作
public String findById(@PathVariable("uid") int id) {//@PathVariable把uid的值赋值给形参数
System.out.println("====findId===="+id);
return "index";
}
}
2.当请求提交的方式为post、put和delete时
首先在web.xml中配置过滤器
<!--
把post请求转化为PUT和DELETE请求
使用_method表示真正的提交方式
-->
<filter>
<filter-name>hiddenHttpMethodFilte</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilte</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
再建立Controller类,在类中根据不同的方式调用不同的方法
@Controller
@RequestMapping("user")
public class UserController { @RequestMapping( method=RequestMethod.POST) //添加操作
public String insertUser(User user) {
System.out.println("1==="+user);
return "index";
}
//springmvc提供了一个过滤,该过滤器可以把post请求转化为put和delete请求
@RequestMapping( method=RequestMethod.PUT) //修改操作
//用于返回Ajax对象,一定要加,当使用springmvc提供的可以把post请求转化为put和delete请求的过滤器时
@ResponseBody
public String updateUser(User user) {
System.out.println(user+"update");
return "index";//也可返回json对象
} //如果web.xml中配置为*.do,那么只在url地址栏中加.do,这里的value中不需要加.do
@RequestMapping(value="{id}" ,method=RequestMethod.DELETE) //删除操作
@ResponseBody
public String deleteUser(@PathVariable int id) {
System.out.println(id+"=====delete");
return "index";
} }
三、springmvc异常处理
1.局部处理。当在一个类中有异常时,可在类中直接进行异常处理
@Controller
@RequestMapping("user")
public class UserController { //restFul---->user/1
//method:表示方法处理get请求
//把1赋值给{uid}了,uid可自定义
@RequestMapping(value="{uid}", method=RequestMethod.GET) //查询操作
public String findById(@PathVariable("uid") int id) {//@PathVariable把uid的值赋值给形参数
System.out.println("====findId===="+id);
// int a=10/0; //除数不能为零
if(id==0) {
throw new RuntimeException("请求的参数有错误");
}
return "index";
}
@ExceptionHandler //当该类发生异常时由该方法来处理,该方法的Exception会接受异常对象
public ModelAndView error(Exception exception) {
ModelAndView mv=new ModelAndView();
mv.addObject("error", exception.getMessage());
mv.setViewName("error");
return mv;
}
2.定义一个全局异常类。当多个类中出现异常时
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView; @ControllerAdvice
public class ExceptionController { @ExceptionHandler //当该类发生异常时由该方法来处理,该方法的Exception会接受异常对象
public ModelAndView error(Exception exception) {
ModelAndView mv=new ModelAndView();
mv.addObject("error", exception.getMessage());
mv.setViewName("error");
return mv;
}
}
3.用于专门显示错误信息的jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${error }
</body>
</html>
四、spingmvc有哪些注解
@Controller : 标注该类为控制层类。
@RequestMappint: 标注请求的地址
@ResponseBody: 把java对象转化为json对象。
@Valid: 标注校验该数据
@PathVariable: 接受uri地址的值赋给方法的参数
@SessionAttributes
@RequestParam
@ExceptionAdvice: 标注一个类为异常处理类
@ExceptionHandler: 标注一个方法为异常处理的方法。
@InitBinder: 处理日期时间参数
springmvc学习日志四的更多相关文章
- springmvc学习第四天
数据类型的转换.格式化.校验 1.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创 ...
- SpringMVC学习(四)——处理器Handler的各种常用实现
代码:http://files.cnblogs.com/files/douJiangYouTiao888/MultiActionController.zip 在使用springMVC的开发过程中,Ha ...
- springmvc学习日志二
一.当接受的参数为日期类型时 1.建立jsp页面,向Controller类传入参数 1.1当传入的参数为单个时 <body> <form action="user/toDa ...
- springMVC学习日志一
一.springMVC流程图省略 二.写一个简单的springmvc的demo来说明 2.1引入springMVC相关的jar包 2.2配置DispatcherServlet 在web.xml < ...
- SpringMVC学习笔记(四)
一.Controller接受网页参数. 1.使用方法的形参来接受 //使用基本类型和字符串来接受 @RequestMapping(value="/param2.do") publi ...
- SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request ...
- springmvc学习(四)
1.使用 @CookieValue 绑定请求中的 Cookie 值 例子: java @RequestMapping(value="/testCookieValue") publi ...
- SpringMVC学习(四)———— 数据回显与自定义异常处理器
一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什么是数据回显? 在信息校验时,如果发生校验错误,那么把校验的数据信息,依然停留在当前页面, ...
- SpringMVC学习记录四——功能开发及参数绑定
9 商品修改功能开发 9.1 需求 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...
随机推荐
- C语言:char 常量写法及变量赋值
#include <stdio.h> main() { char zfx_1,zfx_2,zfx_3,zfx_4,zfx_5,zfx_6,zfx_7,zfx_8; zfx_1='a';// ...
- SpringBoot自动装配-自定义Start
SpringBoot自动装配 在没有使用SpringBoot之前,使用ssm时配置redis需要在XML中配置端口号,地址,账号密码,连接池等等,而使用了SpringBoot后只需要在applicat ...
- 【LeetCode】217.存在重复元素
217. 存在重复元素 知识点:数组:Set: 题目描述 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 fals ...
- fiddler抓取手机模拟器数据
引自:https://blog.csdn.net/lengdaochuqiao/article/details/88170522 1.下载最新版fiddler ,强烈建议在官网下载:https://w ...
- python中浮点数比较判断!为什么不能用==
问题:浮点数比较为什么不能用==来写? 答:计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存了一个最靠近的数字. 计算机表示浮点数(float或double类型)都有一 ...
- Linux开机以root账户自动登录
最近我们的自动化测试平台需要支持中标麒麟系统,对于我们来说要让这个系统支持分布式自动化测试,最重要的一点就是虚拟机启动后自动以root账户登录系统,并且执行我们的环境配置脚本,那么如何能让它开启自动登 ...
- 10分钟物联网设备接入阿里云IoT平台
前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...
- 利用swagger和API Version实现api版本控制
场景: 在利用.net core进行api接口开发时,经常会因为需求,要开发实现统一功能的多版本的接口.比如版本V1是给之前用户使用,然后新用户有新需求,这时候可以单独给这个用户写接口,也可以在V1基 ...
- Supervisord 远程命令执行漏洞(CVE-2017-11610)
漏洞影响范围: Supervisor version 3.1.2至Supervisor version 3.3.2 poc 地址.https://github.com/vulhub/vulhub/tr ...
- 如何实现让div垂直居中,左右10px,高度始终为宽度一半
方法一:利用height:0; padding-bottom: 50%; <!DOCTYPE html><html lang="en"> <head& ...