关于通过ServletContext获取数据出现的http500的错误的解决方案

1.问题的简述

  我创建了一个两个servlet以及一个jsp页面,假定给两个servlet分别命名(初始化数据servlet)和(数据处理servlet),jsp页面用于传递数据至数据处理servlet进行相应的数据处理。

  ①第一个servlet中创建了一个List集合同时将该集合进行初始化,并且将这个List集合保存到servletcontext对象中

  List<User> List = new ArrayList<User>();
  //将list保存到ServletContext作用域中
  this.getServletContext().setAttribute("List",List);

  ②第二个servlet通过调用第一个servlet中的List集合将从jsp页面接受到的数据进行保存

  List<User> userlist=(List<User>)this.getServletContext().getAttribute("List");

  userlist.add(user);     注明:user为我为jsp的数据创建的数据对象

  this.getServletContext().setAttribute("List", userlist);

 

然后当我运行服务器的时候就报错了。

2.问题产生的原因

  我在数据处理servlet的中通过调用初始化servlet中的list集合进行处理,但是当数据处理servlet接收到数据的时候初始化servlet并未执行,也就是说当前初始化servlet中的list集合并不存在,所以当我对list集合进行调用的时候就报了错。

3.解决方法

  在服务器开始运行的时候就让初始化servlet进行执行,所以我们需要在xml中对该servlet进行说明,让服务器开始执行的时候就首先执行初始化servlet,那我们为该servlet加入一行代码即可。

  

  <servlet>
  <servlet-name>InitServlet</servlet-name>             //对应我之前的初始化servlet
  <servlet-class>com.imooc.servlet.InitServlet</servlet-class>     //servlet对应的路径

  //表示在服务器开始运行的时候执行该servlet
  <load-on-startup>2</load-on-startup>

  </servlet>

4.说明

  出现该类问题的原因有很多,故本人对于该问题的说明仅供参考。

猜你喜欢

转载自www.cnblogs.com/ygxdbmx/p/9479671.html