Java 在HTML POST上处理自定义变量
我得到了一个Servlet,它可以处理Post表单并将所有定义的变量保存到MYSQL 我现在正试图编写另一个Servlet,它将使用req.getParameterMap()读取所有参数及其值,然后将它们发送到数据库,以防未指定的参数也被记录下来 我为第一个servlet编写的代码如下: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
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语句的列列表和值列表部分的勇气