一个基于servlet极简的web框架实现,通过web.xml来做servlet mapping是痛苦的。简单写了一个web框架。
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>com.taobao.proxy.web.ProxyDispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
package com.taobao.tlog.proxy.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 此Servlet是web.xml的入口,提供了简单实用的servlet mapping,避免写大量的xml * @author yunpeng * */ public class ProxyDispatcherServlet extends HttpServlet { public static final Logger logger = LoggerFactory.getLogger(ProxyDispatcherServlet.class); private static final long serialVersionUID = -156295649559639694L; protected void mapper() throws InstantiationException, IllegalAccessException { UrlMapping.mapping("^/jobadd$", JobAddServlet.class); UrlMapping.mapping("^/jobinfo$", JobInfoServlet.class); UrlMapping.mapping("^/jobstatus$", JobStatusServlet.class); UrlMapping.mapping("^/$", ProxyServlet.class); } public void init() throws ServletException { logger.info("tlog-proxy starting..."); try { mapper(); } catch (Exception e) { throw new ServletException(e); } } protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String path = request.getRequestURI(); ProxyBaseServlet serviet = UrlMapping.find(path); if (serviet == null) { response.sendError(404); return; } else { serviet.doGet(request, response); } } }
package com.taobao.tlog.proxy.web; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 一个极简的urlMapping * @author yunpeng * */ public class UrlMapping { private static Map<Pattern, ProxyBaseServlet> urlPatterns = new HashMap<Pattern, ProxyBaseServlet>(); public static void mapping(String pattern, Class<? extends ProxyBaseServlet> servlet) throws InstantiationException, IllegalAccessException { Pattern ptn = Pattern.compile(pattern); urlPatterns.put(ptn, servlet.newInstance()); } public static ProxyBaseServlet find(String path) { for (Entry<Pattern, ProxyBaseServlet> entry : urlPatterns.entrySet()) { Matcher mc = entry.getKey().matcher(path); if (mc.find()) { return entry.getValue(); } } return null; } }
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.taobao.hsf.tlog.proxy.web.core.ProxyBaseServlet; public class ProxyServlet extends ProxyBaseServlet { private static final long serialVersionUID = -2124094625600853748L; public static final Logger logger = LoggerFactory.getLogger(ProxyServlet.class); protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { jsonMsg(false, "this is tlog poxy ", response); } }
/** * 此Servlet是所有业务Servlet的基类,提供一些通用的方法 * @author yunpeng * */ public abstract class ProxyBaseServlet extends HttpServlet { /** * */ private static final long serialVersionUID = -7353341318065451370L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void jsonMsg(boolean success, Object data, HttpServletResponse response) throws IOException { response.setContentType("text/html"); response.setStatus(HttpServletResponse.SC_OK); Map<String, Object> map = new HashMap<String, Object>(); map.put("success", success); map.put("data", data); String result = new Gson().toJson(map); response.getWriter().write(result); } }
相关推荐
grain是一个极简的、组件式的RPC框架,灵活且适合渐进学习,可与任何框架整合。同时包含系统通用多线程模型与消息通讯、多对多关系的分布式锁、基于Servlet的HTTP框架、基于系统通用多线程模型的Websocket框架、支持...
基于java的开发源码-一个支持servlet的web服务器.zip 基于java的开发源码-一个支持servlet的web服务器.zip 基于java的开发源码-一个支持servlet的web服务器.zip 基于java的开发源码-一个支持servlet的web服务器.zip ...
java开发基于Servlet框架的管理系统项目源代码。 实现登录 、 注册 、 增 、 删 、 改 、 查 ; 可继续完善增加前端、校验、其他功能等; 可作为 Servlet项目 开发练习基础模型; 课程设计、 毕业设计 开发基础; ...
一个支持servlet的web服务器.rar
基于servlet的一个网上书城
基于Servlet的商品购物网站
基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目...
基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍管理系统基于 Servlet+jsp+mysql 开发 javaWeb 学生宿舍...
经典的web mvc 开发模式, 使用了servlet 拼sql语句的模式,可以学习jsp,servlet 为日后学习新的web框架打下基础
用servlet+jsp做的购物系统,学习用参考
基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情控制系统 基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情控制系统 基于Java Servlet实现的灾情控制系统基于Java Servlet实现的灾情...
基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于Servlet+JSP+SQL Server实现的客户信息管理系统 基于...
Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1、编写一个Java类,实现servlet接口。 2、把开发好的Java类部署到web...
基于servlet + jsp + MySQL+Xadmin 实现图书馆管理系统 基于servlet + jsp + MySQL+Xadmin 实现图书馆管理系统 基于servlet + jsp + MySQL+Xadmin 实现图书馆管理系统 基于servlet + jsp + MySQL+Xadmin 实现图书馆...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目...基于servlet+jsp实现的简易图书管理系统源码+数据库+项目说明.zip
基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目...
基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目源码 基于Servlet + jsp + mysql 的管理系统设计,项目...
基于Jsp+Servlet+Java实现的病房管理系统基于Jsp+Servlet+Java实现的病房管理系统 基于Jsp+Servlet+Java实现的病房管理系统基于Jsp+Servlet+Java实现的病房管理系统 基于Jsp+Servlet+Java实现的病房管理系统基于Jsp+...
基于servlet+jsp+mysql实现的javaweb校园车辆管理系统源码+数据库文件.zip 内含演示视频,代码完整下载可用。 基于servlet+jsp+mysql实现的javaweb校园车辆管理系统源码+数据库文件.zip 内含演示视频,代码完整...
基于JSP+Servlet+Dao实现的贫困认定管理系统 基于JSP+Servlet+Dao实现的贫困认定管理系统 基于JSP+Servlet+Dao实现的贫困认定管理系统 基于JSP+Servlet+Dao实现的贫困认定管理系统 基于JSP+Servlet+Dao实现的贫困...