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

来源:互联网 发布:三线表格及数据分析 编辑:程序博客网 时间:2024/04/30 10:32

调用顺序:

 

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=save

public 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>

 

 

原创粉丝点击