<tr><td>商品Id:</td><td><input type="text" name="pid" placeholder="商品ID可以不输入"></td> 前端输入商品ID后通过数据库product表精确查询,将查询到的商品id、商品图片、商品价格展示在前端jsp页面
时间: 2023-12-04 15:03:34 浏览: 31
好的,你的问题是如何通过前端输入的商品ID精确查询数据库中的product表,并将查询到的商品id、商品图片、商品价格展示在前端jsp页面。
首先,在jsp页面中,需要一个表单来接收用户输入的商品ID,可以使用HTML的form标签来创建一个表单,表单中包含一个文本框用于输入商品ID和一个提交按钮。
接下来,在后端代码中,可以使用JDBC连接数据库,执行SQL语句查询product表中的数据。可以使用PreparedStatement对象来预编译SQL语句,然后将用户输入的商品ID作为参数传递给SQL语句中的占位符,执行查询操作。查询结果可以使用ResultSet对象进行处理,将查询到的商品id、商品图片、商品价格保存在一个JavaBean对象中。
最后,在jsp页面中,可以使用JSTL标签库中的<c:forEach>标签遍历JavaBean对象中的数据,将其展示在页面上。
需要注意的是,为了防止SQL注入攻击,需要对用户输入的商品ID进行过滤和验证,可以使用正则表达式进行过滤,或者使用第三方库如Apache Commons Lang库中的StringUtils类提供的isNumeric()方法进行验证。
相关问题
<tr><td>商品Id:</td><td><input type="text" name="pid" placeholder="商品ID可以不输入"></td> 前端输入商品ID后通过数据库product表精确查询,将查询到的商品id、商品图片、商品价格展示在前端jsp页面的代码
好的,以下是一个简单的实现示例:
前端jsp页面(index.jsp):
```
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商品查询</title>
</head>
<body>
<h1>商品查询</h1>
<form action="query.jsp" method="post">
<label for="pid">商品ID:</label>
<input type="text" name="pid" id="pid" placeholder="商品ID可以不输入">
<input type="submit" value="查询">
</form>
</body>
</html>
```
后端jsp页面(query.jsp):
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="java.sql.*" %>
<%@ page import="com.example.Product" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商品查询结果</title>
</head>
<body>
<h1>商品查询结果</h1>
<%
// 获取用户输入的商品ID
String pid = request.getParameter("pid");
if (pid == null || pid.equals("")) {
// 如果用户没有输入商品ID,则返回错误提示
out.println("<p>请输入商品ID</p>");
} else {
// 如果用户输入了商品ID,则连接数据库执行查询操作
try {
// 加载JDBC驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 预编译SQL语句
String sql = "SELECT * FROM product WHERE id = ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, pid);
// 执行查询操作
ResultSet rs = stmt.executeQuery();
// 处理查询结果
if (rs.next()) {
Product product = new Product();
product.setId(rs.getString("id"));
product.setImage(rs.getString("image"));
product.setPrice(rs.getDouble("price"));
// 将查询结果保存在JavaBean对象中,传递给jsp页面展示
request.setAttribute("product", product);
// 转发到商品展示页面
request.getRequestDispatcher("/product.jsp").forward(request, response);
} else {
// 如果没有查询到任何结果,则返回错误提示
out.println("<p>未查询到相关商品</p>");
}
// 关闭数据库连接
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
%>
</body>
</html>
```
商品展示页面(product.jsp):
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>商品展示</title>
</head>
<body>
<h1>商品展示</h1>
<c:if test="${not empty product}">
<p>商品ID:${product.id}</p>
<p>商品图片:<img src="${product.image}" alt="商品图片"></p>
<p>商品价格:${product.price}</p>
</c:if>
</body>
</html>
```
需要注意的是,以上示例中使用的是MySQL数据库和JSTL标签库,具体实现可能会因为数据库和框架的不同而有所不同,需要根据具体情况进行调整。
把一下代码生成流程图 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>register</title> <link rel="stylesheet" href="css/register.css"> <script src="js/zone.js"></script> </head> <body> <table align="center" cellpadding="5px"> <tr> <td> </td> <td align="left">注册</td> </tr> <tr> <td align="right">用户名:</td> <td> <input type="text" id="username" autocomplete="off" placeholder="输入姓名"> </td> </tr> <tr> <td align="right">密码</td> <td> <input type="password" id="password" placeholder="输入密码"> </td> </tr> <tr> <td align="right">确认密码</td> <td> <input type="password" id="repwd" placeholder="确认密码"> </td> </tr> <tr> <td> </td> <td> <input type="button" value="注册" id="register" onclick="reg()"> <a href="login.html">登录</a> </td> </tr> </table> </body> </html>
很好,我会为您生成代码的流程图。首先,整个代码的流程图可以分为两个大的模块:HTML和JavaScript。以下是HTML模块的流程图:
```
start -> HTML
HTML -> head
head -> meta charset
head -> meta http-equiv
head -> meta name
head -> title
head -> link
head -> script
HTML -> body
body -> table
table -> tr
tr -> td
td -> text "注册"
td --> td
td -> input type="text" id="username" autocomplete="off" placeholder="输入姓名"
tr --> table
table -> tr
tr -> td
td -> text "用户名:"
td --> td
td -> input type="password" id="password" placeholder="输入密码"
tr --> table
table -> tr
tr -> td
td -> text "确认密码"
td --> td
td -> input type="password" id="repwd" placeholder="确认密码"
tr --> table
table -> tr
tr -> td
td -> input type="button" value="注册" id="register" onclick="reg()"
td --> td
td -> a href="login.html"
tr --> table
table --> body
body --> HTML
HTML --> end
```
然后是JavaScript模块的流程图:
```
start -> JavaScript
JavaScript -> input type="button" id="register" onclick="reg()"
input type="button" id="register" onclick="reg()" -> function reg()
function reg() -> var username = document.getElementById("username").value
function reg() -> var password = document.getElementById("password").value
function reg() -> var repwd = document.getElementById("repwd").value
function reg() -> if (username == "" || password == "" || repwd == "")
if (username == "" || password == "" || repwd == "") -> alert("请填写完整信息!")
function reg() --> if
if (username == "" || password == "" || repwd == "") --> end
function reg() -> if (password != repwd)
if (password != repwd) -> alert("两次密码输入不一致!")
function reg() --> if
if (password != repwd) --> end
function reg() -> else
else -> alert("注册成功!")
function reg() --> else
else --> end
JavaScript --> end
```
希望我的回答可以帮助到您!