减少冗余代码

发布于 2024-12-22 20:24:36 字数 868 浏览 0 评论 0原文

我开始感觉多余,因为我必须指定 doGet 参数及其每次抛出的内容。有没有办法在我的 Controller 中完成所有这些操作,这样就不必在每个页面上完成这些操作?我的 Controller 目前没有 doGet()

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"})
public class EditServlet extends cms.library.Controller {
    @Override
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.loadView(new cms.library.PageConfig()
                .setRequest(request)
                .setResponse(response)
                .setTemplate("/content/edit"));
    }

    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("posted");

        this.doGet(request, response);
    }
}

It's starting to feel redundant that I have to specify the doGet parameters and what it throws every time. Is there a way to do all of that within my Controller so it doesn't have to be done on every page? My Controller currently has no doGet()

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"})
public class EditServlet extends cms.library.Controller {
    @Override
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        this.loadView(new cms.library.PageConfig()
                .setRequest(request)
                .setResponse(response)
                .setTemplate("/content/edit"));
    }

    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("posted");

        this.doGet(request, response);
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Bonjour°[大白 2024-12-29 20:24:36

您可以将模板传递给 cms.library.Controller 类,这样您就不必每次都定义 doGet。

public class Controller {
    private final String template;
    public Controller( String template ) {
        this.template = template;
    }
    @Override
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.loadView(new cms.library.PageConfig()
                .setRequest(request)
                .setResponse(response)
                .setTemplate(template));
    }
}

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"})
public class EditServlet extends cms.library.Controller {
    public EditServlet() {
        super("/content/edit");
    }
    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("posted");
        this.doGet(request, response);
    }
}

或者,您可以创建自己的注释,并且 Controller 类将在其构造函数中检查实现类以获取注释(而不是传入字符串)。

You can pass in the template to the cms.library.Controller class so you don't have to define doGet everytime.

public class Controller {
    private final String template;
    public Controller( String template ) {
        this.template = template;
    }
    @Override
    public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.loadView(new cms.library.PageConfig()
                .setRequest(request)
                .setResponse(response)
                .setTemplate(template));
    }
}

@WebServlet(name = "EditServlet", urlPatterns = {"/content/edit"})
public class EditServlet extends cms.library.Controller {
    public EditServlet() {
        super("/content/edit");
    }
    @Override
    public void doPost (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("posted");
        this.doGet(request, response);
    }
}

Or you could make your own annotation and the Controller class would inspect the implementing class in its constructor for the annotation (instead of passing in the string).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文