Java Web 将多个 servlet 封装在一个 class 类中

建个基础 servlet 类继承 HttpServlet,其中除了可以反射方法外也可以写些常用的方法 :

Java Web 将多个 servlet 封装在一个 class 类中
public class BaseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 重写 service 方法 完成方法分发
        /* 获取请求路径
        * 获取方法名称
        * 获取方法对象
        * 执行反射 */
        String requestURI = req.getRequestURI(); // 获取 uri
        String methodName = requestURI.substring(requestURI.indexOf("/") + 1);
        //substring 获取方法名
        try {Method method = this.getClass().getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            method.invoke(this,req,resp);
            // 此处的 this 指入口的 class,非此 class
        } catch (NoSuchMethodException e) {e.printStackTrace();
        } catch (IllegalAccessException e) {e.printStackTrace();
        } catch (InvocationTargetException e) {e.printStackTrace();
        }
    }

    /**
     * 直接将传入对象序列化为 json
     * 并传给浏览器
     * @param obj
     * @param response
     * @throws IOException
     */
    public void writeValue(Object obj,HttpServletResponse response) throws IOException {ObjectMapper mapper = new ObjectMapper();
        response.setContentType("application/json;charset=utf-8");
        // 设置编码 注意两个设置字段中间用分号隔开
        mapper.writeValue(response.getOutputStream(),obj);
    }

    public String writeValueAsString(Object obj) throws JsonProcessingException {ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(obj);
        // 将传入对象序列化为 json 并返回字符
    }
}

相关 servlet 均继承 baseservlet

@WebServlet("/user/*")
public class UserServlet extends BaseServlet {
    /* 原本新建的 get post 方法改成你需要的方法
      protected 修饰改成 public 否则需要在 baseServlet 中暴力反射
      不建议使用暴力反射
      申明 UserService 业务对象 方便使用
      声明业务或 dao 对象一般先建接口 然后再实现 */
    UserService service = new UserServiceImpl();
    // 访问 域名 /user/regist 即可以访问下列方法
    public void regist(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }

    public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}}


手机扫描二维码访问

本文标题:《Java Web 将多个 servlet 封装在一个 class 类中》作者:极四维博客
原文链接:https://cway.top/post/107.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合