`
- 浏览:
221879 次
- 性别:
- 来自:
大连
-
java 代码
- package com.viwo.web.acion;
-
- import java.io.File;
- import java.io.IOException;
- import java.lang.reflect.Method;
- import java.util.Map;
-
- import javax.servlet.RequestDispatcher;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
-
- import org.apache.commons.digester.Digester;
- import org.apache.log4j.Logger;
- import org.xml.sax.SAXException;
-
- import com.viwo.web.config.ConfigAction;
- import com.viwo.web.config.ConfigForward;
- import com.viwo.web.config.ViwoConfig;
-
-
-
-
-
-
-
- public class ViwoServlet extends HttpServlet {
-
- private final static Logger logger = Logger.getLogger(ViwoServlet.class);
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- process(request, response);
-
- }
-
- public void doPost(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
-
- process(request, response);
-
- }
-
-
-
-
-
-
-
-
-
-
-
-
- protected void process(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
- String config = getServletConfig().getInitParameter("config");
- String template = getServletConfig().getInitParameter("template");
- logger.info("[viwo]-->[enter process]-->[config:]"+config);
-
- String forward = "";
- Object returnValue = null;
- String url = request.getRealPath(config);
- logger.debug("[viwo]-->[process]-->[url:]"+url);
-
- String requestURI = request.getRequestURI();
- int lastdot = requestURI.lastIndexOf(".");
- int lastbias = requestURI.lastIndexOf("/");
- int lastbiasbutone = requestURI.lastIndexOf("/",lastbias-1);
- String method = requestURI.substring(lastbias+1,lastdot);
- String action = requestURI.substring(lastbiasbutone+1,lastbias);
- Object actionObject = null;
- try
- {
- ViwoConfig viwoConfig = getViwoConfig(url);
- Map cfgActionMap = viwoConfig.getActionMap();
- Map cfgForwardMap = viwoConfig.getForwardMap();
-
- if(cfgActionMap.get(action)!=null)
- {
- ConfigAction ca = (ConfigAction)cfgActionMap.get(action);
- action = ca.getType();
- }
-
- actionObject = Class.forName(action).newInstance();
- Method m = getMethod(actionObject,method);
- if(m != null)
- {
- returnValue = m.invoke(actionObject,new Object[]{request,response});
-
- if(returnValue==null)
- return;
-
- if(template!=null)
- forward = "/"+returnValue+"."+template;
- else
- forward = "/"+returnValue+".jsp";
-
- if(cfgForwardMap.get(returnValue)!=null)
- {
- ConfigForward cf = (ConfigForward)cfgForwardMap.get(returnValue);
- forward = cf.getPath();
- }
-
- logger.debug("[viwo]-->[process]-->[forward:]"+forward);
- RequestDispatcher rd = getServletContext().getRequestDispatcher(forward);
- rd.forward(request, response);
- }
- else
- {
- logger.error("[viwo]-->[process]-->"+"There haven't the "+method+" Method,Please check URL!");
- response.getWriter().print("There haven't the "+method+" Method,Please check URL!");
- }
-
- }
- catch (ClassNotFoundException e)
- {
- logger.error("[viwo]-->[process]-->"+"There haven't the "+action+" Class,Please check URL!");
- response.getWriter().print("There haven't the "+action+" Class,Please check URL!");
- }
- catch (NoClassDefFoundError e)
- {
- logger.error("[viwo]-->[process]-->"+"There haven't the "+action+" Class,Please check URL!");
- response.getWriter().print("There haven't the "+action+" Class,Please check URL!");
- }
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- logger.error("[viwo]-->[process]-->"+e.getMessage());
- }
-
- }
-
-
-
-
-
-
-
-
-
- private ViwoConfig getViwoConfig(String url) throws IOException, SAXException
- {
- Digester digester = new Digester();
- digester.setValidating(false);
- digester.addObjectCreate("viwo-config", "com.viwo.web.config.ViwoConfig");
-
- digester.addObjectCreate("viwo-config/action", "com.viwo.web.config.ConfigAction");
- digester.addSetProperties("viwo-config/action");
- digester.addSetNext("viwo-config/action", "addAction", "com.viwo.web.config.ConfigAction");
-
- digester.addObjectCreate("viwo-config/forward", "com.viwo.web.config.ConfigForward");
- digester.addSetProperties("viwo-config/forward");
- digester.addSetNext("viwo-config/forward", "addForward", "com.viwo.web.config.ConfigForward");
- ViwoConfig viwoConfig = (ViwoConfig) digester.parse(new File(url));
- return viwoConfig;
-
- }
-
-
-
-
-
-
-
-
- private Method getMethod(Object actionObject,String method)
- throws IOException
- {
-
- Method[] methods = actionObject.getClass().getMethods();
- if(methods==null||methods.length==0)
- {
- return null;
- }
- for(int i=0;i {
- if(methods[i].getName().equals(method))
- return methods[i];
- }
- return null;
-
- }
-
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在这个“struts简易留言板效果”的项目中,我们可以深入理解Struts框架如何与数据库交互,以及如何实现用户界面的动态展示。 首先,我们要知道Struts框架的核心是ActionServlet,它是Servlet的一个扩展,负责接收...
在"struts简易增删改查"这个主题中,我们将探讨如何使用Struts框架来实现一个基本的数据操作功能,包括添加(Add)、删除(Delete)、修改(Update)和查询(Search)数据。这些功能是任何数据库驱动的应用程序的...
本源码提供的是一个基于Struts框架开发的简易BBS论坛社区,其设计简洁,适合初学者学习和理解Struts的工作原理以及Web应用开发的基本流程。 在Struts框架中,主要包含以下几个核心组件: 1. **ActionServlet**:这...
Struts简易论坛是一款基于Struts框架开发的在线讨论平台,非常适合初学者学习和研究Web应用程序的构建。Struts是Apache软件基金会的一个开源项目,它是一个用于构建MVC(Model-View-Controller)模式的Java Web应用...
在"自己实现的struts1简易框架"中,我们看到作者试图创建一个简化版的Struts1实现,以便更好地理解和掌握其核心机制。以下是对该简易框架中涉及的关键知识点的详细解释: 1. **配置Action**: 在Struts1中,Action是...
在本项目"struts简易留言本"中,我们可以通过学习和理解来掌握Struts如何用于创建一个简单的Web应用程序,特别是处理用户交互和数据管理。 首先,让我们了解Struts框架的核心概念: 1. **Action类**:在Struts中,...
在这个简易门票销售系统中,Struts框架扮演了核心架构的角色,帮助开发者组织和协调各个组件,实现业务逻辑与视图的分离。 1. **MVC设计模式**:MVC模式是软件工程中的一种设计模式,它将应用分为模型(Model)、...
标题 "spring3+hibernate3+struts2实现简易后台菜单控制" 涉及的是一个基于Java Web的经典技术栈构建的后台管理系统。这个系统利用Spring 3作为整体框架,提供依赖注入和AOP(面向切面编程)功能;Hibernate 3作为...
本项目利用Struts2与MySQL数据库结合,实现了一个简易的学生成绩管理系统,旨在帮助初学者了解如何在实际项目中应用这两个技术。 在Struts2框架中,控制器负责接收用户的请求,通过Action类处理业务逻辑,并将结果...
【简易个人博客平台 struts+mybatis实现】 本项目是一个基于Java技术栈的简易个人博客平台,主要利用了Struts2框架与MyBatis持久层框架进行开发。这个平台适用于初学者作为学习实践的实例,它包含了一些基本的CSS...
Struts是Apache软件基金会的一个...同时,你还能看到如何整合数据库和Struts,实现数据的增删查改。这将帮助你建立起一个关于MVC(Model-View-Controller)架构的直观理解,并为后续更复杂的企业级应用开发打下基础。
这个"javaweb的struts2银行简易系统"的实现,不仅可以帮助开发者理解Struts2框架的基本使用,还可以深入学习如何在实际项目中结合银行业务逻辑来设计和实现Web应用。通过这个系统,你可以实践如何组织Action、配置...
在这个“Struts2简易计算器”项目中,我们可以看到一个基础的JavaEE入门级编程练习,它展示了如何利用Struts2框架来实现一个简单的计算器功能。 首先,Struts2框架的核心在于它提供了控制器组件,用于处理HTTP请求...
本资源通过使用Struts2来实现一个简单的计算器应用,旨在帮助学习者理解如何在实际项目中应用Struts2的核心概念和技术。 首先,我们需要理解Struts2的基本架构。Struts2框架的核心是Action类,它是业务逻辑的载体。...
struts+SmartUpload实现的一个简易上传下载系统,此系统的主要代码已经放到俺博客上了,欢迎访问 “http://blog.csdn.net/zxingchao2009/archive/2010/09/08/5872106.aspx”
Struts是一个开源的Java EE框架,它主要用于构建和维护可扩展、模块化和易于管理的Web应用程序。这个“struts小例子 - 简单的计算器”是一个基础的示例,用于展示Struts框架如何在实际应用中工作,特别是如何处理...
这个简易文档,"Struts2.0开发指南",将引领我们深入理解Struts2的核心概念和实践方法。 Struts2是MVC(模型-视图-控制器)设计模式的一个实现,它为开发者提供了丰富的特性,包括动作类、拦截器、结果类型、插件...
在这个项目中,你创建了一个简易的Struts实现,并用它构建了一个简单的在线考试系统。这对于初学者来说是一个很好的实践,因为它涉及到Web开发中的多个关键概念和技术。 首先,理解Struts框架的基础是必要的。...
在这个"struts做的简易登陆界面"项目中,我们可以推测这是一个用于教学目的的简单登录系统,它包含了数据库连接功能,可能涉及到用户验证和会话管理。 首先,我们需要理解Struts框架的核心组件和工作原理。Struts...
在本文中,我们将深入探讨如何使用Struts1.x来开发一个简易计算器应用,以及在这个过程中涉及的关键概念和技术。 首先,让我们了解Struts框架的核心组件。Struts1.x的主要目标是解耦应用程序的业务逻辑、控制流程和...