BaseServlet工具类

本文介绍了如何使用BaseServlet作为基础,统一后端处理路径和编码,利用反射机制实现多个业务功能,如查询和删除学生,通过`@WebServlet`注解和`invoke()`方法调用具体业务方法。
摘要由CSDN通过智能技术生成

1.BaseServlet类能够使后端的提交路径更加统一,逻辑结构更加清晰:

        --BaseServlet类继承HttpServlet,重写HttpServlet的service()方法

        --给每次的请求和响应统一设置编码

        --获取每次请求携带的需要请求的方法名

        --this.getClass()获取当前servlet类的class类对象

        --this.getClass.getMethod()获取当前类的某个方法对象,参数有(方法名,               HttpServletRequest.class,HttpServletResponse.class)

        --  .invoke()是一个调用方法的方法,参数(Object obj,Object...args),obj代表调用方法所在的对象,args是一个可变参数表示调用方法的参数列表。

public class BaseServlet extends HttpServlet {
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设编
        request.setCharacterEncoding("UTF-8");
        response.setContentType("json/application;charset=utf-8");
        //2.获取方法参数
        String method = request.getParameter("method");
        //2.反射
        try {
            Method method1 = this.getClass().getMethod(method, HttpServletRequest.class, HttpServletResponse.class);
            method1.invoke(this, request, response);
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}

 2.当要实现多个业务功能时可以在一个类中实现,例如要实现删除和查询学生两个业务:

@WebServlet("/student.do")
public class StudentServlet extends BaseServlet{
    StudentService studentService = new StudentServiceImpl();

    /**
     * 查询学生
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    public void queryStudentList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Student> students = studentService.queryStudent();
        response.getWriter().print(JSONObject.toJSON(students));
    }

    /**
    *删除学生
    **/
    public void delStudent(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        int stu_id = Integer.parseInt(request.getParameter("stu_id"));
        studentService.delStudent(stu_id);
        response.getWriter().print(true);
    }

 3.实现逻辑

  通过@WebServlet()表名该类是一个Servlet类,当前端提交给该Servlet时要去找它的service方法,因为StudentServlet继承了BaseServlet,所以执行父类的的service()方法,在service方法中获取到前端要找的方法名,通过invoke()方法调用前端所需求的方法,以至于实现相应的业务。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值