【发布时间】:2017-05-17 12:46:42
【问题描述】:
我有一个带有按钮提交的表单,我希望在单击按钮提交时通过 servlet 向数据库 (mariadb) 进行 POST,然后通过同一个 servlet 将值再次发布到同一事件的 HTML 页面(点击的按钮)。
当运行 servlet 时,它会通过 HTML 上的提交按钮获取新值。但只有当我自己运行 servlet 时(在 Netbeans 上右键单击代码并运行..)。它单独工作。
这里是doPost方法:
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Gson convertir = new Gson();
PrintWriter out = response.getWriter(); // PrintWriter imprime texto en un objeto. getWriter() devuelve un objeto PrintWriter.
String texto = request.getReader().readLine();//getReader() devuelve el contenido de la respuesta. readLine() lee el contenido de la variable "texto" y lo retorna.
TreeMap<String, String> objetoSabor = convertir.fromJson(texto, TreeMap.class);// Crea una lista treemap y convierte la respuesta de JSON a treemap..
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conMDB = DriverManager.getConnection("jdbc:mysql://localhost/cremo", "root", "root");
PreparedStatement sentencia = conMDB.prepareStatement("insert into inventarios (inv_hel_id, inv_sab_id, inv_cantidad ) values (?,?,?)");
sentencia.setString(1, objetoSabor.get("heladerias"));//"nombre" lo saca del objeto "sabor" en AJAX (sabor.nombre)
sentencia.setString(2, objetoSabor.get("sabor"));//"calorias" lo saca del objeto "calorias" en AJAX (sabor.calorias)
sentencia.setString(3, objetoSabor.get("calorias"));//"calorias" lo saca del objeto "calorias" en AJAX (sabor.calorias)
sentencia.execute();
这里是 doGet 方法:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conMDB = DriverManager.getConnection("jdbc:mysql://localhost/cremo", "root", "root");
PreparedStatement sentencia = conMDB.prepareStatement( "select * from inventarios");
ResultSet resultado = sentencia.executeQuery();//ResulSet pone el puntero en la primera fila de la tabla de la Base de datos.
while( resultado.next() ){
out.println("[OK] " + request.getParameter("heladerias") + ", " + resultado.getString(2) + ", " + resultado.getString(3));
}
html表单:
<form>
<fieldset>
<p>
<select id="heladerias" name="heladerias">
<option value="1">Palermo</option>
<option value="2">Recoleta</option>
<option value="3">Belgrano</option>
</select>
<select id="sabores" name="sabores" >
<option value="1">Sambayon italiano</option>
<option value="3">Sambayon Frances</option>
<option value="5">Mousse de Limon</option>
<option value="6">Pistacho</option>
</select>
<input id="sabor_calorias" type="number" name="quantity" min="1" max="6000">
</p>
<input id="fecha" type="date" name="fecha" step="1" min="2016-01-01" max="2016-12-31">
<input type="submit" value="Submit" onclick="envioCorrecto()"/>
</fieldset>
</form>
【问题讨论】:
标签: javascript java html servlets restful-architecture