.@RequestMapping映射

该注解中存的是映射路径的字符串

  1.1 value的值是一个数组,也就是说可以定义多个访问路径,同时“.action”可以省略,前端控制器中主要查找主体部分。注意在前端页面访问时必须要加上“.action”。

  1.2 method表示前端请求的方法,必须要存在POST,当然此属性可以不设置,默认所有都可以。

  1.3 此注解还可以出现在类前面,表示该类中所有的方法访问路径都需要加上/item,以此区别不同控制器中的方法

2.Controllre中方法返回值

  1. //查询该id的数据
  2. @RequestMapping(value="/itemEdit.action")
  3. public ModelAndView test2(HttpServletRequest request,Integer id){
  4.  
  5. //获取页面传递的id
  6. String str = request.getParameter("id");
  7. //Integer id = Integer.parseInt(str);
  8. //调用service获取items
  9. Items items = itemsService.findItemsById(id);
  10.  
  11. //返回页面
  12. ModelAndView mv = new ModelAndView();
  13. mv.addObject("item", items);
  14. mv.setViewName("editItem");
  15. return mv;
  16. }
  • ModelAndView,返回类型是一个页面视图,将查询的数据通过add*方法添加,setViewName将页面进行绑定,该类型将数据与视图混合,适用于普遍情况。
  1. //更新修改的信息
  2. @RequestMapping(value = "/voidTest.action")
  3. public void test5(Items items,Model model,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
  4. //条件修改
  5. itemsService.updateItems(items);
  6.  
  7. model.addAttribute("model", "model");
  8.  
  9. request.getRequestDispatcher("success").forward(request, response);
  10.  
  11. }
  • void,同样可以通过model类传递数据,跳转页面时就需要采用原始的Servlet方式,上面是转发模式。该类型主要用于不需要跳转视图,例如Ajax的数据处理
  1. @RequestMapping(value="queryItem.action")
  2. public String test4(Integer[] ids,Model model){
  3.  
  4. System.out.println(ids[0]);
  5.  
  6. model.addAttribute("model", "model");
  7. //return "redirect:/itemEdit.action?itemId=" + ids[0];
  8. //return "forward:/itemEdit.action";
  9. return "success";
  10. }
  • String,官方推荐使用这种模式,它的优点在于将视图与数据分离、解耦,符合三层结构的思想。返回的字符串需是jsp页面或者.action,可以采用转发和重定向的方式。默认是转发。(转发和重定向的区别这里不多说了,简单来说,转发是一次请求不会对视request数据,重定向两次请求,request数据丢失)

3.异常处理

  3.1 springmvc的异常处理模式

  如图所示,一旦出现异常spring会一直向上抛,当到前端控制器时,spring会把异常转交给异常处理器(HandlerExceptionResolver),这是一个接口,需要自己实现一个类,同时该类需要在springmvc中注册才能被使用。
  异常分为两种,执行异常(不可知异常)与预期异常

  3.2  构建自定义异常处理器
    首先有一下几个步骤,创建自定义异常类->创建自定义异常处理器,用于方便返回需要的异常信息。
    异常类:没有过多地添加属性,只是简单的封装。

  1. public class MyException extends Exception {
  2. // 异常信息
  3. private String message;
  4.  
  5. public MyException() {
  6. super();
  7. }
  8.  
  9. public MyException(String message) {
  10. super();
  11. this.message = message;
  12. }
  13.  
  14. public String getMessage() {
  15. return message;
  16. }
  17.  
  18. public void setMessage(String message) {
  19. this.message = message;
  20. }
  21.  
  22. }

    异常处理器:

  1. public class MyHandlerExceptionResolver implements HandlerExceptionResolver {
  2.  
  3. @Override
  4. public ModelAndView resolveException(HttpServletRequest request,
  5. HttpServletResponse response, Object obj,
  6. Exception e) {
  7.  
  8. String msg;
  9.  
  10. //预期异常
  11. if(e instanceof MyException){
  12. msg = e.getMessage();
  13. }else {
  14. // 如果是运行时异常,则取错误堆栈,从堆栈中获取异常信息
  15. Writer out = new StringWriter();
  16. PrintWriter s = new PrintWriter(out);
  17. e.printStackTrace(s);
  18. msg = out.toString();
  19. }
  20.  
  21. // 返回错误页面,给用户友好页面显示错误信息
  22. ModelAndView modelAndView = new ModelAndView();
  23. modelAndView.addObject("msg", msg);
  24. modelAndView.setViewName("error");
  25.  
  26. return modelAndView;
  27.  
  28. }
  29.  
  30. }

    其中,Object表示异常的具体位置,由全路径表示。

  3.3 配置
  <!-- 配置异常处理器 --> <bean id="myHandler" class="com.springmvc.exception.MyHandlerExceptionResolver"></bean>

 SHAPE
 \* MERGEFORMAT

springmvc中Controller前端控制器的映射与返回数据,以及异常处理的更多相关文章

  1. springMVC中controller的几种返回类型

    ==网文1,还不错,感觉比较老旧springMVC中controller的几种返回类型 - CSDN博客http://blog.csdn.net/qq_16071145/article/details ...

  2. springmvc 中controller与jsp传值

    参考:springmvc 中controller与jsp传值 springMVC:将controller中数据传递到jsp页面 jsp中,死活拿不到controller中的变量. 花了半天,网上列出各 ...

  3. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

  4. SpringMVC中Controller

    详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] 目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodR ...

  5. 详解SpringMVC中Controller的方法中参数的工作原理——基于maven

    转自:http://www.tuicool.com/articles/F7byQn 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:ht ...

  6. SpringMVC中controller返回图片(转)

    本文转自:http://blog.csdn.net/u011637069/article/details/51112187 SpringMVC中controller通过返回ModelAndView然后 ...

  7. 【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/spring ...

  8. SpringMVC中@Controller和@RequestMapping用法和其他常用注解

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

  9. SpringMVC中@Controller和@RequestMapping用法和其他常用注解(转)

    一.简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Mo ...

随机推荐

  1. 洛谷p1208 水题贪心 思想入门

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  2. win7 wifi sharing

    1.启用并设定虚拟WiFi网卡: netsh wlan set hostednetwork mode=allow ssid=mywifi key=12345678 此命令有三个参数,mode:是否启用 ...

  3. [转] spark-submit 提交任务及参数说明

    [From] https://www.cnblogs.com/weiweifeng/p/8073553.html#undefined spark-submit 可以提交任务到 spark 集群执行,也 ...

  4. Mac 10.12安装远程桌面工具TeamViewer

    说明:个人使用时免费的,虽然启动时有弹框,但是不影响使用. 下载: https://www.teamviewer.com/zhCN/

  5. SpringBoot项目中加入jsp页面

    根据我们之前搭建好的SpringBoot+SSm的项目的基础上,来增加webapp/WEB-INF的文件,由此来完成jsp页面的跳转. 先增加jsp的pom依赖: <!-- https://mv ...

  6. AngularJS Eclipse Plugin

    本文介绍如何安装和配置 AngularJS Eclipse.AngularJS Eclipse 插件是基于强大的 JavaScript 推断引擎(javascript inference engine ...

  7. 微服务Kong(五)——添加一个用户(Consumer)

    在本节中,我们将学习如何添加一个用户(consumer)到KONG实例中.用户是与使用您的API的个人相关联,可用于跟踪,访问管理等. NOTE:本节假设您已经正确启用了密钥验证插件.如果没有,请参考 ...

  8. PHP之string之implode()函数使用

    implode (PHP 4, PHP 5, PHP 7) implode - Join array elements with a string implode - 将一个一维数组的值转化为字符串 ...

  9. IntelliJ IDEA 转移 C盘.IntelliJIdea 索引目录

    IntelliJ IDEA 索引目录默认路径是  C:\Users\用户\.IntelliJIdea 转移步骤 1. 将  C:\Users\用户\.IntelliJIdea 索引目录剪切到要移动到的 ...

  10. [转] sqlserver 中查看trigger的disabled/enabled情况

    本文转自:http://blog.csdn.net/miqi770/article/details/48708199 SELECT t.name AS TableName, tr.name AS Tr ...