封装Servlet,跳过service,doPost,doGet直接写方法
2017-12-09 17:38
1016 查看
在jsp页面中调用sevlet中某个方法,比较麻烦。
因为创建的Servlet默认继承
解决的思路就是:过滤器
重写service方法。在service方法中,首先获得传入的method参数,知道需要调用的是哪个方法,然后通过反射机制,去获得servlet指定的方法,最后用
BaseServlet代码如下:
因为创建的Servlet默认继承
HttpServlet,在
HttpServlet默认访问service方法,没有重写service方法,根据是get请求还是post请求,再去访问
doGet或者
doPost方法。这样导致整个Servlet结构入口只有一个,代码逻辑比较臃肿。
解决的思路就是:过滤器
解决办法
自定义BaseServlet
自定义一个BaseServlet继承
HttpServlet
重写service方法。在service方法中,首先获得传入的method参数,知道需要调用的是哪个方法,然后通过反射机制,去获得servlet指定的方法,最后用
method对象的
.invoke方法来执行该方法。
BaseServlet代码如下:
@SuppressWarnings("all") public class BaseServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); try { //1 获得请求的method的名称 String methodName = request.getParameter("method"); //2 获得当前被访问的对象的字节码对象 Class clazz = this.getClass();//ProductServlet.class //3 获得当前字节码对象中的指定方法 Method method = clazz.getMethod(methodName, HttpServletRequest.class,HttpServletResponse.class); //4 通过反射的方法 执行相应的功能方法 method.invoke(this, request,response); } catch (Exception e) { e.printStackTrace(); } } }
Servlet继承BaseServlet
public class myServlet extends BaseServlet{ public void myMethod(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ ······; } }
jsp调用Servlet方法
在jsp中调用方法只要在url中添加method=myMethod参数即可。
相关文章推荐
- servlet中service() doGet() doPost() 方法
- servlet中的service, doGet, doPost方法的区别和联系
- servlet中service() doGet() doPost() 方法
- [Jweb] 在 servlet 中重写 service() 方法,不重写 doGet, doPost 方法,示例。
- servlet中service() doGet() doPost() 方法
- [Jweb] 在 servlet 中重写 service() 方法,不重写 doGet, doPost 方法,示例。
- servlet中service() doGet() doPost() 方法
- Servlet的几个方法介绍(init() 、service()、doGet() 、doPost()、destroy()、getServletConfig()、getServletInfo())
- WEB应用中的servlet的 service,doPost,doGet方法的关系
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中的service()、doPost()、doGet()方法
- moo 7 Servlet init() doget() dopost() service()方法之间的区别及应用/GenericServlet、Servlet、HttpServlet借口之间的关系
- servlet中service() doGet() doPost() 方法
- 在servlet中出现service()、doGet()和doPost()方法时的执行问题
- servlet中service() doGet() doPost() 方法
- servlet中service方法、doGet方法、 doPost() 方法 的关系
- servlet中service() doGet() doPost() 方法
- servlet的service()方法与doGet()、doPost()方法的关系