2014-03-05 146 views
0

我刚开始使用连接池,似乎无法获得任何工作,例如获取数据库中的所有模块。Servlet没有设置属性?

这里是我的testconnectionservlet必须是这个问题:

package Servlet; 


import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 

import DTO.Module; 
import DAO.*; 
import Service.ModuleService; 



/** 
    * Servlet implementation class checkLoginServlet 
    */ 
@WebServlet(urlPatterns={"/TestConnectionServlet"}) 
public class TestConnectionServlet extends HttpServlet 
{ 
private static final long serialVersionUID = 1L; 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public TestConnectionServlet() 
{ 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    processRequest(request, response); 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    processRequest(request, response); 
} 

private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 

     String forwardToJsp = ""; 
     HttpSession session = request.getSession(); 
     String clientSessionId = session.getId(); 

    //Check the 'action' parameter to see what the user wants... 
    if (request.getParameter("action") != null) 
    { 
     // Create a LoginCommand and execute it 




     ModuleService mService = new ModuleService(); 
     if (request.getParameter("action") == "allModules") { 
      List allModules = mService.getAllModules(); 
      session.setAttribute("theModulesNoOrder", allModules); 
      forwardToJsp = "all-Modules.jsp"; 
     } else if (request.getParameter("action") == "allModulesAsc") { 
      List allModulesAsc = mService.getAllModulesCodeAsc(); 
      session.setAttribute("theModulesAsc", allModulesAsc); 
      forwardToJsp = "whatever.jsp"; 
     } 
    } 

    //Get the request dispatcher object and forward the request to the appropriate JSP page... 
    //RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(forwardToJsp); 
    //dispatcher.forward(request, response); 

    //to stop UserActionServelet coming up in URL when logging in. 
    //lines above were in it before 
    response.sendRedirect(forwardToJsp); 
} 
} 

有人注意到任何不寻常的?

当我做一些像这样在JSP我得到一个显示java.lang.NullPointerException,但应该不是这个从servlet?:

<% 
     List<Module> modules; 
     modules = (List)(request.getSession().getAttribute("theModulesAsc")); 
     out.print(modules.size()); 
     %> 

堆栈跟踪在那里:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393) 
+0

可以请您发布stacktrace吗? –

+1

'request.getParameter(“action”)==“allModules”'看起来不太好。看看:[我如何比较Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – Pshemo

+0

@ mig-25foxbat更新了问题。 – user3385250

回答

2

变化

if (request.getParameter("action") == "allModules") { 

使用equals()

+0

以前只是使用==,它的工作虽然,但没有连接池。将尝试它!编辑 - 仍然无法正常工作。 – user3385250

+0

可能在你的字符串被缓存在池中之前 –

+0

不明白你的意思是说实话。 – user3385250

0

这些属性在JSP页面中不可用,因为在servlet中,您将重定向到JSP而不是转发给它。重定向会导致完整的往返浏览器,然后浏览器会在单独请求中调用您的JSP页面,因此失去了原始请求中设置的任何属性。

它看起来像你注释掉了代码在你的servlet(dispatcher.forward())中执行前进以代替response.sendRedirect()。尝试恢复到前进。