2017-03-01 74 views
0

我是一个begginer,我试图在数据库中显示数据。我有一个控制器servlet,DBhelper,table.jsp和索引...在servlet中显示jsp的数据

这是控制器servlet

import java.io.IOException; 
import java.sql.ResultSet; 

import javax.annotation.Resource; 
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.sql.DataSource; 
import demo2.DBhelper; 

/** 
* Servlet implementation class servletJsp 
*/ 
@WebServlet("/servletJsp") 
public class controller extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    @Resource(name="") 
    private DataSource dataSource; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     String page; 
     if(request.getParameterMap().containsKey("page")){ 
      page =request.getParameter("page"); 
     }else{ 
      page="index"; 
     } 
     if(page.equals("table")){ 
      ResultSet rs =new DBhelper().getUsers(dataSource); 
      request.getRequestDispatcher("table.jsp").forward(request, response); 
      request.setAttribute("users", rs); 
    } 

} 
} 

这是DBhelper ..

package demo2; 



import java.sql.Connection; 
import java.sql.ResultSet; 
import java.sql.Statement; 


import javax.sql.DataSource; 

public class DBhelper { 

    private ResultSet users =null; 

    public ResultSet getUsers(DataSource dataSource) { 

     Connection con; 
     Statement st; 

     try{ 
     con =dataSource.getConnection(); 
     st=con.createStatement(); 

     String query="select * from authorities"; 
     users= st.executeQuery(query); 
     }catch(Exception e){ 

      e.printStackTrace(); 
     } 
     return users; 
    } 
} 

这是表.JSP

<%@ page import="java.sql.ResultSet" %> 
<% 
ResultSet rs = (ResultSet)request.getAttribute("users"); 
while(rs.next()){ 
    String username = rs.getString("username"); 
    out.println(username);`` 
} 

%> 

我在table.jsp得到一个错误,在该行同时(rs.next)

+0

'out.println(username);'......你在这条线上有反射。 –

+0

我刚刚删除它,并得到错误 – oma

+0

你会得到哪个错误?你为什么强迫我们猜测而不是阅读并发布它? –

回答

2

的问题是在这里:

if(page.equals("table")){ 
    ResultSet rs = new DBhelper().getUsers(dataSource); 
    request.getRequestDispatcher("table.jsp").forward(request, response); 
    request.setAttribute("users", rs); 
} 

你要转发之前流向JSP页面设置users属性,因此你ResultSet rs是在JSP null。顺序更改为

if(page.equals("table")){ 
    ResultSet rs = new DBhelper().getUsers(dataSource); 
    request.setAttribute("users", rs); 
    request.getRequestDispatcher("table.jsp").forward(request, response); 
} 

,它应该工作(当然,如果DBhelper.getUsers(...)回报不为空ResultSet)。

+0

它现在有效,非常感谢你.. – oma