BaseServlet
1 希望一个servlet可以处理多个请求,
但是我们不能。来一个servlet写一遍,反射,需要抽象为方法但是此类必须实现httpservlet类一下,是抽象的类,只要有需要就可以extends继承
1 希望一个servlet可以处理多个请求,
2 请求时必须多一个参数来调用方法
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.management.RuntimeErrorException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 给出多个请求方法,除了名字之外其余都与Service方法相同
*
* @author
*
*/
public class Aservlet extends HttpServlet {
/**
* 这种方法不停对象,操作不同, 可以用反射得到方法名, 需要得到class,让后调用方法进行查询
*/
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
/**
* 获取参数来 用来识别用户的方法
*
*/
String menthod = arg0.getParameter("method");
/*
* if (menthod.equals("add")) { add(arg0, arg1); } else if
* (menthod.equals("delet")) { delet(arg0, arg1); }
*/
if(menthod==null||menthod.trim().isEmpty()){
throw new RuntimeException("你没有传method的参数,无法确定你想干什么");
}
Class c = this.getClass();
Method method=null;
try {
method = c.getMethod(menthod, HttpServletRequest.class,
HttpServletResponse.class);
} catch (Exception e) {
throw new RuntimeException("你要要调用的方法不存在");
}
try {
method.invoke(this, arg0,arg1);//反射调用
} catch (Exception e) {
// TODO Auto-generated catch block到这内部异常
throw new RuntimeException(e);
}
}
public void add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("addd>>>>.........");
}
public void delet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("第二个响应");
}
}
但是我们不能。来一个servlet写一遍,反射,需要抽象为方法但是此类必须实现httpservlet类一下,是抽象的类,只要有需要就可以extends继承
public abstract class BaseServlet extends HttpServlet {
/**
* 这种方法不停对象,操作不同, 可以用反射得到方法名, 需要得到class,让后调用方法进行查询
*/
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
/**
* 获取参数来 用来识别用户的方法
*
*/
String menthod = arg0.getParameter("method");
/*
* if (menthod.equals("add")) { add(arg0, arg1); } else if
* (menthod.equals("delet")) { delet(arg0, arg1); }
*/
if(menthod==null||menthod.trim().isEmpty()){
throw new RuntimeException("你没有传method的参数,无法确定你想干什么");
}
Class c = this.getClass();
Method method=null;
try {
method = c.getMethod(menthod, HttpServletRequest.class,
HttpServletResponse.class);
} catch (Exception e) {
throw new RuntimeException("你要要调用的方法不存在");
}
try {
method.invoke(this, arg0,arg1);//反射调用
} catch (Exception e) {
// TODO Auto-generated catch block到这内部异常
throw new RuntimeException(e);
}
}
}