<% 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 09:04:39 浏览: 17
这段代码中 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 异常了。
相关问题
ServletContext servletContext = this.getServletContext();
获取ServletContext对象的代码是:
ServletContext context = this.getServletContext();
通过这个代码,可以获取到当前Servlet的ServletContext对象。
这个对象在Java Servlet中扮演着重要的角色,它可以用来在不同的Servlet之间共享数据和资源。
例如,可以使用ServletContext对象来设置全局的属性或者获取一些全局的配置信息。
对于代码片段"ServletContext sc1=this.getServletConfig().getServletContext();"和"ServletContext sc2=req.getSession().getServletContext();",它们也是用来获取ServletContext对象的另外两种方式。
总结来说,通过调用this.getServletContext()方法可以获取到当前Servlet的ServletContext对象,从而实现在不同的Servlet之间共享数据和资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
下面试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")` 获取的是全局的初始化参数值,符合题目要求,因此该表达式是正确的。