gpt4 book ai didi

java - 只使用一个 servlet

转载 作者:行者123 更新时间:2023-11-29 05:23:27 25 4
gpt4 key购买 nike

我正在制作一个带有登录系统和后台页面的网页。问题是,两者都使用“doPost”方法(登录用于验证,后台用于在数据库中插入数据)。我怎样才能同时使用一个 servlet?我问这个是因为两者都使用 doPost,所以我制作了两个 servlet。

最佳答案

如果你想使用单个 servlet,你应该实现 Front Controller Pattern .为此,您将解析请求 URL 并决定应执行哪个操作:

public class MySingleServlet extends Servlet {
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String url = request.getPathInfo();
//returns the action to handle
Action action = ActionFactory.getAction(url);
action.process(request, response);
}
}

这涉及一个 Action 接口(interface)/抽象类和一个 ActionFactory,它将解析 URL 并返回正确的实现来处理要执行的操作。

另一种更简单且更难维护的实现方式是发送一个action 参数。这可能是一个问题,因为攻击者可能会使用代理并在将请求发送到 URL 之前更改 action 参数。如果这是公认的有效操作,并且攻击者知道要发送什么,那么您就有麻烦了。

请注意,有些 MVC 框架已经实现了前端 Controller 模式,如 Spring MVC 和 JSF,因此除非出于学习目的,否则无需重新发明轮子(否则,您应该使用已经实现此功能的库)。

关于java - 只使用一个 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23712510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com