session和sessionScope在JSP EL中是否相同?

public class LoginAction extends ActionSupport {

private String username;

private String password;

@Override

public String execute() throws Exception {

ActionContext ctx = ActionContext.getContext();

Integer counter = (Integer)ctx.getApplication().get("counter");

// put counter into application

ctx.getApplication().put("counter", counter);

// put username into session

ctx.getSession().put("user", username);

if (getUsername().equals("crazyit.org")

&& getPassword().equals("leegang")) {

ctx.put("tip", "Login Success! ");

return SUCCESS;

}

else {

ctx.put("tip", "Login Falied!");

return ERROR;

}

}

}

我在会话和中放入"counter"了应用程序。在JSP中,我可以使用和引用“

user”属性。并参考。"user"``"tip"``ActionContext``${session.user}``${sessionScope.user}``${request.tip}``${requestScope.tip}``tip

  1. 是会话,请求,申请一样sessionScoperequestScopeapplicationScope在EL?
  2. ActionContext和之间有什么关系request(requestScope)

我测试${request == requestScope}哪个是真的,这意味着它们是相同的吗?

回答:

使用表达式语言(EL),合并范围项是它们所引用的对象中属性的值映射。例如,requestScope是请求对象中值的映射表示。在页面上非常清晰地解释了这一点:Java

Servlet和JSP。如果通读EL部分,您会在这里注意到关于请求vs请求范围的一点:requestScope不是request

object。

我建议您通读此页面,以大致上更好地了解servlet / jsp。

就ActionContext与这些项目的关系而言,它实际上是struts用来封装servlet的包装器。您可以在此处阅读有关它的更多详细信息:访问应用程序,会话,请求对象。

这里给出了一些对隐式值的引用,但是我觉得仅仅说它是隐式的并不能解释太多。使用EL访问servlet变量时,可以显式声明要引用的范围,例如:

 ${requestScope.myVariable}

您也可以通过省略范围来隐式引用它:

 ${myVariable}

现在,这里可能出现的问题是,具有相同名称的变量可能导致冲突。EL将按特定顺序检查隐式值:pageScope,requestScope,sessionScope和applicationScope,param,paramValues,标头,标头值,initParam,cookie,pageContext。这意味着如果请求范围中的变量与会话或应用程序范围中的变量具有相同的名称,则将引用请求范围的值。

以上是 session和sessionScope在JSP EL中是否相同? 的全部内容, 来源链接: utcz.com/qa/406838.html

回到顶部