在设计Servlet的时候容易遇到这样的一个情况, 比如一个页面中有多个按钮, 分别对应CRUD:
增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)
这些操作, 这样有可能一个页面就要写很多个Servlet, 比如 homepageAddServlet
, homepageDeleteServlet
等等这种, 这样不仅写起来很麻烦, 而且会让XML配置文件非常多, 显得很冗余, 为了避免这样做, 就可以采取Filter+Servlet+反射
这种方式来处理;
基本的思路就是, 先写一个过滤用的Filter, 比如写一个homepageFilter
用于过滤出所有homepage开头的url, 然后获取这个url的内容, 然后比如获取到了一个 homepageAddServlet
这样的url, 然后我就明白, 其实这就是要进行一次add操作;
那么我就只用写一个HomepageServlet
, 然后当我接收到这个 homepageAddServlet
这样的url之后, 我就向HomepageServlet
发送一个请求, 这个请求中的request里设置一个字段叫"method"
, 然后把这个字段的变量赋为add, 代码大概像这样:
String method = "add";//这个字段应该用getrequesturi方法获取到uri字符串之后解析那个字符串来获得
//这里就随便写一下当测试了
request.setAttribute("method", method);
然后在HomepageServlet
里面利用反射, 通过request里面传过来的method字段, 调用自己的add方法, 或者其他方法;
这样就能用1个Filter+1个Servlet来实现原本可能要很多个Servlet才能实现的功能了 ?