栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springmvc拓展篇

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springmvc拓展篇

 目录

1. 如何把控制层的数据渲染到页面。

2. 返回json数据。

3. 定义全局异常处理。

4. 拦截器。


1. 如何把控制层的数据渲染到页面。‘

        我们在上次博客的基础上编写代码。

首先在pom.xml文件中引入servlet的依赖

 
      javax.servlet
      servlet-api
      2.5
    

首先我们需要编写一个控制层并写入数据

 

@Controller
@RequestMapping("/hello03")
public class HelloController03 { // /*:

    @RequestMapping("/index03")
    public String index03(Model model){ //model对象可以理解为request对象。凡是在该对象中保存的数据,作用范围同一个请求有效。
        User user=new User("张三",1,"120",17,new Date());
        model.addAttribute("user",user);
        return "index03";//springmvc采用请求转发的跳转。
    }

    @RequestMapping("index04")
    public String index04(HttpServletRequest request){
        User user=new User("李四",0,"120",18,new Date());
        request.setAttribute("user2",user);
        return "index03";//springmvc采用请求转发的跳转。
    }
    ///上面两种方法的作用是一样 都是保存在request范围。
    @RequestMapping("index05")
    public String  index05(HttpSession session){
        User user=new User("王五",0,"130",19,new Date());
        session.setAttribute("user05",user);
        return "index03";
    }
}

 创建一个新的jsp页面,这里命名为index03.jsp

        在页面中回显controller层的数据

 
===================================index03.jsp===================
model:${requestScope.user}
request:${requestScope.user2}
session:${sessionScope.user05}

 测试


2. 返回json数据。

        我们在这里引入json的jar包。里面包含了json数据格式的自动转换


  com.fasterxml.jackson.core
  jackson-databind
  2.12.4

我们在之前的举例中都是返回一个字符串,springmvc网页的名字,现在返回相应的类的对象,并且加入ResponseBody注解(ResponseBody可以把java数据转换为json对象)

新建controller层

@Controller
@RequestMapping("hello04")
public class HelloController04 {

    @RequestMapping("json01")
    @ResponseBody //把java对象转换为json字符串。
    public User json01() {
        User user = new User("张三", 0, "130", 19, new Date());

        return user;
    }

}

测试

 返回多条json数据,使用List编写方法

 @RequestMapping("json02")
    @ResponseBody //把java对象转换为json字符串。
    public List json02(){
        User user=new User("张三1",0,"130",19,new Date());
        User user2=new User("张三2",0,"130",19,new Date());
        User user3=new User("张三3",0,"130",19,new Date());
        List list=new ArrayList();
        list.add(user);
        list.add(user3);
        list.add(user2);
        return list;
    }

 测试:

 补充,在测试中birthday会显示为一个时间戳

 解决办法为


3. 定义全局异常处理。

        在后台出现异常时,网页会显示一个不是很美观的错误页面,为了让用户有更好使用体验,我们可以自定义一个异常处理类,跳转至一个美观的错误页面。

自定义一个全局异常处理类

@ControllerAdvice //该类为异常处理类。
public class MyHandler {

    //ExceptionHandler异常发生时执行的方法。
    @ExceptionHandler(value = ArithmeticException.class) //如果不使用value默认处理Throwable异常。
    public String handlerException(){
        System.out.println("!~~~~~~~~~~~~~~~~~~");
        return "error";
    }

}

我们在视图层定义一个error.xml的异常跳转页面

 我们在之前json01中定义一个算数异常,经典的 int c=10/0;

测试:页面跳转至error.jsp错误页面

4. 拦截器。

拦截器:只会拦截springmvc的控制层接口路径

自定义一个拦截器类

public class MyInterceptor implements HandlerInterceptor {

    //拦截器方法。如果该方法返回true则是放行   如果返回false 则是拦截。
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~拦截器~~~~~~~~~~~~~~~~~~~~~~~");
        return true;
    }
}

把自定义的拦截器在springmvc中声明


    
        
        
        
    

 

 
     
         
         
         
     
 

运行测试:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/642882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号