JSP/Servlet 表达式语言私有(private)变量访问

标签 jsp servlets jstl el

我正在学习 JSP 和 Servlet,我发现了一些奇怪的东西 - 如果我使用以下代码:

request.setAttribute("m", m);
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);

其中 request 是一个 HttpServletRequest 对象,mModel 类的一个对象,我可以访问并在我的 JSP 页面 (welcome.jsp) 中显示 m 的私有(private)变量的值。

welcome.jsp的相关JSP代码:

Hello, <strong>${m.name}</strong>! Your data has been validated and is displayed below:<br/>
<br/>
Number: <strong> ${m.number} </strong>
<br/>
<br/>
Birth Month: <strong> ${m.month} </strong>

Model类的相关Java代码:

public class Model {
    private String name;
    private String number;
    private String[] hobby;
    private int month;
    // remaining code...

最佳答案

${m.name}

与“原始”小脚本代码中的以下内容基本相同

<%
  Model m = (Model) pageContext.findAttribute("m");
  if (m != null) {
  String name = m.getName();
   if (name != null) {
    out.print(name);
   }
 }
%> 

${m.name} 调用 getName(),它在类 Model 中是 public
不要困惑它不是直接访问private变量name

引用链接

关于JSP/Servlet 表达式语言私有(private)变量访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282158/

相关文章:

java - Struts2 当索引是变量时访问列表的特定索引

javascript - 从 jsp 调用 React JS

tomcat - 在 JAX-RS 资源中获取 ServletContext

java - Servlet 3.0中的AsyncContext无限浏览器加载

java - 将两个或多个数组列表合并到一个数组列表中

java - 有条件渲染 <h :commandButton> using <c:if>

jsp - 在 JSP 中使用 EL 时出错

javascript - 如何通过java程序在运行时在html页面中编写java脚本代码?

java - 如何从 JSP 页面加载 COM 对象?

javascript setInterval 与 getJson