gpt4 book ai didi

java - 处理 HTML POST 上的自定义变量

转载 作者:行者123 更新时间:2023-11-29 12:58:30 24 4
gpt4 key购买 nike

我有一个 Servlet,它可以处理 Post 表单并将所有定义的变量保存到 MYSQL。

我现在正在尝试编写另一个 Servlet,它将使用 req.getParameterMap() 读取所有参数及其值,然后将它们发送到数据库,以防未指定参数也会被记录。

我的第一个 servlet 的代码如下:

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.*;
import java.sql.*;

public class QueryServlet extends HttpServlet {

@Override
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException
{
String transId = req.getParameter("transId") == null ? "" : req.getParameter("transId");
String instId = req.getParameter("instId") == null ? "" : req.getParameter("instId");
String cartId = req.getParameter("cartId") == null ? "" : req.getParameter("cartId");
String desc = req.getParameter("desc") == null ? "" : req.getParameter("desc");
String cost = req.getParameter("cost") == null ? "" : req.getParameter("cost");
String amount = req.getParameter("amount") == null ? "" : req.getParameter("amount");
String currency = req.getParameter("currency") == null ? "" : req.getParameter("currency");
String name = req.getParameter("name") == null ? "" : req.getParameter("name");
String transStatus = req.getParameter("transStatus") == null ? "" : req.getParameter("transStatus");
String transTime = req.getParameter("transTime") == null ? "" : req.getParameter("transTime");
String cardType = req.getParameter("cardType") == null ? "" : req.getParameter("cardType");
Connection conn = null;
PrintWriter out = res.getWriter();
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/orders", "root", "root");

String sqlStr = "insert into orderdetails "
+ "values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement stmt = conn.prepareStatement(sqlStr)) {
stmt.setString(1, transId);
stmt.setString(2, instId);
stmt.setString(3, cartId);
stmt.setString(4, desc);
stmt.setString(5, cost);
stmt.setString(6, amount);
stmt.setString(7, currency);
stmt.setString(8, name);
stmt.setString(9, transStatus);
stmt.setString(10, transTime);
stmt.setString(11, cardType);
int updateCount = stmt.executeUpdate();
for (Enumeration<String> en = req.getParameterNames(); en.hasMoreElements();) {
String paramName = en.nextElement();
String paramValue = req.getParameter(paramName);
}
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}

对于第二个 Servlet,我设法让它能够读取所有参数及其值并将它们显示在网页上,但我不知道如何将它们获取到数据库,或者通过创建参数列或已创建参数并仅创建行值。

您能为我提供一些指导或示例吗?

下面是第二个 Servlet 的代码;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

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

public class QueryServlet extends HttpServlet
{
protected void doPost(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
{
PrintWriter pw=res.getWriter();
res.setContentType("text/html");

Map m=req.getParameterMap();
Set s = m.entrySet();
Iterator it = s.iterator();

while(it.hasNext()){

Map.Entry<String,String[]> entry = (Map.Entry<String,String[]>)it.next();

String key = entry.getKey();
String[] value = entry.getValue();

pw.println("Key is "+key+"<br>");

if(value.length>1){
for (int i = 0; i < value.length; i++) {
pw.println("<li>" + value[i].toString() + "</li><br>");
}
}else
pw.println("Value is "+value[0].toString()+"<br>");

pw.println("-------------------<br>");
}

pw.close();
}
}

任何帮助将不胜感激。

干杯

最佳答案

首先,您需要在执行插入时开始指定列,除非您希望代码稍后在向表中添加列时中断。您执行此操作的方式始终必须包含所有列并按定义的顺序。

如果您指定了列,那么您可以仅使用您想要的列,并且可以按照您想要的任何顺序。

 insert into tablename (col1, col2) values('col1val', 'col2val');
insert into tablename (col2, col1, col5) values('col2val', 'col1val', 'col5val');

从那里您应该能够弄清楚如何修改第二个 Servlet 以使用 Key 和 Value 变量进行插入,并创建深入 SQL 语句的列列表和值列表部分的内容。

关于java - 处理 HTML POST 上的自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23681096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com