程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

只使用一个 servlet

发布于2021-09-15 06:09     阅读(1118)     评论(0)     点赞(12)     收藏(4)


我正在制作一个带有登录系统和后台页面的网页。问题是,两者都使用方法“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接口/抽象类和一个ActionFactory将解析 URL 并返回正确的实现来处理要执行的操作的类。

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

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




所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.qianduanheidong.com/blog/article/191748/d6d9493c12c1412635f5/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

12 0
收藏该文
已收藏

评论内容:(最多支持255个字符)