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
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

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

    相关文章

    发表评论:

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

    «    2025年5月    »
    1234
    567891011
    12131415161718
    19202122232425
    262728293031

    搜索

    控制面板

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

    最新留言

    文章归档

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