我正在尝试使用servlet和JSP向用户打印信息。 $ {sessionScope.student.getName()}不起作用,我不知道为什么。有人可以指导我吗?
<%
DevInfo stu = (DevInfo)getServletContext().getAttribute("student");
%>
<li><p>
<b>Developers Name:</b>
${sessionScope.student.getName()}
</p></li>
<li><p>
DevInfo类:
public class DevInfo {
private String name;
public DevInfo (String name) {
this.name = name;
}
public String getName() {
return name;
}
}
设置属性的开发人员类:`
public class Developer implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent e) {
System.out.println("Destroyed!");
}
@Override
public void contextInitialized(ServletContextEvent e) {
ServletContext cntxt = e.getServletContext();
String name = e.getServletContext().getInitParameter("dname");
cntxt.log("gggg "+name);
DevInfo student = new DevInfo(name);
cntxt.setAttribute("student", student);
}
答案 0 :(得分:1)
在表达式语言中访问不同的范围:
Attribute "x" value in page scope : ${x}
Attribute "x" in request scope : ${requestScope.x}
Attribute "x" in session scope : ${sessionScope.x}
出现问题似乎客户是一个bean类,因此可以使用下面的代码段来访问它的属性
${requestScope['control'].firstName}
使用${x}
Jsp容器首先在页面范围中检查属性x。如果可用,则打印属性值。如果它不可用,那么它将检查请求范围,然后是会话和应用程序范围。它只是作为
pageContext.findAttribute(String name);
方法
答案 1 :(得分:0)
<c:out value="${requestScope.control.firstName}" />
客户必须是Java Bean。
答案 2 :(得分:0)
修改强>
试试这个:
${student.getName()}
假设属性名称为name
:
${student.name}
jsp useBean的示例用法:
<jsp:useBean id='test' class='package.Test' scope='page'/>
使用EL
调用方法${test.getTest()}
此处,范围默认为page
,可以是request
,session
等