请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

路由派发的问题

翔仔老师你好,对于这个章节我有些疑问,在最后的视频中,我们通过if判断用户的请求路径及方法,并获取到的路径和方法分别调用不同的controller,但是这些路径都是我们自己建立的,所以我们代码中可以这样写,如果是提供给别人使用的话,是如何知道使用者到底需要调用的是哪个controller呢?

正在回答

1回答

同学好,就和Spring一样,我们只是提供框架的基础服务,让用户遵循我们的规范来进行配置,因为只有用户才能知道他们业务上需要调用什么样的服务,所以他们得配置好。然后框架就会自动按照他们的配置进行路由。比如spring里面,可以看看我第一门课程有如下代码。

package com.imooc.o2o.web.frontend;

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

@Controller
@RequestMapping("/frontend")
public class FrontendController {

	/**
	 * 首页路由
	 * 
	 * @return
	 */
	@RequestMapping(value = "/index", method = RequestMethod.GET)
	private String index() {
		return "frontend/index";
	}

	/**
	 * 商品列表页路由
	 * 
	 * @return
	 */
	@RequestMapping(value = "/shoplist", method = RequestMethod.GET)
	private String showShopList() {
		return "frontend/shoplist";
	}

	/**
	 * 店铺详情页路由
	 * 
	 * @return
	 */
	@RequestMapping(value = "/shopdetail", method = RequestMethod.GET)
	private String showShopDetail() {
		return "frontend/shopdetail";
	}

	/**
	 * 商品详情页路由
	 * 
	 * @return
	 */
	@RequestMapping(value = "/productdetail", method = RequestMethod.GET)
	private String showProductDetail() {
		return "frontend/productdetail";
	}
}

这段代码就是用户引入spring框架后,通过注解设置上,针对不同请求路径,转发到特定的controller进行处理。所以我们管不了他们的业务,但是我们能协助他们完成业务:)

0 回复 有任何疑惑可以回复我~
  • 提问者 无心铁憨憨 #1
    老师,我还是有点不明白,假设,我们现在自己研发出了一条框架并提供给别人使用,在框架的机制里面,所有的请求都被统一的拦截,然后根据他们的路径转发到不同的controller中,但是,在课程示例中,servletPath只能获取到包名及方法名,但同一个包下可能有多个controller,框架的提供者是如何知道具体转发到哪个controller中呢?
    回复 有任何疑惑可以回复我~ 2020-02-26 00:08:13
  • 翔仔 回复 提问者 无心铁憨憨 #2
    同学好,不是呢,并非只能获取到包名,咱们的requestPath 也就是url是类似 /shopadmin/adduser这种,则我们可以规定是调用了shopadmin类下面的adduser方法,通过反射去获取即可呢,后续,咱们在讲解自研框架mvc实现的时候,会专门去讲解的,到时候同学会更明白了。
    回复 有任何疑惑可以回复我~ 2020-02-26 00:44:37
  • 翔仔 回复 提问者 无心铁憨憨 #3
    比如说我们可以定义一个类,类里面有三个成员变量,一个是class 一个是class需要调用的方法 另外一个是请求路径
    这样就能建立起三者的映射了呢,之后,只要是这个路径的,按照一定规则,就能解析出是某个类里面的某个方法:)
    回复 有任何疑惑可以回复我~ 2020-02-26 01:07:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信