从servlet获取数据并在jsp中打印 [英] Getting data from servlet and printing in jsp

查看:69
本文介绍了从servlet获取数据并在jsp中打印的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要有关如何打印从Jsp的Servlet获取的ResultSet的帮助 这是Servlet代码:

I Need Help Regarding How to Print ResultSet Which i Am Getting From Servlet in Jsp Here Is The Servlet Code:

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

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

public class EditRecord extends HttpServlet {
private static final long serialVersionUID = 1L;

Connection con;
Statement stmt;
ResultSet rs;
DBConnection dbconn;
String sql;
HttpSession session;

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

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPerform(request, response);
} 

private void doPerform(HttpServletRequest request,HttpServletResponse response) 
{

    try {
        PrintWriter out = response.getWriter();
        System.out.println("This is EditRecord Servlet");
        session= request.getSession();
        String id =(String) session.getAttribute("id");
        System.out.println(id);
        dbconn = new DBConnection();
        con= dbconn.getConnection();
        System.out.println(con);
        sql ="select * from STUDENT_CRUD where id='"+id+"' ";
        System.out.println(sql);
        stmt = con.createStatement();
        rs = stmt.executeQuery(sql);
        System.out.println("Resultset From EditRecord Servlet  ="+rs);
        if(rs.next())
        {
            System.out.println(rs.getString(1));
            System.out.println(rs.getString(2));
            System.out.println(rs.getString(3));
            System.out.println(rs.getString(4));
            System.out.println(rs.getString(5));
        }


    } 
    catch (Exception e) 
    {

        e.printStackTrace();
    }
    finally
    {

        try 
        {
            session.setAttribute("resultset", rs);
            RequestDispatcher rd= request.getRequestDispatcher("editrecord.jsp");
            rd.forward(request, response);
            //response.sendRedirect("editrecord.jsp");
        } 
        catch (Exception e) 
        {
            System.out.println("This is finally block editrecord.jsp");
            e.printStackTrace();
        }
    }

}

然后我写的Jsp文件就像:

Then The Jsp File i write is like:

<%@page import="java.sql.ResultSet"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<form name="editrecord">

    <% ResultSet rs =(ResultSet)session.getAttribute("resultset"); 
      out.println("this is getAttribute of resultset"+rs);

    %>
     <TABLE BORDER="1">
        <TR>
            <TH>ID</TH>
            <TH>FIRSTNAME</TH>
            <TH>LASTNAME</TH>
            <TH>SUBJECT</TH>
            <TH>YEARS</TH>
        </TR>
        <% while(rs.next()){ %>
        <tr>
 <!--               <td>ID</td> -->
            <td> <input type="text" name="id" value="<%=rs.getString(1) %>"></td>
        </tr>
        <tr>
<!--                <td>FirstName</td> -->
            <td><input type="text" name="firstname" value="<%=rs.getString(2) %>"></td>
        </tr>
        <tr>
<!--                <td>LastName</td> -->
            <td><input type="text" name="lastname" value="<%=rs.getString(3) %>"></td>
        </tr>
        <tr>
<!--                <td>Subject</td> -->
            <td><input type="text" name="subject" value="<%=rs.getString(4) %>"></td>
        </tr>
        <tr>
<!--                <td>years</td> -->
            <td><input type="text" name="years" value="<%=rs.getString(5) %>"></td>

        </tr>           
        <% } %>
    </TABLE>    



 </form>    

我得到的结果是:

enter code here

这是resultsetoracle.jdbc.driver.OracleResultSetImpl@5e79fc的getAttribute ID FIRSTNAME LASTNAME SUBJECT YEAR

this is getAttribute of resultsetoracle.jdbc.driver.OracleResultSetImpl@5e79fc ID FIRSTNAME LASTNAME SUBJECT YEARS

我正在进入EditServet而不是进入editrecord.jsp的ResultSetData为什么? 请帮助..........

The ResultSetData i am Getting inside EditServet but not in editrecord.jsp Why? pls help..........

推荐答案

我建议避免使用Scriplet,而应使用 JSP标准标记库表达语言,它易于使用且不易出错.

I suggest to avoid Scriplet instead use JSP Standard Tag Library and Expression language that is easy to use and less error prone.

要遵循的步骤:

  • 创建一个POJO,其中包含每一行的数据
  • 填充POJO列表并将其设置为请求属性
  • 读取请求属性并使用JSTL和EL在JSP中获取列表
  • 使用JSTL核心标记库迭代列表

示例代码:

POJO:

public class StudentDetail{
    private String id;
    private String fistName;
    private String lastName;
    private String subject;
    private int year;
    // getter & setter
}

Servlet:

List<StudentDetail> list = new ArrayList<StudentDetail>();

if (rs.next()) {
    StudentDetail studentDetail = new StudentDetail();
    studentDetail.setId(rs.getString("ID"));
    studentDetail.setFistName(rs.getString("FIRST_NAME"));
    studentDetail.setLastName(rs.getString("LAST_NAME"));
    studentDetail.setSubject(rs.getString("SUBJECT"));
    studentDetail.setYear(rs.getInt("YEAR"));

    list.add(studentDetail);
}

request.setAttribute("list",list);

RequestDispatcher rd= request.getRequestDispatcher("editrecord.jsp");
rd.forward(request, response);

JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<c:if test="${list not empty }">
    <table>
        <c:forEach items="${list}" var="record">
            <tr>
                <td>${record.id }</td>
                <td>${record.firstName }</td>
                <td>${record.lastName }</td>
                <td>${record.subject }</td>
                <td>${record.year }</td>
            </tr>
        </c:forEach>
    </table>
</c:if>

这篇关于从servlet获取数据并在jsp中打印的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆