Spring异常处理和Rest
Spring的异常处理
-
配置一个系统提供的异常处理器
出现什么异常就跳转到对应的页面<bean id="exceptionResolver class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="java.lang.Exception">error2</prop> <prop key="java.lang.RunTimeException">error1</prop> </props> </property> </bean>
-
自定义异常处理器–(全局异常)
实现HandlerExceptionResolver接口,让对应的异常跳转到对应的页面@Override public ModelAndView resolverException(HttpServletRequest arg0,HttpServletResponse arg1,Obbject arg2,Exception e){ ModelAndView mav = new ModelAndview(); if(e instanceof RuntimeException){ mav.setViewName("error"); }else if(e intstanceof Exception){ mav.setViewName("error2"); } return mav; }
-
局部异常处理
只针对一个具体的控制器起作用(异常方法中Exception的参数必须有)@ExceptionHandler public String foo(Exception e){ System.out.println(e.getMessage()); return "error3"; }
-
文件上传
4.1 写一个文件上传的页面注意三点:
第一必须以post方式提交 ,第二设置编码方式 entype=“multipart/form-data”,第三 type=“file”
4.2 编写一个文件上传的控制器接收文件数据和非文件数据,这个控制器需要依赖于文件解析器,文件解析器又依赖于文件上传的jar 包。<!--文件解析器--> <bean id="multipartResolver",class="org.springframe.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10240"></property> <property name="resolverlazily" value="true"></property>//延迟处理 </bean>
-
SpringMVC的控制器方法如何返回JSON?
5.1 单建一个基于标注的mvc
5.2 在控制器中编写一个控制器方法@RequestMapping("/请求的路径") public 要转换JSON的数据类型 方法名任意(参数任意){}
5.3 为了处理返回的数据为JSON需要加一个@ReponseBody ,这个标注依赖于JSO的转换包。
@ReponseBody(把数据转换成JSON,同时告知mvc返回值不要经过视图处理器)。 -
如何返回多个对象对应的JSON?
@RequesMapping("/login3.do") @ReponseBody public Map<Stirng,Object> Login3(String acc_no,String acc_password){ Map<String,Object> res =new HashMap<String,Object>(); if("abc".equals(acc_no)&&"123".equals(acc_password)){ XdlBankAccount account = new XdlBankAccount(0,acc_no,acc_password,1); res.put("account",account); return res; } res.put("account",null); return res; }
-
什么是rest?
REST即表述性状态传递(Representational state Transfer,简称REST)
是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。
这个软加架构基于Http协议,它可以提高系统的可伸缩性,降低应用之间的耦合度,便于分布式应用程序的开发。 -
rest的两个核心规范
定位资源的url做了限定:把原来的基于操作的设计改成了基于资源的设计
对资源的操作做了限定: Http协议的请求方式上 Get用来查询,Post用来增加,put更新,Delete删除 -
什么是restful?
符合rest 风格和约束的应用程序叫restful -
SpringMVC对rest的支持
10.1 搭建一个基于标注的mvc
10.2 在控制器方法上支持对应的请求方式@RequestMapping(value="/account/{变量名}",method="RequestMenthod.GET")
10.3 获取路径变量上的值
@PathVariable("路径变量名") 加载控制器参数上
10.4 rest请求的路径是没有后缀的,所以需要把DisatcherServlet中的url-pattern改成支持所有请求的 /
10.5 如果改成 / 则所有的静态资源被拦截<!--放行静态资源--> <mvc:default-servlet-handler/> web.xml中配置 <servlet-mapping> <servlet-name>default</servlet-mapping> <url-pattern>*.js</url-pattern>//放行js静态资源 </servlet-mapping>
上一篇: zookeeper集群搭建
下一篇: Java主流锁