【发布时间】:2010-11-24 13:39:00
【问题描述】:
我刚刚开始从事一个 struts2 项目。我在 struts 中看到了动作的力量。 我只是想知道一些事情
1.当客户端通过搜索引擎请求页面时,服务器是否通过映射jsp的操作来引导请求? 2. 如果上述问题的答案是否定的,我们如何设置渲染页面所需的动作类中的所有 bean 属性? 3.如果上述问题的答案不是如何维护数据机密性,因为所有拦截器都是围绕行动构建的
【问题讨论】:
我刚刚开始从事一个 struts2 项目。我在 struts 中看到了动作的力量。 我只是想知道一些事情
1.当客户端通过搜索引擎请求页面时,服务器是否通过映射jsp的操作来引导请求? 2. 如果上述问题的答案是否定的,我们如何设置渲染页面所需的动作类中的所有 bean 属性? 3.如果上述问题的答案不是如何维护数据机密性,因为所有拦截器都是围绕行动构建的
【问题讨论】:
如果您的 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 文件夹中被认为是一种很好的做法。无论如何,我已经得到了我的答案。 -- 工匠
【讨论】:
return SUCCESS 或 return INPUT 等)自动分派给 JSP
Struts 的工作方式是它有一个调度程序 servlet,它读取传入请求的路径并决定将它们发送到哪个操作,然后该操作执行并转发给一个 jsp。所以action是否被调用取决于客户端点击的url是什么,如果是在struts中映射到action的url则调用action,否则不调用。
【讨论】: