自制BaseServlet
来源:互联网 发布:淘宝直通车有免费的吗 编辑:程序博客网 时间:2024/04/24 21:54
一个Servlet中可以有多个请求处理方法,可以利用反射实现
package cn.day19.web.servlet;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class BaseServlet extends HttpServlet { public void service(HttpServletRequest request,HttpServletResponse response){ String methodName = request.getParameter("method"); if(methodName ==null || methodName.trim().isEmpty()){ throw new RuntimeException("无method参数!"); } //通过反射调用名称 Class c = this.getClass();//得到当前的class对象 Method method = null; try { method =c.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class); } catch (Exception e) { // TODO Auto-generated catch block throw new RuntimeException("方法不存在"); } //调用method try { String result = (String)method.invoke(this, request,response); if(result == null || result.trim().isEmpty()) return; if(result.contains(":")){ int index = result.indexOf(":");//获取冒号的位置 String s = result.substring(0,index);//截取出前缀,表示操作 String path = result.substring(index+1);//截取后缀,表示路径 if(s.equalsIgnoreCase("r")){ //如果前缀是r,那么重定向 response.sendRedirect(request.getContextPath()+path); }else if(s.equalsIgnoreCase("f")){//f:转发 request.getRequestDispatcher(path).forward(request, response); }else { throw new RuntimeException("没有指定的"+s+"操作"); } }else{//没有冒号,默认为转发 request.getRequestDispatcher(result).forward(request, response); } } catch (Exception e) { // TODO Auto-generated catch block throw new RuntimeException(); } }}
0 0
- 自制BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet
- BaseServlet第一版
- 自制
- 自定义BaseServlet利用反射
- Servlet工具类----BaseServlet
- Java web----BaseServlet
- 项目中的BaseServlet
- BaseServlet<学习随笔>
- BaseServlet第二版
- baseservlet,转发,重定向
- BaseServlet的开发
- Service详解(五):使用Messager进行通信
- linux下安装mongodb3.2.4
- ubuntu 安装erlang
- 最长公共子序列(Python)
- 泛型依赖注入
- 自制BaseServlet
- Java中缓存之内存缓存
- wpf对excel读写
- Linux命令
- 简单说说TCP(2) --- 数据传输
- 卸载CentOS7-x64自带的OpenJDK并安装Sun的JDK8的方法
- Android图片加载Glide框架使用详解
- UVA_104_Arbitrage
- HDU 5100Chessboard(暴力)