【问题标题】:Are struts2 actions called when user asks for a jsp through a search engine当用户通过搜索引擎请求 jsp 时是否调用 struts2 操作
【发布时间】:2010-11-24 13:39:00
【问题描述】:

我刚刚开始从事一个 struts2 项目。我在 struts 中看到了动作的力量。 我只是想知道一些事情

1.当客户端通过搜索引擎请求页面时,服务器是否通过映射jsp的操作来引导请求? 2. 如果上述问题的答案是否定的,我们如何设置渲染页面所需的动作类中的所有 bean 属性? 3.如果上述问题的答案不是如何维护数据机密性,因为所有拦截器都是围绕行动构建的

【问题讨论】:

    标签: java jsp struts2


    【解决方案1】:

    如果您的 JSP 页面可公开访问并且用户直接访问它们(例如,从搜索引擎或书签),那么不,您的操作不会被调用。

    您的 JSP 应该放在 WEB-INF 目录下(例如,/WEB-INF/jsp),这样用户就无法直接访问它们。在 Struts2(任何其他 MVC 框架)中,JSP 只是视图层的模板,不应直接访问。

    有几个 cmets 回复了 Problem with moving JSPs under WEB-INF directory 中的一个答案,强化了这一点:

    我不确定struts,但是对于Spring,将JSP 放在WEB-INF 中然后您的视图代码访问受保护的JSP 是公认的做法。这也阻止了对 JSP 的直接 HTTP 访问,因此您可以获得更好的访问控制。 -- jkf

    Struts 也是如此。将 JSP 放在 WEB-INF 文件夹中被认为是一种很好的做法。无论如何,我已经得到了我的答案。 -- 工匠

    【讨论】:

    • 但是,如果 jsps 应该保留在 web-inf 中,为什么书籍会显示在 web-inf 之外。(我已经看到 struts2 在运行中将其排除在外,在我的大学老师教学时也将其排除在外) .还有我们如何访问它们(是ip:port/proj-name/WEB_INF/xyz.jsp 还是ip:port/proj-name/xyz.jsp
    • 这可能是为了保持示例简单。但是,在实践中不应该这样做。
    • 您不能直接访问 JSP。您访问该操作。该操作将根据适当的结果(例如,return SUCCESSreturn INPUT 等)自动分派给 JSP
    • 那么这是否意味着如果我将我的 jsps 放在 web-inf 文件夹中,那么搜索引擎将能够在我的 jsps 中找到内容,并且搜索引擎将使用我的操作来调用jsps 否则根本找不到
    • 是的,搜索引擎会索引您的操作(这将显示 JSP 的内容)。然后访问者将访问这些操作。
    【解决方案2】:

    Struts 的工作方式是它有一个调度程序 servlet,它读取传入请求的路径并决定将它们发送到哪个操作,然后该操作执行并转发给一个 jsp。所以action是否被调用取决于客户端点击的url是什么,如果是在struts中映射到action的url则调用action,否则不调用。

    【讨论】:

    • 那么我如何确保如果搜索引擎将某人引导到我的 jsp 时,它只是通过我的操作才这样做的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 2011-04-27
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多