BaseServlet 继承 httpServlet
2016-03-30 08:49
513 查看
BaseServlet 核心
package cn.core; import java.io.IOException; import java.lang.reflect.Method; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 1:继承HttpServlet让它成为Servlet<br> * 2:声明它的抽象的则是指这个类不能配置到web.xml中去<br> */ public abstract class BaseServlet extends HttpServlet { /** * 3:直接重写service方法,以避免执行doGet/doPost分支 */ @Override public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 6:由于所有请求,都是先从这儿过去了,所以可以直接统一的设置请求编码和响应的类型 req.setCharacterEncoding("UTF-8"); resp.setContentType("text/html;charset=UTF-8"); // 7:用户通过参数的形式通知调用哪一个方法?method=add调用add方法 // 解析出这个参数 String methodName = req.getParameter("method"); if (methodName == null || methodName.trim().equals("")) { // 默认为exuecte methodName = "execute"; } // 8:再通过反射调用子类方法,可以使用this反射出子类。 // 反射出方法 try { Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class); // 执行调用 method.invoke(this, req,resp); } catch (Exception e) { throw new RuntimeException(e); } } /** * 4:开发一个默认的方法,如果用户没有指定执行哪一个方法,则默认就执行默认的这个方法 * 5:将这个方法修改成抽象的,以避免继承BaseServlet的类忘记开发execute */ public abstract void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception; } 方法测试
package cn.examples; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.core.BaseServlet; public class PersonServlet extends BaseServlet { // http://localhost:9999/mvc/person @Override public void execute(HttpServletRequest req, HttpServletResponse resp) throws Exception { System.err.println("这是默认的execute..."); } // http://localhost:9999/mvc/person?method=addPerson public void addPerson(HttpServletRequest req, HttpServletResponse resp) { System.err.println("this is add..."); } // http://localhost:9999/mvc/person?method=upload public void upload(HttpServletRequest req, HttpServletResponse resp) { System.err.println("this is upload img..."); } // http://localhost:9999/mvc/person?method=del public void del(HttpServletRequest rr, HttpServletResponse resp) { System.err.println("this is delete..."); } }
相关文章推荐
- 桌面图标全变成.lnk的图标(WIN7系统电脑除了计算机,网络,回收站以外(包括开始菜单)的图标全都变成后缀为.lnk的文件)
- HTTP/HTTPS抓包工具Charles
- tomcat实现http协议中的请求方法
- 时时获得高德地图坐标 http://lbs.amap.com/console/show/picker
- http响应码大全
- Python内置的HTTP协议服务器SimpleHTTPServer使用指南
- 目 前 网 络 什 么 行 业 最 挣 钱
- 网络
- 内外网络访问工具
- 云舒网络译:Rancher1.0正式版发布
- 网 上 做 什么 项 目 赚 钱 快
- lihgttpd阅读 网络模型之server.c
- 浙江教育资源公共服务平台应用培训会在杭州召开
- 关于 wcf rest 下载手机应用
- 操作系统:内核功能
- Tcp连接/Socket
- CURL使用SSL证书访问HTTPS
- 网络的几个基本点
- tcpdump命令安装
- HTTP协议5之代理--转