package com.ray.mvc.control;
import java.io.IOException;
import java.lang.reflect.GenericDeclaration;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ray.biz.ink.Action;
import com.ray.mvc.pojo.ActionModel;
import com.ray.mvc.xmlreader.DOM4JReadXml;
import com.ray.xmldao.dao.DBConnection;
/**
* 功能:拦截所有页面的url,作为中央控制器,再根据拦截的url进行调用相应的接口与实现类,
* 根据xml的指定路径转发到不同的页面。
* @author Ray
* @createdate:2009年6月13日
* @version:1.0.0
* questinoList :
* (1)
* //实现 Action(接口) action = new 接口实现类()
* // action.method();
*
* */
public class ControlServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//截取所有页面的url
String currUrl = request.getRequestURI();
System.out.println("currUrl="+currUrl);
//截取所有页面的路径
String path=currUrl.substring(currUrl.indexOf("/", 1));
path = path.substring(0,path.indexOf("."));
System.out.println("path="+path);
DBConnection conn = new DBConnection();
//页面转向路径
String forwardUrl="";
//实例化ActionModel对象
ActionModel model = new ActionModel();
model = FindActoinModel(path);
if(model!=null&&model.getFail()!=null&&model.getSuccess()!=null){
try {
Class cls = Class.forName(model.getInkRealize());
Object obj = cls.newInstance();
Action action = (Action) obj;
boolean isExecute= action.execute (request, response);
if(isExecute){
forwardUrl = model.getSuccess();
}else{
forwardUrl = model.getFail();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
forwardUrl = "/fail.jsp";
}
//统一转向
request.getRequestDispatcher(forwardUrl).forward(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
/**
* 取得当前的ActionModel对象
* @param path
* @return ActionModel
* */
private ActionModel FindActoinModel(String path){
// 实例化ActionModel对象
ActionModel model = new ActionModel();
int flag = 0;
// 创建DOM4JReadXml 实例
DOM4JReadXml dom= new DOM4JReadXml();
List list = dom.getAttributList();
for(int i = 0; i < list.size(); i++){
model = (ActionModel)list.get(i);
//System.out.println(model.getInk());
if(model.getInput().equals(path)){
flag = 1;
break;
}
}
if(flag==1){
return model;
}else{
return null;
}
}
}
分享到:
- 2009-06-19 18:16
- 浏览 1226
- 评论(0)
- 论坛回复 / 浏览 (0 / 1543)
- 查看更多
相关推荐
自定义MVC框架是一种软件设计模式,用于组织和分离应用程序中的业务逻辑、视图呈现和数据访问层。在本案例中,我们有一个自编写的MVC框架,它模仿了Struts的功能,Struts是Java Web开发中广泛使用的开源MVC框架之一...
在自定义MVC框架中,此类库可能用于实现控制器的管理、模型和视图的交互,或者是提供了一套工具类来简化开发工作。 在自定义MVC框架时,这些库会与其他技术结合,如Servlet、JSP、Spring、Hibernate等,共同构建出...
本篇文章将深入探讨如何使用Dom4j这个XML处理库来解析`struts.xml`,以便自定义和配置Struts2框架。 Dom4j是一个灵活且功能丰富的Java库,专门用于处理XML文档。它提供了全面的API,可以方便地读取、写入、修改和...
`dom4j`是一个强大的Java XML API,它提供了一种灵活的方式来读取、写入、修改以及操作XML文档。在解析`struts.xml`时,dom4j能帮助我们高效地遍历XML节点,获取或设置属性值,以及创建对象模型来表示配置文件的结构...
在IT行业中,构建一个自定义的类似于Struts的MVC框架是一项挑战性的任务,它涉及到对Web开发模式的深入理解,以及对Java、JSP、XML解析等技术的熟练运用。Struts作为Java EE领域中著名的MVC框架,其设计思想和实现...
1. **文档对象模型(DOM)API**:DOM4J实现了完整的W3C DOM API,使得开发者可以方便地使用DOM接口来操作XML文档。 2. **简单API for XML (SAX)**:除了DOM,DOM4J还支持SAX解析器,允许在内存有限的情况下处理大型...
其他如 `antlr`、`dom4j`、`javassist` 等是 Hibernate 的依赖库,`slf4j` 用于日志,以及对应数据库驱动的 jar 包。 2. **web.xml 配置**: - 配置 `DispatcherServlet` 作为 Spring MVC 的前端控制器,负责处理...
在这个自制代码中,开发者可能用DOM4J来读取和解析框架的配置信息。 3. **JNDI (Java Naming and Directory Interface)**: JNDI是一个接口,允许Java应用程序查找和使用命名和目录服务。在Web应用中,JNDI常用来...
Hibernate 3.6.8 需要引入的 jar 包有 hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-...
这里我们关注的“mymvc自己写的ajax框架”显然是一款基于MVC(Model-View-Controller)模式构建的个人项目,它允许开发者通过Ajax技术实现页面的异步更新,提高用户体验,同时保持服务器负载均衡。以下将详细介绍...
ASP.NET MVC框架是微软开发的一款用于构建Web应用程序的开源框架,它基于模型-视图-控制器(MVC)设计模式,提供了高度可测试性、灵活性和控制力。本系列课程的第八部分专注于AJAX(Asynchronous JavaScript and XML...
* Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、antlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.GA.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-...
【标题】"APS .NET MVC4 青鸟朋友网项目"是一个基于ASP.NET MVC4技术框架开发的社交网络平台,旨在提供一个好友互动和问题解答的环境。这个项目是北大青鸟Y2阶段的教学贯穿案例,旨在帮助学生深入理解和实践MVC4的...
包括JavaScript、DOM操作、表单验证、自定义Web服务器、Servlet、JSP、内置对象、JSTL、EL、Java Bean、过滤器、监听器、自定义标签、AJAX、自定义MVC框架、Spring IOC和AOP、Spring MVC、Spring MVC核心对象和拦截...
标题中的".NET MVC 模仿Webqq"是一个项目实践,旨在使用Microsoft的.NET MVC框架来构建一个类似于WebQQ的应用程序。这个项目可以帮助开发者学习和掌握如何利用.NET MVC进行Web开发,以及实现类似即时通讯应用的功能...
“mvc加载zTree”这个标题指出我们将探讨如何在ASP.NET MVC框架下使用zTree,一个流行的JavaScript树形插件。zTree是一个轻量级、可定制且功能丰富的库,常用于构建网站的目录结构、组织树或者层级展示数据。 **...
1. **自主开发框架**:分析框架源代码,实现自己的数据验证框架,Webwork专题,以及自定义MVC框架,帮助学员深入理解JavaEE分层思想。 2. **企业常用开源组件技术**:如JFreeChart和Rchart图表生成,Log4j日志记录,...
4. **Ajax分页**:结合Spring MVC的ModelAndView或ResponseBody,实现无刷新的分页功能。 5. **错误处理**:Spring MVC可以返回错误码或自定义消息,jQuery接收到这些信息后可以显示相应的错误提示。 文件“spring...
在整合过程中,如果需要自定义Hibernate的映射文件或处理XML配置,DOM4J将是很好的工具。 总结,整合Hibernate与Struts2能够充分发挥两者的优势,简化开发流程,提高代码质量。通过深入理解这两个框架,结合实际...
例如,使用`DOMDocument`类加载XML文件,`getElementsByTagName`查找特定元素,`nodeValue`获取或设置文本内容。 - SimpleXML:这是PHP的一个内置扩展,提供了一个简单的接口来处理XML数据。它可以将XML文档转化为...