目录
1.1 全局异常(实现HandlerExceptionResolver方法)
TESTful风格无后缀,故web.xml不可以配置为*.do,否则会报错找不到页面
一、异常处理
1.1 全局异常(实现HandlerExceptionResolver方法)
当页面出错的时候,不会出现404、500,出现的是自定义的错误界面,给用户体验更好
1.1.1 思路
- 定义全局异常类实现HandlerExceptionResolver方法
- 设计报错的页面
- 配置全局异常
- 使用1/0抛出异常
1.1.2 代码示例
- 全局异常类CustomerExpection.java
//全局异常类
public class CustomerExpection implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
String msg="页面走丢了";
ModelAndView mv=new ModelAndView();
mv.setViewName("error");
mv.addObject("msg",msg);
return mv;
}
}
- 页面设计error.jsp
<body>
<div align="center">
${msg}<br>
<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcxt.zfcg.com%2Fstatic%2Fhome%2Fimg%2F404_03.png&refer=http%3A%2F%2Fcxt.zfcg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1625492854&t=821ecdad3d59951303f95bba857615b1">
</div>
</body>
- 配置文件dispatch-servlet.xml
<!--配置全局异常-->
<bean class="com.jc.util.CustomerExpection"></bean>
- 抛出异常(在上一篇文章文件上传的代码上抛异常)
1.1.3 结果演示
1.2 自定义异常(继承Exception类)
1.2.1 思路
- 自定义异常类继承Exception
- 改造全局异常
- 抛出异常
1.2.2 代码举例
- 自定义异常类MyException.java
public class MyException extends Exception{
private String msg;
//生成有参构造,可自定义提示信息
public MyException(String msg) {
this.msg = msg;
}
public MyException() { }
public String getMsg() { return msg; }
public void setMsg(String msg) { this.msg = msg; }
}
- 改造全局异常
- 抛出异常
1.2.3 结果演示
二、RESTful风格
2.1 概念
REST,即Representational State Transfer的缩写。对这个词组的翻译是"表现层状态转化"。
HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
RESTful架构,就是目前最流行的一种互联网软件架构,提供了一组设计原则和约束条件。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。归纳一下就是以下几点:
(1)每一个URI代表一种资源;
localhost:8080/springMVC/zhq/123
(2)客户端和服务器之间,传递这种资源的某种表现层;
json、普通文本(对contentType进行规范,即请求的数据类型)
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。
GET、POST、PUT、DELETE(对http的方法进行规范)
2.2 RESTful举例
2.2.1 tips
2.2.2 例子
HelloWorldController.java
/**
* RESTful架构
*/
@RequestMapping("rest/{username}/{password}")
public String rest(@PathVariable("username")String name,@PathVariable("password")String pwd,Model model){
if (name.equals("钟")&&pwd.equals("123")){
model.addAttribute("name",name);
return "hello";
}
return "error";
}
页面:hello.jsp
2.3 RESTful注意事项!!!
TESTful风格无后缀,故web.xml不可以配置为*.do,否则会报错找不到页面
当配置为*.do时,找到url对应的controller,Springmvc不认为url请求和@RequestMapping可以对应。