<% Vector userName=(Vector) getServletConfig().getServletContext().getAttribute("userName"); Iterator iter=userName.iterator(); while(iter.hasNext()){ %> <li><%iter.next();%></li> <% } %>中 Iterator iter=userName.iterator();出现异常
时间: 2024-02-12 15:04:39 浏览: 91
这段代码中 Iterator iter=userName.iterator(); 会抛出异常,因为 Vector 类型的变量 userName 可能为 null,当它为 null 的时候,调用 iterator() 方法会抛出 NullPointerException 异常。所以在使用之前需要判断 userName 是否为 null,可以修改代码如下:
```
<%
Vector userName=(Vector) getServletConfig().getServletContext().getAttribute("userName");
if(userName != null) {
Iterator iter=userName.iterator();
while(iter.hasNext()){
%>
<li><%=iter.next()%></li>
<%
}
}
%>
```
这样就可以避免出现 NullPointerException 异常了。
相关问题
下面试web.xm1中的片段<context-param> <param-name>user</param-name><param-value>test</param-value> </context-par am> 在Servlet中要得到上面的参数,下()表达式是正确的。 (选择一项) A : getServletConfig(.getAttribute("user"); B: getServletContext().getAttribute(" user"); c: getServletConfig(.getInitParameter("user"); D: getServletContext().getInitParameter("user");
C: getServletConfig().getInitParameter("user") 是正确的表达式。
在web.xml中使用<context-param>元素声明的参数可以通过ServletConfig对象获取,而使用<init-param>元素声明的参数可以通过ServletContext对象获取。在这个问题中,参数是使用<context-param>元素声明的,因此可以通过getServletConfig()方法获取到ServletConfig对象,然后使用getInitParameter("user")方法获取参数的值。因此,选项C是正确的表达式。而选项A和B都是在获取Servlet或ServletContext的属性,而不是参数的值。选项D是获取<init-param>元素声明的参数的值,而不是<context-param>元素声明的参数的值。
下面试web.xm1中的片段<context-par am> <par am-name>user</param-name><paran-value>test</param-value> </context-param> 在servlet中要得到上面的参数,下()表达式是正确的。 (选择一项) A : getServletConfig().getAttribute("user");B: getServletContext().getAttribute(" user");c: getServletConfig(.getInitParameter("user");D: getServletContext().getInitParameter("user");
正确选项是 D:
```
getServletContext().getInitParameter("user");
```
解析:
在 web.xml 中使用 `<context-param>` 标签可以定义全局的初始化参数,这些参数可以被整个 Web 应用程序共享。在 Servlet 中可以通过 ServletContext 对象或者 ServletConfig 对象来获取初始化参数的值。
A 选项中,`getServletConfig().getAttribute("user")` 获取的是 ServletConfig 对象中的属性值,而不是初始化参数的值。因此,该表达式不正确。
B 选项中,`getServletContext().getAttribute("user")` 获取的是 ServletContext 对象中的属性值,而不是初始化参数的值。因此,该表达式不正确。
C 选项中,`getServletConfig().getInitParameter("user")` 获取的是 ServletConfig 对象中的初始化参数值,而不是全局的初始化参数值。因此,该表达式不正确。
D 选项中,`getServletContext().getInitParameter("user")` 获取的是全局的初始化参数值,符合题目要求,因此该表达式是正确的。
阅读全文