首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

小弟我的mvc小框架

2012-10-31 
我的mvc小框架mvc control package com.appimport java.io.IOExceptionimport java.io.PrintWriterimpo

我的mvc小框架
mvc control

package com.app;import java.io.IOException;import java.io.PrintWriter;import java.lang.reflect.Constructor;import java.lang.reflect.Method;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class BaseServlet extends HttpServlet {private static final long serialVersionUID = 3184686435203556699L;private final String errorUi = " .errorUi { list-style:none}\n"+ ".errorUi li{border-top:0px;border:solid 1px blue; } ";/*** * author:hcmfys@163.com */private boolean debug = false;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {execute(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {execute(req, resp);}/*** * 通过反射方式 实现执行类的方法 *  * @param req * @param resp */private void execute(HttpServletRequest req, HttpServletResponse resp) {String debugMode = this.getServletConfig().getInitParameter("debugMode");System.out.println("debug mode=" + debugMode);if (debugMode != null) {debug = true;}String path = req.getContextPath();String requestUrl = req.getRequestURI();int index = requestUrl.indexOf(path);if (index != -1) {String actionClass = requestUrl.substring(index + path.length() + 1);// 去掉前面的前缀index = actionClass.indexOf("/");actionClass = actionClass.substring(index + 1);actionClass = actionClass.replace("/", ".");String action = req.getParameter("action");System.out.println(" 执行 " + actionClass + " 方法  " + action);if (action != null) {try {Class<?> baseCls = Class.forName(actionClass);Method baseMethod = baseCls.getMethod(action, HttpServletRequest.class,HttpServletResponse.class);Constructor cons = baseCls.getConstructor();Object instanceObj = cons.newInstance();baseMethod.invoke(instanceObj, req, resp);} catch (Exception e) {System.out.println(actionClass+ "  发生错误 ------------------------- ");e.printStackTrace();System.out.println(" ------------ end ------------- ");if (debug) {try {PrintWriter out = resp.getWriter();out.println("<style>");out.println(errorUi);out.println("</style>");out.println("<ul class='errorUi'>");out.print("<li> 发生错误  " + e.getMessage() + "</li>");out.print("<li>错误详细信息 :</li>");out.print("<li style='background:green; color:white'>");e.printStackTrace(out);out.print("</ul>");} catch (IOException ex) {ex.printStackTrace();}}}}}}}


web.xml配置
<servlet> <servlet-name>baseServlet</servlet-name><servlet-class>com.app.BaseServlet</servlet-class><init-param><param-name>debugMode</param-name><param-value>true</param-value></init-param></servlet><servlet-mapping><servlet-name>baseServlet</servlet-name><url-pattern>/business/*</url-pattern></servlet-mapping>



测试类

package com.app;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UserAction {/** * UserAction */private static final long serialVersionUID = -6881406555415037229L;public void doUser(HttpServletRequest req, HttpServletResponse resp) {try {PrintWriter out = resp.getWriter();out.println(" hello world");} catch (IOException e) {e.printStackTrace();}}}


访问方法
http://localhost:1983/mvc/business/com.app.UserAction?action=doUser

工程下载

1 楼 lnwazg 2011-12-04   不错,一起学习了!

热点排行