自定义MVC(下)

目录

一、前言

二、实现中央控制器动态加载存储子控制器

三、优化参数传递封装代码

四、优化方法执行结果转发||重定向

五、实现框架配置文件名可变


一、前言

继承上篇文章:自定义MVC(上)__Leaf1217的博客-CSDN博客

我们在上篇文章编写了自定义MVC框架,

但是却并不完善,这篇文章就是来接着完善我们自定义框架, 

我们首先抛出今天要完善的几个目标点!

    <!-- 
        优化点:
            1、实现中央控制器动态加载存储子控制器;
            2、优化在我们前台传递参数后的封装代码;
            3、优化方法执行后要重定向还是转发;
            4、实现框架的配置文件名可以修改。
     -->


二、实现中央控制器动态加载存储子控制器

2.1 利用建模的知识编写好配置文件

/**
  *
通过建模可以知道,最终configModel对象会包含config.xml中的所有子控制器信息
  * 同时为了解决中央控制器能够动态加载子控制器的信息,

  * 那么我们只需要引入configModel对象即可
  */

这个建模的相关资料在我前面的文章:XML建模__Leaf1217的博客-CSDN博客

不会的可以先去参考一下再来噢~

这里就不重复放过多的资料了,直接把之前的config的相关类直接复制一份到当前MVC的包下。

 就放上需要改动一点的XML文件吧:

<?xml version="1.0" encoding="UTF-8"?>

<config>
	<action path="/Book" type="com.leaf.servlet.BookAction">
		<forward name="failed" path="/reg.jsp" redirect="false" />
		<forward name="success" path="/login.jsp" redirect="true" />
	</action>
</config>

这里吧actionpath值改为了我们的测试MVC的实体类/Booktype改成请求的action全路径名。

2.2 封装configModel类并调用工厂的方法给他赋值

我们先封装一个configModel属性:

private ConfigModel configModel;

然后调用工厂类ConfigModelFactory的方法给模型configModel赋值,

从而改变子控制器定死,需要手动添加的问题:

	@Override
	public void init() throws ServletException {
		//这里是请求的servlet,暂时定死,下篇文章进行优化。
		//actions.put("/Book", new BookAction());
		try {
			configModel = ConfigModelFactory.bulid();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 2.3 拿到配置文件中的全路径名,反射实例化。

//相比于上一种从Map集合获取控制器,当前需要获取config.xml中的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_Leaf1217

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

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

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

打赏作者

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

抵扣说明:

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

余额充值