我正在学习 JSP 和 Servlet,我发现了一些奇怪的东西 - 如果我使用以下代码:
request.setAttribute("m", m);
RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
其中 request
是一个 HttpServletRequest
对象,m
是 Model
类的一个对象,我可以访问并在我的 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/