数据库查询的JSP应用程序范围设置

时间:2013-05-19 11:08:49

标签: java jsp

我希望将查询结果存储在HashMap中,用于从另一个类传递的每个“service”参数,然后通过application.setAttribute()将它们存储到应用程序范围中,如果服务存在于应用程序范围内,我可以获取这些值来自application.getAttribute()。每个服务有3列要存储。如果它们存在于应用程序范围内,如何根据服务参数获取这3列值?请建议如何在应用程序范围内存储值(如果我在以下代码中出错)。

 service=request.getParameter("service");   
 Map<String,String> FreetextMap=new HashMap<String,String>();

if(application.getAttribute(service)==null )
{
query = "SELECT aUnique,aTitle,aBody FROM FreeTexts WHERE service='" +service+ "'     
rs = DBUtils.getRs(con,query);
if (rs.next()) {
clientFreetextMap.put("unique", rs.getString("aUnique"));
clientFreetextMap.put("body",rs.getString("aBody"));
clientFreetextMap.put("txt",rs.getString("aTitle"));
application.setAttribute(service,clientFreetextMap);

 }

以下代码负责从应用程序范围获取值,但是我无法知道我遗漏了一些声明服务的内容。我不知道在哪里写服务?如何获取有关服务参数的值

    else 
     {
   txt=(String) application.getAttribute(clientFreetextMap.get("txt"));
   uniqueid=(String) application.getAttribute(clientFreetextMap.get("unique"));
   adsbody=(String) application.getAttribute(clientFreetextMap.get("body"));
     }

1 个答案:

答案 0 :(得分:1)

您将clientFreetextMap本身存储在if块中。您应该在Map块中获得相同的else,然后从中获取所需的数据。尝试这样的事情:

clientFreetextMap = (Map)application.getAttribute(service);
txt = clientFreetextMap.get("txt");
uniqueid = clientFreetextMap.get("unique");
adsbody = clientFreetextMap.get("body");