· 8 years ago · Jun 09, 2018, 03:06 PM
1package kontroler;
2
3
4import java.io.IOException;
5import java.io.PrintWriter;
6
7import javax.servlet.ServletContext;
8import javax.servlet.ServletException;
9import javax.servlet.annotation.WebServlet;
10import javax.servlet.http.HttpServlet;
11import javax.servlet.http.HttpServletRequest;
12import javax.servlet.http.HttpServletResponse;
13import javax.servlet.http.HttpSession;
14
15import model.MHbaza;
16import model.MHuzytkownik;
17import model.Narzedzia;
18@WebServlet("/MH")
19public class MH extends HttpServlet {
20private static final long serialVersionUID = 1l;
21
22public MH(){
23super();
24}
25
26protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
27doPost(request, response);}
28
29protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
30response.setContentType("text/html; charset=utf-8");
31
32PrintWriter out = response.getWriter();
33ServletContext context = getServletContext();
34
35String sciazkaMH = context.getRealPath("/WEB-INF/");
36MHbaza baza = new MHbaza(sciazkaMH);
37
38HttpSession sesja = request.getSession();
39
40MHuzytkownik uzytkownik = (MHuzytkownik) sesja.getAttribute("uzytkownik");
41
42if (uzytkownik==null){
43uzytkownik = new MHuzytkownik();
44sesja.setAttribute("uzytkownik", uzytkownik);
45}
46
47String komunikat = "Nieprawidlowy login lub haslo";
48
49String akcja = request.getParameter("akcja");
50if(akcja==null) akcja="";
51System.out.println(akcja);
52
53if(akcja.equals("zaloguj"))
54 {String login = request.getParameter("login");
55 String haslo = request.getParameter("haslo");
56
57 if(login==null) login="";
58 if(haslo==null) haslo="";
59//tu filtracja loginu i hasla z formularza
60
61uzytkownik = baza.zalogujUzytkownika(login, haslo);
62System.out.println(uzytkownik);
63sesja.setAttribute("uzytkownik", uzytkownik);
64if (uzytkownik.getId()>0) komunikat = "Zostałeś zalogowany jako <b>"+login+"</b>";
65
66/*if((login.equals("user")) &(haslo.equals("user")))
67{
68uzytkownik.setLogin(login);
69uzytkownik.setUprawnienia(1);
70sesja.setAttribute("uzytkownik", uzytkownik);
71komunikat = "Zostales zalogowany jako <b>"+login+</b>;
72}
73if((login.equals("admin")) &(haslo.equals("admin")))
74{
75uzytkownik.setLogin(login);
76uzytkownik.setUprawnienia(2);
77sesja.setAttribute("uzytkownik", uzytkownik);
78komunikat = "Zostales zalogowany jako <b>"Administrator/b>;
79} */
80}
81
82else if (akcja.equals("wyloguj"))
83{
84//uzytkownik.setLogin("");
85//uzytkownik.setUprawnienia(-1);
86uzytkownik = new MHuzytkownik();
87sesja.setAttribute("uzytkownik", uzytkownik);
88komunikat = "zostales prawidlowo wylogowany";
89}
90else if(akcja.equals("ustawienia"))
91{
92 String imie=request.getParameter("imie");
93 String nazwisko = request.getParameter("nazwisko");
94 String wiek = request.getParameter("wiek");
95
96if(imie==null) imie="";
97if(nazwisko==null) nazwisko="";
98if(wiek==null) wiek="";
99
100uzytkownik.setImie(imie);
101uzytkownik.setNazwisko(nazwisko);
102uzytkownik.setWiek(Narzedzia.parsujInteger(wiek, -1));
103
104baza.zapiszUstawienia(uzytkownik.getId(), uzytkownik.getImie(), uzytkownik.getNazwisko(), uzytkownik.getWiek());
105
106String login = uzytkownik.getLogin();
107int uprawnienia = uzytkownik.getUprawnienia();
108
109uzytkownik.setLogin(login);
110uzytkownik.setUprawnienia(uprawnienia);
111
112sesja.setAttribute("uzytkownik", uzytkownik);
113
114komunikat = "ustawiewnia zostaly zapisane";}
115
116else if (akcja.equals("administracja"))
117{ if(uzytkownik.getUprawnienia()==2)
118{
119String kolor = request.getParameter("kolor");
120if (kolor==null) kolor="white";
121
122context.setAttribute("kolorTla", kolor);
123komunikat = "kolor tla zostal zmieniony";
124}
125}
126else
127komunikat = "nieprawidlowe wywolanie";
128
129String szablon = Narzedzia.pobierzSzablon("komunikat.html", context);
130szablon = szablon.replace("[KOMUNIKAT]", komunikat);
131
132String kolorTla = (String) context.getAttribute("kolorTla");
133if(kolorTla==null) kolorTla="white";
134
135szablon = szablon.replace("[KOLORTLA]", kolorTla);
136out.println(szablon);
137baza.zamknijPolaczenie();
138}
139}
140
141----------------------------------------------------------------
142package model;
143
144
145import java.sql.Connection;
146import java.sql.DriverManager;
147import java.sql.PreparedStatement;
148import java.sql.ResultSet;
149import java.sql.SQLException;
150import java.sql.Statement;
151
152public class MHbaza{
153
154private static final String DRIVER = "org.sqlite.JDBC";
155public static String DB_URL = "jdbc:sqlite:MHbaza.sqlite";
156private Connection conn;
157private Statement stat;
158
159public MHbaza(String sciezka){
160DB_URL = "jdbc:sqlite:" + sciezka + "\\MHbaza.sqlite";
161
162try{
163Class.forName(MHbaza.DRIVER);
164}catch (ClassNotFoundException e){
165System.err.println("Brak sterownika JBDC");
166e.printStackTrace();}
167
168try {
169conn= DriverManager.getConnection(DB_URL);
170stat = conn.createStatement();}
171catch (SQLException e) {
172System.err.println("Problem z otwarciem polaczenia");
173e.printStackTrace();
174}
175System.out.println("Otwarto bazÄ™: "+DB_URL);
176stworzTablice();
177}
178
179public boolean czyTabelaIstnieje(String nazwaTabeli)
180{ String count = "";
181try{
182ResultSet result =
183stat.executeQuery("SELECT name FROM sqlite_master " + "WHERE type='table' AND name='"+nazwaTabeli+"'");
184while (result.next()){
185count = result.getString("name");
186}
187}catch (SQLException e) {
188e.printStackTrace();
189return false;
190}
191return (count.length()>0);
192}
193
194public boolean stworzTablice() {
195String createUzytkownicy = "CREATE TABLE IF NOT EXISTS uzytkownicy"
196+ " (id INTEGER PRIMARY KEY AUTOINCREMENT, "
197+ " login varchar(255), haslo varchar(255), uprawnienia int)";
198String createUstawienia = "CREATE TABLE IF NOT EXISTS ustawienia"
199+ "(id INTEGER PRIMARY KEY AUTOINCREMENT, "
200+ " id_uzytkownika int, imie varchar(255), nazwisko varchar(255), "
201+ " wiek int)";
202
203try {
204if(!czyTabelaIstnieje("uzytkownicy")){
205stat.execute(createUzytkownicy);
206System.out.println("Tworzenie tabeli uzytkownicy");
207wstawUzytkownikow();}
208
209try {
210if(!czyTabelaIstnieje("ustawienia")){
211stat.execute(createUstawienia);
212System.out.println("Tworzenie tabeli ustawienia");
213zapiszUstawienia(pobierzIdUzytkownika("user"), "", "", -1);
214zapiszUstawienia(pobierzIdUzytkownika("admin"), "", "", -1);
215}
216}catch(SQLException e){
217System.err.println("Błąd przy tworzeniu tabel");
218e.printStackTrace();
219return false;
220}
221return true;
222}
223
224public boolean wstawUzytkownikow()
225{try {
226PreparedStatement statementUzytkownicy1 =
227conn.prepareStatement("INSERT INTO uzytkownicy " + "values (NULL, ? ,?, ?);");
228statementUzytkownicy1.setString(1, "user");
229statementUzytkownicy1.setString(2, "user");
230statementUzytkownicy1.setInt(3, 1);
231statementUzytkownicy1.execute();
232
233PreparedStatement statementUzytkownicy2 =
234conn.prepareStatement("INSERT INTO uzytkownicy " + "values (NULL, ? ,?, ?);");
235statementUzytkownicy2.setString(1, "admin");
236statementUzytkownicy2.setString(2, "admin");
237statementUzytkownicy2.setInt(3, 2);
238statementUzytkownicy2.execute();
239}catch (SQLException e) {
240System.err.println("Błąd przy wstawianiu użytkowników");
241e.printStackTrace();
242return false;}
243return true;}
244
245public boolean zapiszUstawienia(int id_uzytkownika, String imie, String nazwisko, int wiek) {
246try {
247PreparedStatement statementUstawienia = conn.prepareStatement("INSERT INTO ustawienia " + "values (NULL, ?, ?, ?,?);");
248
249statementUstawienia.setInt(1, id_uzytkownika);
250statementUstawienia.setString(2, imie);
251statementUstawienia.setString(3, nazwisko);
252statementUstawienia.setInt(4, wiek);
253statementUstawienia.execute();
254}catch (SQLException e) {
255System.err.println("Błąd przy zapisywaniu ustawień");
256e.printStackTrace();
257return false;
258}
259return true;
260}
261
262public int pobierzIdUzytkownika(String login){
263int id =-1;
264try{
265ResultSet wynik = stat.executeQuery("SELECT * FROM uzytkownicy " + "where login'"+login+"' LIMIT 1");
266while(wynik.next()){
267id = wynik.getInt("id");
268}
269}catch (SQLException e) {
270e.printStackTrace();
271id = -1;
272}
273return id;
274}
275
276public void zamknijPolaczenie(){
277try{
278conn.close();
279}catch(SQLException e) {
280System.err.println("Problem z zamknieciem polaczenia");
281e.printStackTrace();
282}
283System.out.println("Zakmnieto polaczenie z baza");
284}
285
286public MHuzytkownik zalogujUzytkownika(String l, String h){
287int id =-1;
288int uprawnienia = -1;
289String login = "";
290String haslo = "";
291String imie = "";
292String nazwisko = "";
293int wiek = -1;
294
295MHuzytkownik uzytkownik = new MHuzytkownik();
296try{
297String zapytanie = "SELECT * FROM uzytkownicy, ustawienia "
298+ "WHERE uzytkownicy.login = '" + l + "' "
299+ "and ustawienia.id_uzytkownika = uzytkownicy.id "
300+ "ORDER BY ustawienia.id DESC LIMIT 1; ";
301ResultSet wynik = stat.executeQuery(zapytanie);
302while(wynik.next()){
303id = wynik.getInt("id_uzytkownika");
304login = wynik.getString("login");
305haslo = wynik.getString("haslo");
306uprawnienia = wynik.getInt("uprawnienia");
307imie = wynik.getString("imie");
308nazwisko = wynik.getString("nazwisko");
309wiek = wynik.getInt("wiek");
310}
311}catch (SQLException e) {
312System.err.println("Błąd bazy przy logowaniu uzytkownika");
313e.printStackTrace();
314uzytkownik = new MHuzytkownik();
315}
316if ((login.equals(1)) && (haslo.equals(h))) {
317uzytkownik = new MHuzytkownik(id, login, uprawnienia, imie, nazwisko, wiek);}
318return uzytkownik;
319}
320}
321
322-------------------------------------------------------
323package model;
324
325
326
327public class MHuzytkownik {
328private int id = -1;
329private String login = "";
330private int uprawnienia = -1;
331//-1 niezalogowany 1 zalogowany 2 admin
332
333private String imie = "";
334private String nazwisko = "";
335private int wiek = -1;
336
337public MHuzytkownik(){
338}
339public MHuzytkownik(int id, String login, int uprawnienia, String imie, String nazwisko, int wiek) {
340super();
341this.id = id;
342this.login = login;
343this.uprawnienia = uprawnienia;
344this.imie = imie;
345this.nazwisko = nazwisko;
346this.wiek = wiek;}
347
348public int getId() {
349return id;}
350
351public String getImie(){
352return imie;}
353
354public void setImie(String imie){
355this.imie = filtruj(imie);}
356
357public String getNazwisko(){
358return nazwisko;}
359
360public void setNazwisko(String nazwisko){
361this.nazwisko = filtruj(nazwisko);}
362
363public int getWiek(){
364return wiek;}
365
366public void setWiek(int wiek){
367this.wiek=wiek;}
368
369public String getLogin(){
370return login;}
371
372public void setLogin(String login){
373this.login = login;}
374
375public int getUprawnienia(){
376return uprawnienia;}
377
378public void setUprawnienia(int uprawnienia){
379this.uprawnienia = uprawnienia;}
380
381public String getWieks() {
382if (this.wiek>=0)
383return ""+this.wiek;
384else return "";}
385
386public static String filtruj(String wejscie){
387StringBuffer filtrowane = new StringBuffer();
388char c;
389
390for (int i=0; 0<wejscie.length(); i++)
391{ c= wejscie.charAt(i);
392switch(c)
393{
394case '<': filtrowane.append("<"); break;
395case '>': filtrowane.append(">"); break;
396case '"': filtrowane.append("""); break;
397case '&': filtrowane.append("&"); break;
398default: filtrowane.append(c);
399}
400}
401return filtrowane.toString();
402}
403
404public String toString(){
405return "MHuzytkownik [id=" + id + ", login=" + login + ", uprawnienia=" + uprawnienia + ", imie=" + imie + ", nazwisko=" + nazwisko + ", wiek=" + wiek + "]";
406}
407}