一、回顾

  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风格

特点:

1、每一个URI代表1种资源;
2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;
3、通过操作资源的表现形式来操作资源;

请求地址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学习日志四的更多相关文章

  1. springmvc学习第四天

    数据类型的转换.格式化.校验 1.数据绑定流程 1. Spring MVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创 ...

  2. SpringMVC学习(四)——处理器Handler的各种常用实现

    代码:http://files.cnblogs.com/files/douJiangYouTiao888/MultiActionController.zip 在使用springMVC的开发过程中,Ha ...

  3. springmvc学习日志二

    一.当接受的参数为日期类型时 1.建立jsp页面,向Controller类传入参数 1.1当传入的参数为单个时 <body> <form action="user/toDa ...

  4. springMVC学习日志一

    一.springMVC流程图省略 二.写一个简单的springmvc的demo来说明 2.1引入springMVC相关的jar包 2.2配置DispatcherServlet 在web.xml < ...

  5. SpringMVC学习笔记(四)

    一.Controller接受网页参数. 1.使用方法的形参来接受 //使用基本类型和字符串来接受 @RequestMapping(value="/param2.do") publi ...

  6. SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍

    SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request ...

  7. springmvc学习(四)

    1.使用 @CookieValue 绑定请求中的 Cookie 值 例子: java @RequestMapping(value="/testCookieValue") publi ...

  8. SpringMVC学习(四)———— 数据回显与自定义异常处理器

    一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什么是数据回显? 在信息校验时,如果发生校验错误,那么把校验的数据信息,依然停留在当前页面, ...

  9. SpringMVC学习记录四——功能开发及参数绑定

    9       商品修改功能开发 9.1      需求 操作流程: 1.进入商品查询列表页面 2.点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据 ...

随机推荐

  1. python 按行查找文本文件,找出答案,并提示置顶答案

    1.整理好答案文件为文本文件:不能有空行:每个题干前有数字做为题号:每个题答案第一个字符为字母,答案占一行import time import time import sys import os im ...

  2. python sqlite3 类

    import sys import os import sqlite3 ##sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/ ...

  3. [刘阳Java]_Spring中IntrospectorCleanupListener的用途【补充】_第16讲

    这篇文章不是我自己原创的,但是为了后期的阅读,所以我收录网上的一篇文章.为了尊重作者的版权,转载地址先放上来,大家也可以去访问他的原始文章.http://jadyer.cn/2013/09/24/sp ...

  4. ROS轮椅

  5. python基础问题

    包安装相关问:如何安装Python三方包?在命令行如何检查一个包是否已安装?答:安装用pip install 卸载用 pip uninstall 直接import 这个包问:环境变量PATH的作用是什 ...

  6. Pelles C编译时出现的“POLINK: fatal error: 拒绝访问”问题的一种可能成因

    在使用PellesC编译程序时,第一遍能正常编译执行,第二遍就无法编译,出现以下问题提示: Building NEWprogram2.exe. POLINK: fatal error: 拒绝访问. * ...

  7. 自学linux——10.Linux的网络知识

    linux的网络知识 一.网络相关概述 1.网络的分类 局域网(LAN):在几百米到十几公里内办公楼群或校园内的计算机相互连接所构成的计算机网络 城域网(MAN):覆盖相距不远的几栋办公楼,也可以覆盖 ...

  8. OpenGL学习笔记(五)变换

    目录 变换 向量 向量的运算 向量与标量运算 向量取反 向量加减 求向量长度 向量的单位化 向量相乘 点乘(Dot Product) 叉乘 矩阵 矩阵的加减 矩阵的数乘 矩阵相乘 矩阵与向量相乘 与单 ...

  9. 计算机网络模型和5G知识

    目录 一.网络布线及信号传输 1.信号 2.传输介质 2.1双绞线 2.2光纤 2.3常见性问题 三.无线传播介质 四.综合布线系统 五.计算机的数制度以及运算 一.网络布线及信号传输 1.信号 频率 ...

  10. python,ctf笔记随笔

    一.在centos虚拟机中安装pyhton3环境: 安装pip3:yum install python36-pip 将pip升级到最新版本:pip3 install --upgrade pip 运行p ...