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.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...
随机推荐
- WIN7 WIN10修改path不用重启即可生效
近来安装python scrapy经常忘了添加到path,需要时增加了但需要重启才能起作用,用下面的方法马上能生效: 1修改path:右击"计算机"--高级--环境变量--path ...
- CSS从入门到喜欢,从喜欢到着魔
如果把网页比作一个人的话,html就是他的骨架,而css是他的皮肤,javascript是神经控制着行动.html,css,javascript都是构建网页的核心技术. CSS简介 css指的是层叠样 ...
- SyntaxError: unexpected EOF while parsing成功解决
报错在eval()函数: 我加了个 if 判断是否为空,就可以正常运行了!
- 春招后端阿里腾讯字节美团Offer拿来吧你,面试经验分享
近期很多童鞋在准备校招了,找了蚂蚁的一位童鞋,给大家分享一波面试经验,以及面试心得,希望能帮大家在秋招拿到一个好结果 我自己的22届春招实习算是告一段落,给自己做个总结,也给大家分享一下面试的一些心得 ...
- Windows内核开发-4-内核编程基础
Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Cr ...
- 【Lucas组合数定理+中国剩余定理】Mysterious For-HDU 4373
Mysterious For-HDU 4373 题目描述 MatRush is an ACMer from ZJUT, and he always love to create some specia ...
- jmeter测试流程整理
背景 整理jmeter脚本编写流程,注意事项,常用组件,常见问题. 参看链接:https://www.cnblogs.com/pwj2lgx/p/10282422.html 参看:processOn思 ...
- Tomcat修改最大连接数及查看最大连接数
一.背景 公司进行安全整改, 技术要求:会话限制:应能够对应用系统的最大并发会话连接数进行限制: 提供凭证:提供对系统最大并发会话连接数进行限制的截图,需要将所有被检查系统中间件配置截图,如果不限制最 ...
- 构建前端第3篇之---使用scss
张艳涛 写于2021-1-20 主要解决俩个问题: 在单个vue文件中 <style rel="stylesheet/scss" lang="scss"& ...
- ZooKeeper(2181、2171) 未授权访问
下载地址http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/ tar -xzvf zookeeper-3.4.14.tar.gz cd ...