调用顺序:
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用户请求某个servlet的url为:/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>