思维导图由上可见
问题:解决实体类封装问题?
例如:不知道实体类的类名和其属性;
解决方法:在子控制器中写
?? ??? ???ActionSupport ?action = (ActionSupport) Class.forName(type).newInstance(); //实例化? ?? ??? ??? ?if(action instanceof ModelDriver) { ?//判断action是否继承ModelDriver接口 ?? ??? ??? ??? ?ModelDriver m = (ModelDriver) action; ?? ??? ??? ??? ?Object obj = m.getMode(); //拿到对象 //?? ??? ??? ??? ?有对象就接收所有的前端JSP传递到后台的参数 ?? ??? ??? ??? ?Map<String, String[]> parameterMap = req.getParameterMap(); //?? ??? ??? ??? ?对 obj对象 赋值 ?? ??? ??? ??? ?BeanUtils.populate(obj, parameterMap);//把所有的参数赋值给obj对象 ?? ??? ??? ?}
?
?
?这样写好处在于:需要更改实体类属性时只需要更改jsp页面代码和实体类属性代码即可?
问题:解决转发和重定向代码重复
思路:?? ??? ??? ? * 1.方法执行完毕必须有一个返回值 ?? ??? ??? ? * 2.通过返回值决定是否重定向,还是转发 ?? ??? ??? ? * 3.通过返回值决定跳转哪一个页面
代码:
?? ??? ??? ?String res = action.execute(req, resp);? //拿到返回值 ?? ??? ??? ?ForwardModel forwardModel = actionModel.pop(res); ?? ??? ??? ?if(forwardModel.isRedirect()) { //判断是否重定向还是转发 ?? ??? ??? ??? ?resp.sendRedirect(req.getContextPath()+forwardModel.getPath()); ?? ??? ??? ?}else { ?? ??? ??? ??? ?req.getRequestDispatcher(forwardModel.getPath()).forward(req, resp); ?? ??? ??? ?}
?
?
?
|