您的位置:首页 > 理论基础 > 计算机网络

BaseServlet扩展了的HttpServlet,来实现减少Servlet数量

2013-05-10 00:09 369 查看

调用顺序:



1.BaseServlet类

package czb.utils; 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; // 扩展Httpservlet用户请求某个servleturl为:/PersonServlet?metd=savepublic abstract classBaseServlet extends HttpServlet {    private static final longserialVersionUID= 1L;     @Override    public void service(HttpServletRequest req, HttpServletResponse resp)            throws ServletException,IOException {        req.setCharacterEncoding("UTF-8");        // 获取参数        String metd = req.getParameter("metd");        if (metd == null || metd.trim().equals("")) {            metd= "execute";        }        try {            // 通过反射去调子类的方法,获取实现类的方法反射save(req,reps)            Method method = this.getClass().getMethod(metd, //this是指实现类的实例对象                   HttpServletRequest.class, HttpServletResponse.class);            // 调用的实现类的方法            method.invoke(this, req, resp);        }catch(Exception e) {            thrownew RuntimeException(e);        }    }     public void execute(HttpServletRequest req, HttpServletResponse resp)            throws Exception {        resp.sendError(406,"至少重写一个默认的方法、、、、、");    }}

2.BaseServlet的实现类

package czb.servlet; import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import czb.utils.BaseServlet; public class PersonServlet extends BaseServlet {    private static final longserialVersionUID= 1L;     public void save(HttpServletRequestreq, HttpServletResponse resp)            throws Exception {        String name = req.getParameter("name");        System.err.println("你的姓名是:" + name + ",你在操作保存。。");    }     public void del(HttpServletRequestreq, HttpServletResponse resp)            throws Exception {        System.err.println("你在操作删除。。");    }     public voidupdate(HttpServletRequest req, HttpServletResponse resp)            throws Exception {        String name = req.getParameter("name");        System.err.println("你的姓名是:" + name + ",你在操作更新。。");    } }

3.测试

<body>   <form action="<c:url value='/PersonServlet?metd=save'/>"method="post">       <input type="text"name="name"><br/>       <input type="submit"><br/>   </form>   <a href="<c:url value='/PersonServlet?metd=del'/>">查询</a>   <hr/>    <form action="PersonServlet" method="post">     Name:<input type="text" name="name"id="nm">     <input type="submit" value="删除">  </form>  <br/>  <a href="javascript:_go();">GO</a></body><script type="text/javascript"> function_go(){      var nm=document.getElementById("nm").value;      var rul = "StudServlet?metd="+nm;      //对url进行编码      url=encodeURI(url);      window.location=url; } </script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: