Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在HTML POST上处理自定义变量_Java_Mysql_Servlets - Fatal编程技术网

Java 在HTML POST上处理自定义变量

Java 在HTML POST上处理自定义变量,java,mysql,servlets,Java,Mysql,Servlets,我得到了一个Servlet,它可以处理Post表单并将所有定义的变量保存到MYSQL 我现在正试图编写另一个Servlet,它将使用req.getParameterMap()读取所有参数及其值,然后将它们发送到数据库,以防未指定的参数也被记录下来 我为第一个servlet编写的代码如下: import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import java.io.*; import java.sq

我得到了一个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();
        }
    }
}
import javax.servlet.*;
导入javax.servlet.http.*;
导入java.util.*;
导入java.io.*;
导入java.sql.*;
公共类QueryServlet扩展了HttpServlet{
@凌驾
public void doPost(HttpServletRequest-req,HttpServletResponse-res)引发IOException,ServletException
{
字符串transId=req.getParameter(“transId”)==null?”:req.getParameter(“transId”);
字符串instad=req.getParameter(“instad”)==null?”:req.getParameter(“instad”);
字符串cartId=req.getParameter(“cartId”)==null?”:req.getParameter(“cartId”);
字符串desc=req.getParameter(“desc”)==null?”:req.getParameter(“desc”);
字符串cost=req.getParameter(“cost”)==null?”:req.getParameter(“cost”);
字符串amount=req.getParameter(“amount”)==null?”:req.getParameter(“amount”);
字符串currency=req.getParameter(“currency”)==null?”:req.getParameter(“currency”);
字符串名称=req.getParameter(“名称”)==null?”:req.getParameter(“名称”);
字符串transStatus=req.getParameter(“transStatus”)==null?”:req.getParameter(“transStatus”);
字符串transTime=req.getParameter(“transTime”)==null?”:req.getParameter(“transTime”);
字符串cardType=req.getParameter(“cardType”)==null?”:req.getParameter(“cardType”);
连接conn=null;
PrintWriter out=res.getWriter();
试一试{
conn=DriverManager.getConnection(
“jdbc:mysql://localhost:3306/orders“,”根“,”根“);
String sqlStr=“插入订单详细信息”
+“值(?,,,,,,,,,,,,,,,,,,?)”;
try(PreparedStatement stmt=conn.prepareStatement(sqlStr)){
stmt.setString(1,transId);
stmt.setString(2,institd);
stmt.setString(3,cartId);
标准设置管柱(4,说明);
标准固定管柱(5,成本);
固定管柱(6,金额);
标准设置字符串(7,货币);
stmt.setString(8,名称);
stmt.setString(9,transStatus);
stmt.setString(10,传输时间);
标准设置管柱(11,卡片式);
int updateCount=stmt.executeUpdate();
对于(枚举en=req.getParameterNames();en.hasMoreElements();){
字符串paramName=en.nextElement();
字符串paramValue=req.getParameter(paramName);
}
}
}catch(SQLException-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();    
    }
}
import java.io.IOException;
导入java.io.PrintWriter;
导入java.util.Iterator;
导入java.util.Map;
导入java.util.Set;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类QueryServlet扩展了HttpServlet
{
受保护的void doPost(HttpServletRequest-req,HttpServletResponse-res)引发ServletException,IOException
{
PrintWriter pw=res.getWriter();
res.setContentType(“文本/html”);
Map m=req.getParameterMap();
Set s=m.entrySet();
迭代器it=s.Iterator();
while(it.hasNext()){
Map.Entry=(Map.Entry)it.next();
String key=entry.getKey();
String[]value=entry.getValue();
pw.println(“键为“+Key+”
”); 如果(value.length>1){ for(int i=0;i”+值[i].toString()+”
”; } }否则 println(“值为”+值[0]。toString()+”
”; pw.println(“--------------
”); } 关闭(); } }
任何帮助都将不胜感激


干杯

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

如果指定列,则只能使用所需的列,并且可以按所需的任何顺序使用

 insert into tablename (col1, col2) values('col1val', 'col2val');
 insert into tablename (col2, col1, col5) values('col2val', 'col1val', 'col5val');
从这里,您应该能够了解如何使用键和值变量修改第二个servlet以插入,并创建进入SQL语句的列列表和值列表部分的勇气