【问题标题】:display data in jsp from servlet从 servlet 在 jsp 中显示数据
【发布时间】:2017-03-01 05:57:10
【问题描述】:

我是一个初学者,我正在尝试在数据库中显示数据。我有一个控制器 servlet、DBhelper、table.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;
    }
}

这是 table.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 中遇到错误,在 while(rs.next) 行中

【问题讨论】:

  • out.println(username); ... 你在这条线上有杂散的反引号。
  • 我刚刚删除它,但仍然出现错误
  • 您遇到了哪些错误?为什么要强迫我们猜测而不是阅读和发布?

标签: jsp servlets


【解决方案1】:

问题出在这里:

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

在设置users 属性之前 将流转发到JSP 页面,因此您的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)。

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多