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.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...
随机推荐
- facade层,service 层,domain层,dao 层设计
转自http://fei-6666.iteye.com/blog/446247,记录下来 一,Service->DAO,只能在Service中注入DAO. 二,DAO只能操作但表数据,跨表操作放 ...
- 使用xampp在本地环境配置虚拟域名
最近在学习ThinkPHP5.1.手册里面提到"实际部署中,应该是绑定域名访问到public目录,确保其它目录不在WEB目录下面."所以把使用xampp在本地配置虚拟域名的过程记录 ...
- pytest框架运用
import pytest ''' 运行方式 1. pytest -s test01.py 把print信息打印出来运行用例 2. 通过main运行 前置后置方法 1. 函数级 setup teard ...
- Python自动化测试面试题-Selenium篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- Vue--el-menu 的自动跳转功能与自己的click事件冲突
一\先看elementUI说明 项目实际 此时点击活导航时以 index 作为 path 进行路由跳转 那么此时不要onclik事件了 如果此时有在有click 就
- bootstrap table记录一下
$(function() { // 刷新 talbe function refresh() { $("#table").bootstrapTable('refresh'); } $ ...
- sql注入之堆叠注入及waf绕过注入
#堆叠查询注入 1.堆叠查询概念 stacked injections(堆叠查询注入)从名词的含义就可以看出一应该是一堆(多条)sql语句一起执行.而在真实运用中也是如此,我们知道在mysql中,主要 ...
- SpringCloud升级之路2020.0.x版-8.理解 NamedContextFactory
本系列为之前系列的整理重启版,随着项目的发展以及项目中的使用,之前系列里面很多东西发生了变化,并且还有一些东西之前系列并没有提到,所以重启这个系列重新整理下,欢迎各位留言交流,谢谢!~ spring- ...
- 字节跳动前技术总监开源分享《Android架构设计权威指南》,YYDS!
架构就像是一场进化史,根据不同时期的需求,演变出不同的架构,车轮滚滚,到今天,移动端框架百花齐放,让人目不暇接.但是其中的本质是磨灭不了的,换言之根本没有磨灭而是隐藏到了人们所看不到的地方,但是依旧发 ...
- Haskell Interactive Development in Emacs
Installation Following haskell-mode. Use MELPA repository: add the following into ~/.emacs (require ...