将数据库中的数据显示在文本框中

时间:2010-04-19 13:48:49

标签: java jsp servlets

我有2个JSP页面如下:

projectcategory.jsp

 <%
    Connection con = DbConnect.connect();
    Statement s = con.createStatement();

    ResultSet rs = s.executeQuery("select * from projectcategory");
 %>
        <DIV class="TabbedPanelsContent" align="center">
        <TABLE border="1">
            <TR>
                <TH>CATEGORY ID</TH>
                <TH>CATEGORY NAME</TH>
                <TH>Edit/Update</TH>
            </TR>

            <%
                while (rs.next()) {
            %>
            <%String p=rs.getString(1);%>

            <TR>
                <TD><%=rs.getString(1)%></TD>
                <TD><%=rs.getString(2)%></TD>
                <TD>

                <FORM action="EditPcat.jsp?pcatid=p"><INPUT type="submit"
                    value='edit/update'></INPUT>
                </FORM>

                </TD>
            </TR>

            <%
                }
            %>
        </TABLE>
        </DIV>

另一个是Editpcat.jsp:

</head>
<body>

<%String s=request.getParameter("p"); %>



<form action="ProjCatServlet" method="post">
<div align="right"><a href="projectcategory.jsp">view</a></div>
<fieldset>

<legend>Edit category</legend>
<table cellspacing="2" cellpadding="2" border="0">
    <tr>
        <td align="left">Category Id</td>

        <td><input type="text" name="pcatid" value="<%=s%>" ></td>
    </tr>

    <tr>
        <td align="right">Category Name</td>
        <td><input type="text" name="pcatname"></td>
    </tr>

    <tr>
        <td><input type="submit" value="submit"></td>
    </tr>

</table>

<input type="hidden" name="FUNCTION_ID" value="UPDATE">

</fieldset>
</form>

如何从我们从数据库获取的一个JSP页面显示另一个JSP的文本框中的值?

2 个答案:

答案 0 :(得分:2)

您将其作为请求参数传递,名称为pcatid

<FORM action="EditPcat.jsp?pcatid=p">

但您尝试将其作为名为p的请求参数获取:

<%String s=request.getParameter("p"); %>

将名字对齐。

那就是说,你用servlets标记了这个问题,但你根本就没有使用servlet。这段代码老实说是一场灾难。 Scriptlets 是一种糟糕的做法,而JDBC代码正在泄漏资源。原始Java代码属于Java类,而不属于JSP文件。使用像JSTL这样的taglib来控制页面流并使用EL(表达式语言)来访问后端数据。通过those tutorials来做正确的事。

开球示例:

public void doGet(HttpServletRequest request, HttpServletResponse response) {
    List<Project> projects = projectDAO.list();
    request.setAttribute("projects", projects);
    request.getRequestDispatcher("projects.jsp").forward(request, response);
}

<table>
    <c:forEach items="${projects}" var="project">
        <tr>
            <td>${project.id}</td>
            <td>${project.name}</td>
        </tr>
    </c:forEach>
</table>

答案 1 :(得分:0)

这非常脏,但您可以在表单中添加隐藏的INPUT标记:

<INPUT type="hidden" name="p1" value="<%=rs.getString(1)%>">
<INPUT type="hidden" name="p2" value="<%=rs.getString(2)%>">

BTW:你应该在不再需要时关闭你的声明,否则你可能会在服务器上使用过多的资源。