一个简单的Servlet工具

本文介绍了一种在请求Servlet时通过参数决定执行的方法,通过反射机制在Servlet类中查找并调用相应的方法,实现动态执行不同业务逻辑。

以前老师在项目中用过一个Sevlet的工具,就是在请求Servlet的时候带一个参数,该参数决定要执行Servlet中的方法,

 

public class ServletUtils extends HttpServlet{

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(req,resp);
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//1 获得要执行的方法的名称
String methodName = req.getParameter("method");

//反射本对象,查出是否包含与上述方法名一致的方法
Class clazz = this.getClass();
Method[] methods = clazz.getMethods();
for(Method method:methods){
String methodN = method.getName();
if(methodN.equals(methodName)){
try {
String result = (String)method.invoke(this, req,resp);

if(result.startsWith("f://")){ // 转发
String uri_r = result.substring(4);
req.getRequestDispatcher(uri_r).forward(req, resp);
}
if(result.startsWith("r://")){ //重定向
String uri_f = result.substring(4);
resp.sendRedirect(uri_f);
}



} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
}

}

 

 

Servlet的定义是这样的

public class demo extends ServletUtils {

public String demo007(ServletRequest req,ServletResponse resp){
String message = req.getParameter("message");
req.setAttribute("message", message);
return "f://demo.jsp";
}

public String demo008(ServletRequest req,ServletResponse resp){
return "f://index.jsp";
}
}

 

请求格式是这样的

http://localhost/ServletStu/demo?method=demo007&message=tyyfuckyou

转载于:https://www.cnblogs.com/dbqjava/p/4431004.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值