BaseServlet实现多求处理扩展Servlet设计与应用.pdfVIP

  • 0
  • 0
  • 约2.04千字
  • 约 2页
  • 2026-02-12 发布于北京
  • 举报

BaseServlet实现多求处理扩展Servlet设计与应用.pdf

BaseServlet

1BaseServlet的作用

我们先写一个工具类:BaseServlet。

我们知道,写一个项目可能会出现N多个Servlet,而且一般一个Servlet只有一个方法(doGet

或doPost),如果项目大一些,那么Servlet的数量就会很惊人。

为了避免Servlet的“膨胀”,我们写一个BaseServlet。它的作用是让一个Servlet可以处理多种

不同的请求。不同的请求调用Servlet的不同方法。我们写好了BaseServlet后,让其他Servlet继承

BaseServlet,例如CustomerServlet继承BaseServlet,然后在CustomerServlet中add()、update()、

delete()等方法,每个方法对应不同的请求。

2BaseServlet分析

我们知道,Servlet中处理请求的方法是service()方法,这说明我们需要让service()方法去调用其

他方法。例如调用add()、mod()、del()、all()等方法!具体调用哪个方法需要在请求中给出方法名称!

然后service()方法通过方法名称来调用指定的方法。

无论是点击超,还是提交表单,请求中必须要有method参数,这个参数的值就是要请求

的方法名称,这样BaseServlet的service()才能通过方法名称来调用目标方法。例如某个如下:

ahref=”/xxx/CustomerServlet?method=add”添加客户/a

3BaseServlet代码

publicclassBaseServletextendsHttpServlet{

/*

*它会根据请求中的m,来决定调用本类的哪个方法

*/

protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)

throwsServletException,IOException{

req.setCharacterEncoding(UTF-8);

res.setContentType(text/html;charset=utf-8);

//例如:

Stringmethome=req.getParameter(method);//它是一个方法名称

//当没用指定要调用的方法时,那么默认请求的是execute()方法。

if(methomenull||methome.isEmpty()){

methome=execute;

}

Classc=this.getClass();

try{

//通过方法名称获取方法的反射对象

Methodm=c.getMethod(methome,HttpServletRequest.class,

HttpServletResponse.class);

//反射方法目标方法,也就是说,如果methome为add,那么就调用add方法。

Stringresult=(String)m.invoke(this,req,res);

//通过返回值完成请求转发

if(result!=null!result.isEmpty()){

req.getRequestDispatcher(result).forward(req,res);

}

}catch(Exceptione){

thrownewServletException(e);

文档评论(0)

1亿VIP精品文档

相关文档