SSM框架中页面跳转问题

1.前端页面

即在不同的页面中进行点击,跳转到不同的页面中去。

jsp目录:
在WEB-INF下有一个jsp文件,这个文件里有Login和main两个页面和jsp1文件夹;Login和main两个页面是一开始的登录页面,和不同子系统页面的跳转(main.jsp)
jsp1文件夹是子系统1,里面有子系统中的几个jsp文件,index.jsp是改子系统的首页

2.Controller配置

进行页面跳转主要是Controller里面进行,即:
下面给出Controller的代码:

package MyProject.controller;
import MyProject.pojo.Category;
import MyProject.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

import org.springframework.web.bind.annotation.RequestMethod;

// 告诉spring mvc这是一个控制器类(被@Controller标示为控制器)
//自动装配了categoryService
//通过@RequestMapping映射访问路径/Page路径到方法toPage1() 。
//在toPage1() 方法中,通过categoryService获取后,然后存放在"cs"这个key上。
@Controller
@RequestMapping("")
public class PageController {
	@Autowired
	CategoryService categoryService;

    @RequestMapping(value = "/Login", method = RequestMethod.GET)
    public ModelAndView toLogin() {
        ModelAndView mv = new ModelAndView("Login");
        return mv;
    }
    @RequestMapping(value = "/main", method = RequestMethod.GET)
    public ModelAndView toMain() {
        ModelAndView mv = new ModelAndView("main");
        return mv;
    }

    @RequestMapping(value = "/jsp1/index", method = RequestMethod.GET)
    public ModelAndView toIndex() {
        ModelAndView mv = new ModelAndView("jsp1/index");
        List<Category> cs0= categoryService.list();
        mv.addObject("cs0", cs0);
        return mv;
    }

	@RequestMapping(value = "/jsp1/Page", method = RequestMethod.GET)
	public ModelAndView toPage1() {
		ModelAndView mv = new ModelAndView("jsp1/Page1");
		List<Category> cs= categoryService.list();
		mv.addObject("cs", cs);
		return mv;
	}
    }
}

3.controller代码解释

- 主映射路径
@RequestMapping("")
括号中为空, 这个映射的是当下项目下的WEB-IF/jsp目录,如果括号中写了其他的路径,记得在跳转和访问的时候会不一样,记得加上你自己的路径
这个映射到这应该是和springMVC.xml文件下这个部分视图定位有关的:
在这里插入图片描述
- jsp访问

 @RequestMapping(value = "/Login", method = RequestMethod.GET)
    public ModelAndView toLogin() {
        ModelAndView mv = new ModelAndView("Login");
        return mv;
    }
  1. @RequestMapping中的value值对应要拦截的request请求,只要请求中包含value的值,就会执行注解下对应的方法;给出映射值value = "/Login",即指的是WEB-IF/jsp/下的Login文件;
  2. 采用ModelAndView创建toLogin() 跳转函数,创建对象时,直接给出对应得值Login,注意不要加上.jsp,要加的话在前端页面上也要加上,访问路径上也要有;因为@RequestMapping("/Login")的controller可以通过/index或者/index.xxxx进行访问;@RequestMapping("/Login.jsp")只能通过/Login.jsp进行访问。

访问Login页面的链接为:

http://localhost:8080/DemoProject/Login

ModelAndView 理解:
当控制器处理完请求后,通常会将ModelAndView对象返回到DispatcherServlet,因此,经常需要在控制器中构造ModelAndView对象。

  • 可以通过ModelAndView构造方法直接指定返回的页面名称
    在这里插入图片描述
  • 也可以通过setViewName()方法跳转到指定的页面
  • 使用addObject()设置需要返回的值
    在这里插入图片描述
    这个参数会在index.jsp页面文件中使用,传给参数c:
    在这里插入图片描述
    c.id,c.a,c.b,c.c这个几个参数要和pojo中的Category.java中定义的参数一致。
    PS:参数c要使用记得在文件前面加上<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

- jsp跳转

下面是跳转到jsp1下的index文件:

    @RequestMapping(value = "/jsp1/index", method = RequestMethod.GET)
    public ModelAndView toIndex() {
        ModelAndView mv = new ModelAndView("jsp1/index");
        List<Category> cs0= categoryService.list();
        mv.addObject("cs0", cs0);
        return mv;
    }

上面是一致的,但是要跳到index中的前端页面:
在这里插入图片描述
这是从TrunkingShow.jsp通信频次分析出跳转到的index,因为在同一子文件夹下,使用href="./index"即可,但如果要跳转回上一级目录的main页面中,需要href="../main"

直接访问index页面的路径即http://localhost:8080/DemoProject/jsp1/index

PS:以上的所有文字理解是个人学习到这的理解,如果有误可以直接联系我,不一定保证是对的哈~但是按照这个做法是达到我当时的要求了的

参考链接:
https://blog.csdn.net/weixin_42592613/article/details/83048648
https://blog.csdn.net/qq_36306340/article/details/78542918

原创文章 37 获赞 5 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Yolandalt7777777/article/details/90405949