2. SpringMVC使用

本文详细介绍了SpringMVC中数据如何从Controller返回到网页并回显,包括使用Model和Session的方式。同时,讲解了重定向跳转的实现、通过ResponseBody返回JSON数据的方法,以及全局异常处理类的配置。最后,阐述了SpringMVC拦截器的创建和注册过程,展示了其在处理用户请求中的作用。
摘要由CSDN通过智能技术生成

目录

1. controller数据返回到网页并回显

2. 重定向跳转 

3. SpringMVC返回json数据 

4. SpringMVC全局异常处理类

5. SpringMVC拦截器


1. controller数据返回到网页并回显

        之前使用Sevlet时,我们的网页获取保存的数据呢:可以使用EL表达式。

        其中 request: 作用范围: 同一个请求内有效。setAttribute(key,value)

                session:作用范围: 同一个会话有效,只要会话不关闭会一直有效。setAttribute(key,value)

在SpringMVC也可以使用

request请求

    @RequestMapping("/list01")
    public String list(HttpServletRequest request){
        //查询到一个学生信息。
        Student student=new Student(1,"lcy",new Date());
        //可以保存到request中,同一个请求
        request.setAttribute("s",student);
        return "list01.jsp"; //转发
    }

但是如果你使用request,你和tomcat容器绑定了。 但SpringMVC中提过了Model

Model是每次请求中都存在的默认参数,利用其addAttribute()方法即可将服务器的值传递到jsp页面中

    @RequestMapping("/list01")
    public String list(Model model){
        //查询到一个学生信息。
        Student student=new Student(1,"lcy",new Date());
        //可以保存到Model中,同request一样
        request.setAttribute("s",student);
        return "list01.jsp"; //转发
    }

        Session也是如此

         但是Model默认时request范围,这时需要我们在类的头上添加注解

        @SessionAttributes(value = {"user"})

    //保存到session范围。
    @RequestMapping("/list03")
    public String list3(HttpSession session){
        Student student=new Student(1,"lcy",new Date());
        session.setAttribute("user",student);
        return "list03.jsp"; //转发
    }

    @RequestMapping("/list04")
    public String  list4( Model model){
        Student student=new Student(1,"lcy",new Date());
        model.addAttribute("user",student);//默认在request范围
        //@SessionAttributes(value = {"user"})
        return "list04.jsp"; //转发
    }

2. 重定向跳转 

        在方法的返回字符串的内容时加上redirect:,即为重定向跳转

    @RequestMapping("list05")
    public String list05(){
        return "redirect:list.jsp"; 
        //当springmvc看到你返回的字符串钟含有redirect:时会进行重定向跳转
    }

3. SpringMVC返回json数据 

        当进行异步请求时(Ajax)需要返回json数据,在Servlet中,借助Fastjson,手动的把java对象转化为json格式的数据,并使用out.print(json)输出json数据,然后在关闭out对象。(麻烦)

        但在SpringMVC中,有一个内置 名为jackson的jar包,可以把java对象转换为json对象,我们只需要引入依赖即可。

        (1)引入jackson依赖

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.2.2</version>
    </dependency>

        (2) 在类头添加注解 @ResponseBody(作用:把java对象转换为json对象)

    @RequestMapping("json01")
    @ResponseBody
    public List<Student> json01(){ 
        List<Student> list=new ArrayList<Student>();
        list.add(new Student(1,"lcy",new Date()));
        list.add(new Student(2,"zyf",new Date()));
        return list; 
    }

        其中,把时间类转发为json格式,须在属性上面添加注解@JsonFormat(pattern="yyyy-MM-dd") 

4. SpringMVC全局异常处理类

        当Controller类发生异常时,全局异常类执行处理方法

        创建一个异常类: 在类头添加@ControllerAdvice注解

@ControllerAdvice 
public class MyExceptinHandle {

    @ExceptionHandler(value = Exception.class) //当发生Exception就会触发该方法
    public String error(){
        return "error.jsp";
    }
}

        (2)在SpringMVC配置文件中也要添加包扫描,保证SpringMVC能够扫描到该类

<context:component-scan base-package="com.lcy.controller, com.lcy.handler" />

5. SpringMVC拦截器

         SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。

        (1)创建类并实现HandlerInterceptor

public class MyInterceptor implements HandlerInterceptor {

    //拦截器的处理方法。
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("经过了该拦截器");

        return true;//true:表示拦截器放行 false:不放行
    }
}

        (2)在springmvc配置文件上进行注册。

<!--拦截器的配置-->
    <mvc:interceptors>
        <mvc:interceptor>
            <!--mapping:哪些路径需要经过拦截器 /**: 表示n层路径 /*:表示一层路径-->
            <mvc:mapping path="/**"/>
            <!--exclude-mapping:设置不经过该拦截的路径-->
            <mvc:exclude-mapping path="/login"/>
            <!--bean表示你自定义的拦截器类路径-->
            <bean class="com.ykq.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝可乐的灵麟鲤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值