zoukankan      html  css  js  c++  java
  • java 反射机制 Demo 练习

    最近在研究java 反射机制,看网上视频,并抄了下来研究,用到Servlet 注解,绝不亚于SpringMVC 的注解使用,特此记录分享,Servlet 再也不用为传递参数而判断担忧了,专注业务!

    1. 首先定义一个父类,所有的业务操作全部继承之.

     1 package controller;
     2 
     3 import java.io.IOException;
     4 import java.lang.reflect.Method;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 @SuppressWarnings("serial")
    12 public abstract class DispatcherServlet extends HttpServlet {
    13 
    14     @Override
    15     public void init() throws ServletException {
    16     }
    17 
    18     @Override
    19     public void doGet(HttpServletRequest request, HttpServletResponse response)
    20             throws ServletException, IOException {
    21         String requestURI = request.getRequestURI();
    22         String methodName = requestURI.substring(requestURI.lastIndexOf("/") + 1);
    23         String xpath = "/WEB-INF/view/errors.jsp";
    24          // 根据指定的方法名称反射调用指定的方法
    26         try {
    27             Method method = this.getClass().getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
    28             // 反射调用方法
    29             xpath = (String) method.invoke(this, request, response);
    30         } catch (Exception e) {
    31         }
    32       request.getRequestDispatcher(xpath).forward(request, response);
    33     }
    34 
    35     @Override
    36     public void doPost(HttpServletRequest req, HttpServletResponse resp)
    37             throws ServletException, IOException {
    38         this.doGet(req, resp);
    39     }
    40 }

    2. 定义一个ServiceServlet 继承 DispatcherServlet

     1 package controller;
     2 
     3 import javax.servlet.annotation.WebServlet;
     4 import javax.servlet.http.HttpServletRequest;
     5 import javax.servlet.http.HttpServletResponse;
     6 
     7 @SuppressWarnings("serial")
     8 @WebServlet("/pages/*")
     9 public class ServiceServlet extends DispatcherServlet {
    10     public String list(HttpServletRequest req, HttpServletResponse resp){
    11         System.out.println("业务操作---------------");
    12         return "/WEB-INF/view/list.jsp";
    13     }
    14 }

    3. JSP页面自定义

    4. 访问路径: http://localhost:8080/ReflectServlet/pages/list

    5. 其他页面可拓展添加

  • 相关阅读:
    win10下的MyEclipse2017 ci7 破解教程+全套资源+失败处理(转)
    layui layer.open() 弹层开启后 Enter回车 遮罩层无限弹处理
    layui 或者layer 父页面获取子页面数据 或者子页面获取父页面操作方法(转)
    layui弹出层两个以上置顶弹出
    div自动获焦并将光标定位到最后
    hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
    形参与实参的区别
    linux下安装Mysql(干货!!!)解决mysql 1130问题,远程登录问题
    linux下安装Mysql(干货!!!)
    java文件上传与下载
  • 原文地址:https://www.cnblogs.com/bjwl/p/5047474.html
Copyright © 2011-2022 走看看