Hallo,
ich muss für mein Studium eine kleines Web-Projekt abliefern und es sollte auch Daten aus einem Formular über ein Servlet in eine DB schreibe und zum Schluss in einer JSP ausgeben.
Folgendes habe ich mit den Unterlagen aus meiner Vorlesung programmiert, aber es will einfach nicht funktionieren. Ich kenne mich im Moment einfach noch zu wenig damit aus und hoffe wirklich ihr könnt mir weiterhelfen!!
Hier meine Infos:
- die Form, das Servlet, die Bean und die JSP befinden sich im Root-Verzeichnis
- Datenbank wurde mit MySQL erstellt:
> Datenbank: "mydb"
> Tablename: "products"
> "id" (INT, PrimaryKey), "productname" (VARCHAR(255)), "quantity" (INT))
Produktform.html:
CreateServlet.java:
Product.java:
1_outputdata.jsp:
ich muss für mein Studium eine kleines Web-Projekt abliefern und es sollte auch Daten aus einem Formular über ein Servlet in eine DB schreibe und zum Schluss in einer JSP ausgeben.
Folgendes habe ich mit den Unterlagen aus meiner Vorlesung programmiert, aber es will einfach nicht funktionieren. Ich kenne mich im Moment einfach noch zu wenig damit aus und hoffe wirklich ihr könnt mir weiterhelfen!!
Hier meine Infos:
- die Form, das Servlet, die Bean und die JSP befinden sich im Root-Verzeichnis
- Datenbank wurde mit MySQL erstellt:
> Datenbank: "mydb"
> Tablename: "products"
> "id" (INT, PrimaryKey), "productname" (VARCHAR(255)), "quantity" (INT))
Produktform.html:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Produktformular</title>
</head>
<body>
<h1>Produktformular</h1>
<form method="post" action="CreateServlet" accept-charset="utf-8">
<div>
<label for="productid_id">Produkt-ID:</label>
<input type="text" name="productid" id="productid_id" />
</div>
<div>
<label for="productname_id">Produktname:</label>
<input type="text" name="productname" id="productname_id" />
</div>
<div>
<label for="quantity_id">Menge:</label>
<input type="number" name="quantity" id="quantity_id" />
</div>
<div>
<label for="supplier_id">Lieferanten:</label>
<select name="supplier" id="supplier_id" size="3">
<option value="supplier_01" selected>Lieferant 1</option>
<option value="supplier_02">Lieferant 2</option>
<option value="supplier_03">Lieferant 3</option>
<option value="supplier_04">Lieferant 4</option>
<option value="supplier_05">Lieferant 5</option>
<option value="supplier_06">Lieferant 6</option>
<option value="supplier_07">Lieferant 7</option>
</select>
</div>
<div>
<button type="submit" id="button">Daten senden</button>
</div>
</form>
</body>
</html>
CreateServlet.java:
Java:
package edu.thi.servlet;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Resource;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import edu.thi.bean.Product;
/**
* Servlet implementation class CreateServlet
*/
@WebServlet("/CreateServlet")
public class CreateServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Resource(lookup="jdbc/Mydb")
private DataSource ds;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Servlet zur Entgegennahme von Formularinhalten, Speicherung der Daten in einer DB und Generierung
// eines Beans zur Weitergabe der Formulardaten an eine JSP
request.setCharacterEncoding("UTF-8"); // In diesem Format erwartet das Servlet jetzt die Formulardaten
Product pro = new Product();
pro.setId(Integer.valueOf(request.getParameter("productid")));
pro.setProductname(request.getParameter("productname"));
pro.setQuantity(Integer.valueOf(request.getParameter("quantity")));
// DB-Zugriff
persist(pro);
// Scope "Request"
request.setAttribute("Produkt_Ident", pro);
// Weiterleiten an JSP
final RequestDispatcher dispatcher = request.getRequestDispatcher("1_outputdata.jsp");
dispatcher.forward(request, response);
}
private void persist(Product pro) throws ServletException {
// DB-Zugriff
String[] generatedKeys = new String[] {"id"}; // Name der Spalte(n), die automatisch generiert wird(werden)
try (Connection con = ds.getConnection();
/*final Statement stmt = con.createStatement()*/
PreparedStatement pstmt = con.prepareStatement(
"INSERT INTO products (productname, quantity) VALUES (?,?)",
generatedKeys)){
// Zugriff Über Klasse java.sql.Statement
/* stmt.executeUpdate("INSERT INTO employees (first,last,age) VALUES ('" +
form.getFirstname() + "','" +
form.getLastname() + "','" +
form.getAge() + "')"
);
*/
// Zugriff über Klasse java.sql.PreparedStatement
pstmt.setString(1, pro.getProductname());
pstmt.setLong(2, pro.getQuantity());
pstmt.executeUpdate();
// Generierte(n) Schlüssel auslesen (funktioniert nur mit PreparedStatement)
ResultSet rs = pstmt.getGeneratedKeys();
while (rs.next()) {
pro.setId(rs.getInt(1));
}
} catch (Exception ex) {
throw new ServletException(ex.getMessage());
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Product.java:
Java:
package edu.thi.bean;
import java.io.Serializable;
import java.util.Date;
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String productname;
private Integer quantity;
private Date proddate;
private Date prodtime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Date getProddate() {
return proddate;
}
public void setProddate(Date proddate) {
this.proddate = proddate;
}
public Date getProdtime() {
return prodtime;
}
public void setProdtime(Date prodtime) {
this.prodtime = prodtime;
}
}
1_outputdata.jsp:
HTML:
package edu.thi.bean;
import java.io.Serializable;
import java.util.Date;
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String productname;
private Integer quantity;
private Date proddate;
private Date prodtime;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public Integer getQuantity() {
return quantity;
}
public void setQuantity(Integer quantity) {
this.quantity = quantity;
}
public Date getProddate() {
return proddate;
}
public void setProddate(Date proddate) {
this.proddate = proddate;
}
public Date getProdtime() {
return prodtime;
}
public void setProdtime(Date prodtime) {
this.prodtime = prodtime;
}
}