在 jsp 页面中的复选框值附近动态添加文本框
To add a text box dynamically near a check box value in jsp page
我需要帮助在 jsp 页面的复选框值附近动态显示文本框,而不使用 JSTL 实现。
工作流程:
1.The 用户在复选框中输入一个值并单击搜索按钮
2.On点击搜索调用servlet。 servlet 专注于数据库实现并将结果集值转发到请求来自的同一 jsp 页面。
3.The结果集值在jsp页面中以复选框的形式显示。在每个复选框附近应显示一个文本框。
问题:
结果集值在我的 jsp 中以复选框的形式显示 page.But 我需要在我的 [=47= 中的复选框值附近添加一个文本框] 页 dynamically.i.e.如果我有 3 个复选框,那么应该在 jsp 页面中靠近 3 个复选框值的每一个处显示一个文本框。
这是我的代码。
Productlist.jsp
<%@page import="java.util.List"%>
<%@page import="web.Products"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Products</title>
</head>
<body>
<form method="post" align="center" action="ProductList">
Company Name:<input type="text" size="20" id="company" name="company" />
<input type="submit" value="search"/>
<%
List<Products> pdts = (List<Products>) request.getAttribute("list");
if(pdts!=null){
for(Products prod: pdts){
out.println("<input type=\"checkbox\" name=\"prod\" value=\"" + prod.getProductname() + "\">" + prod.getProductname() + "<br>");
}
}
%>
</form>
</body>
</html>
Servlet代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;
public class ProductList extends HttpServlet {
static final String dbURL = "jdbc:mysql://localhost:3306/pdt";
static final String dbUser = "root";
static final String dbPass = "root";
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ResultSet rs = null;
Connection connection = null;
List<Products> pdt = new ArrayList<Products>();
try{
String company =request.getParameter("company");
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection (dbURL,dbUser,dbPass);
String sql="select product_pck from comp_pdt_list where company_name='"+company+"'";
PreparedStatement prep = connection.prepareStatement(sql);
rs=prep.executeQuery();
if(rs!=null)
{
while(rs.next())
{
Products prod=new Products();
prod.setProductname(rs.getString("product_pck"));
pdt.add(prod);
}
request.setAttribute("list",pdt);
RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");
rd.forward(request,response);
return;
}
prep.close();
}
catch(Exception E){
//Any Exceptions will be caught here
System.out.println("The error is"+E.getMessage());
}
finally {
try {
connection.close();
}
catch (Exception ex) {
System.out.println("The error is"+ex.getMessage());
}
}
}
}
我找到了解决方案。
我们可以在 for 循环内显示文本框,而不是使用 if 条件,这样文本框将根据结果集大小动态显示在复选框值附近。
这是代码
<td> <b>
<%
List<Products> pdts = (List<Products>) request.getAttribute("list");
if(pdts!=null){
for(Products prod: pdts){
out.println("<input type=\"checkbox\" name=\"prod\" value=\"" + prod.getProductname() + "\">" + prod.getProductname()+"<br>");
}
%>
</b></td>
<td>
<%
for(Products prod: pdts){
out.println("<input type=\"text\" name=\"free\" style=\"width:50px; height:22px\"/><br/>");
} }
%>
</td>
我需要帮助在 jsp 页面的复选框值附近动态显示文本框,而不使用 JSTL 实现。
工作流程:
1.The 用户在复选框中输入一个值并单击搜索按钮
2.On点击搜索调用servlet。 servlet 专注于数据库实现并将结果集值转发到请求来自的同一 jsp 页面。
3.The结果集值在jsp页面中以复选框的形式显示。在每个复选框附近应显示一个文本框。
问题:
结果集值在我的 jsp 中以复选框的形式显示 page.But 我需要在我的 [=47= 中的复选框值附近添加一个文本框] 页 dynamically.i.e.如果我有 3 个复选框,那么应该在 jsp 页面中靠近 3 个复选框值的每一个处显示一个文本框。
这是我的代码。
Productlist.jsp
<%@page import="java.util.List"%>
<%@page import="web.Products"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Products</title>
</head>
<body>
<form method="post" align="center" action="ProductList">
Company Name:<input type="text" size="20" id="company" name="company" />
<input type="submit" value="search"/>
<%
List<Products> pdts = (List<Products>) request.getAttribute("list");
if(pdts!=null){
for(Products prod: pdts){
out.println("<input type=\"checkbox\" name=\"prod\" value=\"" + prod.getProductname() + "\">" + prod.getProductname() + "<br>");
}
}
%>
</form>
</body>
</html>
Servlet代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpSession;
public class ProductList extends HttpServlet {
static final String dbURL = "jdbc:mysql://localhost:3306/pdt";
static final String dbUser = "root";
static final String dbPass = "root";
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
ResultSet rs = null;
Connection connection = null;
List<Products> pdt = new ArrayList<Products>();
try{
String company =request.getParameter("company");
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection (dbURL,dbUser,dbPass);
String sql="select product_pck from comp_pdt_list where company_name='"+company+"'";
PreparedStatement prep = connection.prepareStatement(sql);
rs=prep.executeQuery();
if(rs!=null)
{
while(rs.next())
{
Products prod=new Products();
prod.setProductname(rs.getString("product_pck"));
pdt.add(prod);
}
request.setAttribute("list",pdt);
RequestDispatcher rd=request.getRequestDispatcher("Productlist.jsp");
rd.forward(request,response);
return;
}
prep.close();
}
catch(Exception E){
//Any Exceptions will be caught here
System.out.println("The error is"+E.getMessage());
}
finally {
try {
connection.close();
}
catch (Exception ex) {
System.out.println("The error is"+ex.getMessage());
}
}
}
}
我找到了解决方案。
我们可以在 for 循环内显示文本框,而不是使用 if 条件,这样文本框将根据结果集大小动态显示在复选框值附近。
这是代码
<td> <b>
<%
List<Products> pdts = (List<Products>) request.getAttribute("list");
if(pdts!=null){
for(Products prod: pdts){
out.println("<input type=\"checkbox\" name=\"prod\" value=\"" + prod.getProductname() + "\">" + prod.getProductname()+"<br>");
}
%>
</b></td>
<td>
<%
for(Products prod: pdts){
out.println("<input type=\"text\" name=\"free\" style=\"width:50px; height:22px\"/><br/>");
} }
%>
</td>