数据处理及跳转

1、ModelAndView

  • 设置ModelAndView对象,根据view的名称,和视图解析器跳到指定的页面
  • 页面: {视图解析器前缀} + viewName + {视图解析器后缀}

配置视图解析器

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

对应的controller类

package com.gt.controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//只要实现了Controller接口的类,说明这就是一个控制器了

public class ControllerTest1 implements Controller {
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {


        ModelAndView mv = new ModelAndView();
//        添加数据
        mv.addObject("msg", "ControllerTest1");

//        添加视图的名字 跳转到哪里
        mv.setViewName("test");

        return mv;
    }
}

1.1、ServletAPI

通过设置ServletAPI , 不需要视图解析器

  1. 通过HttpServletResponse进行输出
  2. 通过HttpServletResponse实现重定向
  3. 通过HttpServletResponse实现转发

(1)创建一个ModelTest1

(2)对ModelTest1进行配置

package com.gt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
public class ModelTest1 {


    @RequestMapping("/m1/t1")
    public String test1(HttpServletRequest request, HttpServletResponse response) {

        HttpSession session = request.getSession();
        System.out.println(session.getId());

        return "test";

    }

}

(3)运行,拿到了sessionid  

1.2、通过SpringMVC来实现转发和重定向 - 无需视图解析器

  • 如果有视图解析器的话,转发就直接在return写上核心位置,如果没有就需要完整的路径。
  • 重定向的话就直接redirect:/index.jsp,他会自动拼接调整,但是如果变成redirect1:/index.jsp则就会报错

(1)先要在springmvc-servlet中注解掉视图解析器

(2)返回/test.jsp

        转发

package com.gt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
public class ModelTest1 {

    @RequestMapping("/m1/t1")
    public String test1(Model model) {

        model.addAttribute("msg", "ModelTest1");
        //转发
        return "forward:/WEB-INF/jsp/test.jsp";

    }

    }

 输出结果:

重定向:

package com.gt.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Controller
public class ModelTest1 {



    @RequestMapping("/m1/t2")
    public String test2(Model model) {

        model.addAttribute("msg", "ModelTest1");
        //重定向
        return "redirect:/index.jsp";

    }

}

输出结果: 

1.3、通过SpringMVC来实现转发和重定向 - 有视图解析器

  • 重定向 , 不需要视图解析器 , 本质就是重新请求一个新地方嘛 , 所以注意路径问题.
  • 可以重定向到另外一个请求实现

(1)打开视图解析器

 (2)运行代码在ModelTest1中

    @RequestMapping("/m1/t1")
    public String test1(Model model) {

        model.addAttribute("msg", "ModelTest1");
        //转发
        return "forward:/WEB-INF/jsp/test.jsp";

        
    }

    @RequestMapping("/m1/t2")
    public String test2(Model model) {

        model.addAttribute("msg", "ModelTest1");
        //重定向
        return "redirect:/index.jsp";

    }


2、数据处理

2.1、处理提交数据

1、提交的域名称和处理方法的参数名一致

提交数据 : http://localhost:8080/hello?name=shanmu

处理方法 :

@Controller
@RequestMapping("/u1")
public class UserController {

    // http://localhost:8080/u1/t1?name=zyy
    @GetMapping("/t1")
    public String add(String name, Model model) {
        //1. 获取前端传的入参
        System.out.println("前端传的入参:" + name);
        //2. 将返回结果传输给前端 Model
        model.addAttribute("msg", name);
        //3. 视图跳转
        return "test";
    }
}

后台输出 : shanmu

2、提交的域名称和处理方法的参数名不一致(这种办法比较好@RequestParam("username"))

提交数据 : http://localhost:8080/hello?username=shanmu

处理方法 :

//@RequestParam("username") : username提交的域的名称 .
    @GetMapping("/t2")
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值