9. 全局异常处理
9. 全局异常处理
项目中,可能会抛出多个异常,我们不可以直接将异常的堆栈信息展示给用户,有两个原因:
用户体验不好
非常不安全
所以,针对异常,我们可以自定义异常处理,SpringMVC 中,针对全局异常也提供了相应的解决方案,主要是通过 @ControllerAdvice 和 @ExceptionHandler 两个注解来处理的。
以第八节的文件上传大小超出限制为例,自定义异常,只需要提供一个异常处理类即可:
@ControllerAdvice//表示这是一个增强版的 Controller,主要用来做全局数据处理
public class MyException {
@ExceptionHandler(Exception.class)
publ...
8. 文件上传
8. 文件上传
SpringMVC 中对文件上传做了封装,我们可以更加方便的实现文件上传。从 Spring3.1 开始,对于文件上传,提供了两个处理器:
CommonsMultipartResolver
StandardServletMultipartResolver
第一个处理器兼容性较好,可以兼容 Servlet3.0 之前的版本,但是它依赖了 commons-fileupload 这个第三方工具,所以如果使用这个,一定要添加 commons-fileupload 依赖。
第二个处理器兼容性较差,它适用于 Servlet3.0 之后的版本,它不依赖第三方工具,使用它,可以直接做文件上传。
8.1 CommonsMultipartResolver
使用 Com...
7.3 参数绑定
7.3 参数绑定
7.3.1 默认支持的参数类型
默认支持的参数类型,就是可以直接写在 @RequestMapping 所注解的方法中的参数类型,一共有四类:
HttpServletRequest
HttpServletResponse
HttpSession
Model/ModelMap
这几个例子可以参考上一小节。
在请求的方法中,默认的参数就是这几个,如果在方法中,刚好需要这几个参数,那么就可以把这几个参数加入到方法中。
7.3.2 简单数据类型
Integer、Boolean、Double 等等简单数据类型也都是支持的。例如添加一本书:
首先,在 /jsp/ 目录下创建 add book.jsp 作为图书添加页面:
<%@ page ...
7.2 Controller 方法的返回值
7.2 Controller 方法的返回值
7.2.1 返回 ModelAndView
如果是前后端不分的开发,大部分情况下,我们返回 ModelAndView,即数据模型+视图:
@Controller
@RequestMapping("/user")
public class HelloController {
@RequestMapping("/hello")
public ModelAndView hello() {
ModelAndView mv = new ModelAndView("hello");
mv.addObject("username", "javaboy");
return mv;
...
7.1 @RequestMapping
7.1 @RequestMapping
这个注解用来标记一个接口,这算是我们在接口开发中,使用最多的注解之一。
7.1.1 请求 URL
标记请求 URL 很简单,只需要在相应的方法上添加该注解即可:
@Controller
public class HelloController {
@RequestMapping("/hello")
public ModelAndView hello() {
return new ModelAndView("hello");
}
}
这里 @RequestMapping(“/hello”) 表示当请求地址为 /hello 的时候,这个方法会被触发。其中,地址可以是多个,就是可以多个地址映射到同一个...
6.1 properties
6.1 properties
properties 可以用来引入一个外部配置,最近常见的例子就是引入数据库的配置文件,例如我们在 resources 目录下添加一个 db.properties 文件作为数据库的配置文件,文件内容如下:
共计 58 篇文章,6 页。