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.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...
随机推荐
- EasyUI学后总结第一集
1,创建Easyui组件-使用html还是使用js方式? 如果在创建Easyui组件的时候,组件再被更改,那么属于静态组件,对于静态组件不要使用js方式创建--会增加js代码量. 如果创建的Easyu ...
- HTML - form表单操作
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 微信小程序云开发-云函数-调用初始云函数获取openid
一.调用初始云函数获取openid的两种方法 1.传统的success和fail 2.ES6的.then和.catch 3.编译结果 说明:初始云函数,是指刚创建完成的云函数.默认系统写的代码.
- debian 9 pycharm安装
官网下载PyCharm的tar.gz格式 使用命令进行解压:tar -xvzf pycharm.tar.gz 解压后将pycharm文件夹移动到/usr/local/lib/目录下 进入pycharm ...
- C++第四十九篇 -- 将一个项目Copy到另一台电脑
最近写项目,由于设备原因,需要将一台电脑的项目拷贝到另一台电脑上,在另一个电脑上继续编写.由于配置属性原因,最终还是在另一台电脑上创建了新项目,只是把这些cpp文件都复制过去了,然后重新部署属性. 背 ...
- 多个filter如何决定调用顺序
答案是:web-inf中的web.xml决定
- Spring Security OAuth2 远程命令执行漏洞(CVE-2016-4977)
影响版本: 2.0.0-2.0.9 1.0.0-1.0.5 poc地址 https://github.com/vulhub/vulhub/blob/master/spring/CVE-2016-497 ...
- 学习笔记-CCS-MSP430F5529[快速入门篇二]
由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...
- erlang学习笔记
安装 Ubuntu Server上: sudo apt-get install erlang 如果安装时下载 太慢,可手工下载deb包( esl-erlang_16.a-rc1_ubuntu_prec ...
- HandlerInterceptor与WebRequestInterceptor的异同
相同点 两个接口都可用于Contrller层请求拦截,接口中定义的方法作用也是一样的. //HandlerInterceptor boolean preHandle(HttpServletReques ...