Zapisywanie danych z formularza html do bazy

0

Witam,
w związku z tym, że zacząłem rozkminiać servlety, natknąłem się na problem z którym nie jestem w stanie sobie poradzić, dlatego też bardzo proszę o pomoc.

Mam sobie formularzyk z dwoma polami tekstowymi i buttonem. Kod tego formularza wygląda następująco:

<html>

<head>
<title>Przyjecia</title>
</head>

<body>

<form action="/servlet/Przyjmowanie" method="POST"><div align="center"> 
  </div><p align="center">Sczytaj srodkowy kod etykiety<br></p><p align="center"> <input type="text" name="srodek" size="40"></p>
  <p align="center">Sczytaj dolny kod etykiety</p><p align="center"><input type="text" name="dol" size="40
  "></p>
  <p align="center">&nbsp;<input type="submit" value="Potwierdzam" name="potwierdzam"></p>
</form>

</body>

</html>

Kliknięcie buttona potwierdzam, chciałbym żeby skutkowało uruchomieniem servletu, który zapisze mi w bazie wpisane w formularzu dane i taki servlet mam napisany, poniżej jego kod:

package przyjecie;

import java.io.*;
import java.sql.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.http.*;

public class Przyjmowanie extends HttpServlet {

	private static String dzisiaj;

	private static void generujDzisiaj() {
		Date data = Calendar.getInstance().getTime();
		DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		dzisiaj = formatter.format(data);
	}
	
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		generujDzisiaj();
		response.setContentType("text/html");
		PrintWriter pw = response.getWriter();
		String connectionURL = "jdbc:mysql://localhost:3306/przyjecia";
		Connection connection;
		try {
			String srodek = request.getParameter("srodek");
			String dol = request.getParameter("dol");
			pw.println(srodek);
			pw.println(dol);
			Class.forName("com.mysql.jdbc.Driver");
			connection = DriverManager.getConnection(connectionURL, "develo",
					"develo");
			PreparedStatement pst = connection
					.prepareStatement("insert into przyjece "
							+ "(srodek, dol, data) values(?,?,?)");
			pst.setString(1, srodek);
			pst.setString(2, dol);
			pst.setString(3, dzisiaj);
			int i = pst.executeUpdate();
			if (i != 0) {
				pw.println("<br>Dodano do bazy");
			} else {
				pw.println("Jakiś błąd.");
			}
		} catch (Exception e) {
			pw.println(e);
		}
	}
}

Żeby było wszystko kompletne, zamieszczam jeszcze zawartość web.xml - to może ułatwi :) Ja nie wiem gdzie może tkwić błąd, a tkwi gdzieś na pewno, ponieważ o ile mój formularz się odpala poprawnie, o tyle servlet już śmigać nie chce...

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 <servlet>
  <description>Przyjmowanie</description>
  <display-name>Servlet do przyjmowania</display-name>
  <servlet-name>Przyjmowanie</servlet-name>
  <servlet-class>przyjecie.Przyjmowanie</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>Przyjmowanie</servlet-name>
  <url-pattern>/Przyjmowanie.html</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

Będę wdzięczny za pomoc :)

Pozdrawiam.

0

Raz - ja nie widze tutaj zadneog formularza JSP, tylko zwykly HTML i kod servletu - zmien temat bo wyleci.

W HTML w form masz akcje: /servlet/Przyjmowanie
natomiast w web.xml masz mapowanie: /Przyjmowanie.html
Zdecyduj sie.

Zmien akcje w form na /przyjmowanie, oraz mapowanei w web.xml na /przyjmowanie. Magicznie zacznie dzialac (chyba), potrzeba tylko troche spojnosci ;d

Dodatkowo, masz identyfikacje BASIC, ale nie masz ustawionych zadnych rol - kogo wiec chcesz identyfikowac, i wzgledem jakich rol / userow? Ponadto, nie masz zadnego url ktory jest chroniony (element security-constraint).

0

Spoko - dopiero się uczę - za jakiś czas będę wiedział co piszę :)

To gdzie zarzucasz mi brak spójności to efekt mojej dotychczasowej walki z problemem - bawiłem się tym na wiele sposobów... I tak zostało :)

Mimo to zmieniłem akcję w formularzu i mapowanie w web.xml, ale to nie zmienia w ogóle postaci rzeczy - oprócz ścieżki adresu :)

0

A co sie dzieje? Servlet nie jest wywolany, jakis wyjatek dostajesz?

0

Wygląda na to, że nie jest wywoływany, ponieważ po wciśnięciu buttona pojawia się pusta strona. Nie mam żadnego wyjątku.

0

Czyli wyglada na to ze jest wywolywany. Jakby nie byl to by znaczylo ze nie mozna go odnalezc, i wierz mi ze bys dostal na twarz konkretny komunikat o bledzie. W bazie sprawdziles czy sie cos zapisuje?

0

A to ciekawe, że się wywołuje bo w bazie rekordów mi nie przybywa...

A czy można ten obecny servlet przerobić tak żeby zapisał tylko rekord do bazy i wyczyścił pola tekstowe? Bez żadnego komentarza, że dodano do bazy. Może takie podejście do tematu będzie lepiej działało? :)

0

Nie badz taki cfany, zmien ton jak chcesz cos na tym forum osiagnac.

Pora zajrzec do logow.

0

Napisałem, że to ciekawe, bo to faktycznie ciekawe, a nie ciekawe w sensie ironicznym - proszę o bezinteresowną pomoc, więc czemu miałbym próbować jakichś "tonów" :) Spokojnie ;) Chciałbym dowiedzieć się jak poradzić sobie z tym problemem, bo chciałbym popchnąć robotę do przodu. Nie chciałbym, żebyś czuł się urażony... Możesz doprecyzować o jakie logi Ci chodzi?

0

Uzywasz jakiegos kontenera servletow tak? Np. tomcat. W tym kontenerze instalujesz aplikacje (Twojego wara z servletem, html, connectorem do mysql itp). Teraz jak cos nie gra, to mozesz zobaczyc w logach - kazdy serwer, w tym i tomcat, ma specjalny folder (najczesciej o nazwie logs lub podobnej) gdzie masz pliki w ktorych opisywane sa operacje ktore wykonuje serwer, wyjatki jakie wystepuje itp.

A tak najlepiej to napisz od poczatku co robisz, gdzie tworzysz ta aplikacje, jak ja instalujesz i gdzie itp.

0

Przedłużony weekend :)

Kiedy napisałeś o instalacji kompontentów w serwerze aplikacji (używam Tomcata), to uświadomiłem sobie, że nic z tych rzeczy nie robiłem. Ale po kolei: jeśli chodzi o środowisko - używam MyEclipse'a. Utworzyłem sobie maven'owy WebProject, po czym w folderze src utworzyłem package i utworzyłem servlet (jego kod na górze). W folderze WebRoot dodałem html'a, a web.xml miałem w WEB-INF i tak to zostawiłem. I tyle... Nic nie instalowałem w serwerze aplikacji... Żeby sprawdzić czy działa klikałem prawym przyciskiem myszy na projekt, wybierałem Run As i Server Application. Otwierała się przeglądarka z moim formularzem - po uzupełnieniu pól i kliknięciu na button wyświetlała się pusta strona...

1 użytkowników online, w tym zalogowanych: 0, gości: 1