发表于: 2020-01-13 22:11:33
1 1085
异常处理
SpringMVC 在处理请求过程中出现异常信息将会交给异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑
异常通常包含编译时异常和运行时异常
运行时异常,比如:空指针异常、数组越界异常
编译时异常,比如:数据库异常、文件读取异常、自定义异常。对于这样的异常必须使用try catch 代码块或 throws 关键字进行异常处理。
系统的 dao、service、controller 出现都通过 throws Exception 向上抛出,最后由 SpringMVC 前端控制器交由异常处理器进行异常处理:
全局范围内只有一个异常处理器。
自定义异常类:为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果 Controller、service、dao 抛出此类异常说明系统预期处理的异常信息。
自定义异常处理器 GlobalExceptionHandler
参数校验
为了避免用户绕过浏览器,使用http工具直接向后端请求一些违法数据,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,同时也可以避免恶意请求,Spring的 javax.validation 注解式参数校验可以很好的帮助我们实现对参数的校验
1)什么是 javax.validation
JSR303 是一套JavaBean参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们JavaBean的属性上面(面向注解编程的时代),就可以在需要校验的时候进行校验了
2)添加相关依赖:
前端页面
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>monkey1024</title>
<link href="${pageContext.request.contextPath}/static/bootstrap-3.3.7-dist/css/bootstrap.css" rel="stylesheet">
</head>
<body>
<div "container theme-showcase" role="main">
<div "page-header">
<a id="add" type="button" "btn btn-sm btn-success" href="${pageContext.request.contextPath}/jsp/student_add.jsp">添加</a>
</div>
<div "row">
<div "">
<table "table table-striped">
<thead>
<tr>
<th>编号</th>
<th>姓名</th>
<th>QQ</th>
<th>修真类型</th>
<th>毕业学校</th>
<th>学号</th>
<th>辅导师兄</th>
<th>口号</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<c:forEach items="${pageInfo.list}" var="stu">
<tr>
<td>${stu.id}</td>
<td>${stu.name}</td>
<td>${stu.qq}</td>
<td>${stu.jnshuType}</td>
<td>${stu.school}</td>
<td>${stu.onlineNum}</td>
<td>${stu.counsellor}</td>
<td>${stu.slogan}</td>
<td>
<a type="button" "btn btn-sm btn-warning" href="${pageContext.request.contextPath}/jsp/student_update.jsp?id=${stu.id}&slogan=${stu.slogan}">修改</a>
<form action="${pageContext.request.contextPath}/student/${stu.id}" method="post" >
<input name="_method" type="hidden" value="DELETE">
<input type="submit" "btn btn-sm btn-info" value="删除">
</form>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<table border="0" cellspacing="0" cellpadding="0" width="900px">
<tr>
<td "td2">
<span>第${pageInfo.pageNum}/ ${pageInfo.pages}页</span>
<span>总记录数:${pageInfo.total} 每页显示:${pageInfo.pageSize}</span>
<span>
<c:if test="${pageInfo.pageNum != 5}">
<a href="${pageContext.request.contextPath }/student/">[首页]</a>
<a href="${pageContext.request.contextPath }/student/?pageNum=${pageInfo.pageNum-1}">[上一页]</a>
</c:if>
<c:if test="${pageInfo.pageNum != pageInfo.total}">
<a href="${pageContext.request.contextPath }/student/?pageNum=${pageInfo.pageNum+1}">[下一页]</a>
<a href="${pageContext.request.contextPath }/student/?pageNum=${pageInfo.total}">[尾页]</a>
</c:if>
</span>
</td>
</tr>
</table>
</div>
</div>
</div>
<script src="${pageContext.request.contextPath}/static/jquery-3.3.1.min.js"></script>
<script src="${pageContext.request.contextPath}/static/bootstrap-3.3.7-dist/js/bootstrap.js"></script>
</body>
</html>
参数绑定
参数绑定是指将请求参数串中的 value 值取到之后,在进行类型转换,然后转换后的值赋值给 Controller 类中方法的形参,这个过程就是参数绑定
明日计划:SSM整合
今日问题 无
评论