XML增删查改

思维导图

1.解决自控制器初始化的问题
改动init中代码
 减少代码改动风险性
 减少代码编译次数(对于已经部署到服务器后)
解决方案:
改成自控制器可配置
解决步骤:
1.必须要有配置文件config.xml
2.配置文件config.xml中要包含处理业务的子控制器
3.读取到配置文件config.xml中对应的处理游览器请求的子控制器

如图,以前需要写多个put方法

2.解决参数实体类封装的问题
解决参数实体类封装的问题
        /*
         * 缺陷:对于前端传参,实体类属性值封装req.getParammeter("")代码 是重复的
         * 需求:做一个book的新增功能
         * 思考:将JSP参数塞进实体类的属性中,问题是每个实体类的属性是不一样的,没办法做到代码的完全重复
         * 思路:
         *     不知道是哪一个实体类->泛型T
         *     不知道这个实体类有哪些属性,但是又要给这些属性赋值->反射动态设置属性值
         * 解决:泛型+反射
         * 编码:
         *     模型驱动接口:ModelDriver
         */

如图以前设置需要写多个set方法

 需求:删除数据后跳转到书籍展示页面
         * 缺陷:1.出现大量重复代码    2.不好管理(增删改重新跳转到查询界面)
         * 解决方案:在一个地方统一管理重定向还是转发,并且是定位跳转到哪一个页面
         * 预测结果
         *     BookAction调用bookDao.delete()...
         *     BookAction调用bookDao.list()...

如图以前需要在这里面转发或重定向

Book类

package com.lj.entity;

public class Book {
	private String bid;
	private String bname;
	private String price;
	private String author;
	private String publish;
	private String remark;
	public String getBid() {
		return bid;
	}
	public void setBid(String bid) {
		this.bid = bid;
	}
	public String getBname() {
		return bname;
	}
	public void setBname(String bname) {
		this.bname = bname;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public String getPublish() {
		return publish;
	}
	public void setPublish(String publish) {
		this.publish = publish;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	@Override
	public String toString() {
		return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + ", author=" + author + ", publish="
				+ publish + ", remark=" + remark + "]";
	}
	
}

ActionModel类

package com.lj.framework;

import java.util.HashMap;
import java.util.Map;

public class ActionModel {
//	<action path="/regAction" type="test.RegAction">
	private String path;
	private String type;
	private Map<String, ForwardModel> fMap = new HashMap<>();
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		this.path = path;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
//	ѹջ
	public void push(ForwardModel forwardModel) {
		fMap.put(forwardModel.getName(), forwardModel);
	}
//	��ջ
	public ForwardModel pop(String name) {
		return fMap.get(name);
	}
}

ActionSupport类

package com.lj.framework;

import java.lang.reflect.Method;

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

public class ActionSupport implements Action {

	@Override
	public String execute(HttpServletRequest req, HttpServletResponse resp) {
		String methodName = req.getParameter("methodName");
		String res = null;
		try {
			Method m = this.getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
			m.setAccessible(true);
			res = (String) m.invoke(this, req, resp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return res;
	}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值