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

gam*_*_11 2 jsp servlets jstl el

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

request.setAttribute("m", m);
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
Run Code Online (Sandbox Code Playgroud)

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

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>
Run Code Online (Sandbox Code Playgroud)

Model类的相关Java代码:

public class Model {
    private String name;
    private String number;
    private String[] hobby;
    private int month;
    // remaining code...
Run Code Online (Sandbox Code Playgroud)

Ani*_*rni 5

${m.name}
Run Code Online (Sandbox Code Playgroud)

与"原始"scriptlet代码中的以下内容基本相同

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

${m.name}电话getName()这是public在课堂上Model.
不要混淆它不直接访问private变量name.

推荐的链接