封装Servlet,跳过service,doPost,doGet直接写方法
来源:互联网 发布:淘宝导航设置颜色代码 编辑:程序博客网 时间:2024/06/03 03:15
在jsp页面中调用sevlet中某个方法,比较麻烦。
因为创建的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
参数即可。
阅读全文
0 0
- 封装Servlet,跳过service,doPost,doGet直接写方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- 【转载】servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service() doGet() doPost() 方法
- servlet中service方法和doget dopost
- servlet中service() doGet() doPost() 方法
- servlet中的service()、doPost()、doGet()方法
- servlet中service() doGet() doPost() 方法
- servlet中service方法、doGet方法、 doPost() 方法 的关系
- servlet的service()方法与doGet()、doPost()方法的关系
- mysql--高级操作
- 堆和栈的区别整理
- Storm集群环境安装
- 使用java.util.List.subList时最好小心点
- linux内核中用C语言实现面向对象思想
- 封装Servlet,跳过service,doPost,doGet直接写方法
- 欢迎使用CSDN-markdown编辑器
- Decompiled .class file bytecode version:49.0(java5.0) load or open source file.
- 汇编基础案例
- 如何在 Django 连接 MYSQL 数据库
- Android SharedPreference 源码分析(一)
- 关于react绑定事件中的this
- pwnable.kr 之simplelogin
- 身份证扫描的功能sdk