- Mindenki Z Fold7-et akar
- Samsung Galaxy Watch8 - Classic - Ultra 2025
- Samsung Galaxy A55 - új év, régi stratégia
- Samsung Galaxy S23 Ultra - non plus ultra
- Samsung Galaxy A54 - türelemjáték
- Honor 200 Pro - mobilportré
- Samsung Galaxy S24 FE - később
- Szívós, szép és kitartó az új OnePlus óra
- Realme GT 5G - versenyképes
- Yettel topik
Új hozzászólás Aktív témák
-
btotyi
tag
Milyen szervert használsz ? Az alkalmazás szerverek általában tudnak autentikációt kezelni.
Ez ugyan geronimo de kiindulásnak jó lehet.
A lényeg az, hogy az index.jsp-d a védett területen (security-realm)-on kívül helyezkedik el és vagy linkkel vagy forward-al átírányít a védett területre. Erre a szerver bejelentkezteti a usert ha az ok továbbdobja a kívánt oldalra, ha nem akkor elutasítja. A védett területen belül vagy sütivel vagy url rewrite-al ellenőrzi, hogy az adott felhasználó már bejelentkezett-e ?
-
btotyi
tag
Nem igazán értem mért akarod a visszatérési értéket kezelni. Ha az insert sikeresen lefut akkor úgyis a következő sorra (update) lép. Ha nem (pl kulcs megsértés vagy null érték not null-os mezőbe) kivétel keletkezik akkor pedig rollback így az insertben felvitt rekordo(ka)t eldobja.
Ha szüksége van az insert utáni értékre pld. a kapott id-t tovább kell vinni, akkor vagy tárolt eljárás vagy generator/sequence használata javaslott, természetesen egy tranzakció belül.
-
btotyi
tag
A ps1.execute csak akkor add vissza true-t ha a visszatérési objektum resultset. Mivel az insert nem azt ad vissza igy persze, hogy false.
Setterek: A preparedstatement leküldi az SQL-t a szervernek előkészítésre. Az lefordítja, felkészül. A setterek beállítják a paramétereket, az execute pedig végrehajtja. A korábban említett előnyök mellett nagy hasznát veheted kötegelt adattöltésnél. Ilyenkor query egyszer előkészít, sokszor végrehajt, nagyon gyorsan.
Erre szolgál a tranzakció.
try {
// Disable auto commit
connection.setAutoCommit(false);
// Do SQL updates...
// Commit updates
connection.commit();
} catch (SQLException e) {
// Rollback update
connection.rollback();
} -
btotyi
tag
A getInt-nél mi a kivétel:
Én így szoktam
ResultSet ers = plm.executeQuery();
while (ers.next()) {
V_Elem lm = new V_Elem();
lm.setId(ers.getLong("ID"));
}Egy elemnél pedig simán
if (rs.next()) {
}Használd a SET SCHEMA=WHUSER utasítást. Vagy tedd az adataidat az APP sémába (Az a Derby alapértelmezett sémája).
A Insert/Update queryknél használj parametrizált queryt. Átláthatóbb, véd az SQL injekcion ellen.
pld.
PreparedStatement ps = conn.prepareStatement("update akarmi set nev=? where id=?");
ps.setString(1,"Az új név");
ps.setLong(2, 12); // az adott ID
ps.execute(); -
btotyi
tag
Ha jobban megnézed a példát az elején egyszerűen létrehoz egy Thread leszármazottat Szal néven. A thread nek van egy start, stop, terminate és ami neked fontos egy run metódusa. Ebben aztán azt valósítasz meg ami neked tetszik. Persze erőforrásokhoz való hozzáféréskor észnél kell lenni mert könnyű deadlock-ot előidézni, de ha csak számolgatod a páros/páratlan számokat akkor nincs baj. Tehát csinálhatsz két(n) thread leszármazottat és a run metódusukban elvégzed a kívánt feladatot. Persze futtatáshoz a megfelelő típusút kell létrehozni.
[Szerkesztve] -
btotyi
tag
Egyszerűen semmi különös.A példában simán visszakapsz egy Complex osztályt. Igazából egy Complex osztályt pontosabban egy IComplex interfészt implementáló osztályt. Ha Complex típusú lenne a változó akkor csak Complex típusú példányt adhatnál át, IComplex-ként viszont bármilyen olyan osztályt ami implementálja az IComplex interfészt. Ennek fényében a második fele a kérdésednek egyértelmű.
Egy kis magyarázat :[link] -
btotyi
tag
Például így :
package test;
class Szal extends java.lang.Thread {
volatile static boolean Stop = false;
// Primordial thread executes main()
public static void main(String args[]) throws InterruptedException {
// Create and start 2 threads
Szal thread1 = new Szal();
thread1.setPriority(1); // 1st thread at 1th non-RT priority
Szal thread2 = new Szal();
thread2.setPriority(1); // 2nd thread at 1th non-RT priority
thread1.start(); // start 1st thread to execute run()
thread2.start(); // start 2nd thread to execute run()
// Sleep for 10 seconds, then tell the threads to terminate
Thread.sleep(10 * 1000);
Stop = true;
}
public void run() { // Created threads execute this method
System.out.println(''Created thread'');
int count = 0;
for (; Stop != true;) { // continue until asked to stop
count++;
Thread.yield(); // yield to other thread
}
System.out.println(''Thread terminates. Loop count is '' + count);
}
}
forrás:[link] -
btotyi
tag
válasz
Corvin84 #665 üzenetére
Mintha egy kicsit kapkodnál
A tömbös megoldásnál foglalsz helyet a tömbnek ? Ráadásul mindig a 100 elem helyére akarsz írni.
A Vector objektumokat tud index szerint tárolni .
Erősen ajánlott a help és valami alapszintű java könyv olvasgatása.
Az első példa tömbt tölt, a második egy vectort tölt/listáz ki.
int[] tomb = new int[100];
for (int i = 0; i < 10; i++) {
tomb[i] = i * 2;
}
Vector v = new Vector(100);
for (int i = 0; i < 10; i++) {
v.add(i, new Integer(i * 2));
}
for (int i = 0; i < 10; i++) {
System.out.println(v.get(i));
}
[Szerkesztve] -
btotyi
tag
válasz
Corvin84 #661 üzenetére
Kicsit fáradt vagyok, hogy jobban átnézzem. Lehetne optimálisabb és szebb kódot írni de most csak ennyire futja. Helyenként kicsit elbonyolítod a dolgot. Boolean értéket nem vizsgálunk true vagy false értékre mert önmagában kiértékelhető. A bemeneti értékek ellnőrzése szükséges mert első lefutáskor nem tartalmaz a kérés paramétert.
<%@ page language=''java'' pageEncoding=''ISO-8859-1''%>
<!DOCTYPE HTML PUBLIC ''-//W3C//DTD HTML 4.01 Transitional//EN''>
<html>
<head>
<title>My JSP 'prim3.jsp' starting page</title>
</head>
<body bgcolor=''white''>
<h1>
Prímszám generálás
</h1>
<form action=''prim3.jsp'' method=''post''>
<input type=''text'' name=''kezdet''>
-tól
<br>
<input type=''text'' name=''veg''>
-ig
<br>
<input type=''submit'' value=''elkuld''>
</form>
<hr>
<%
String ks = request.getParameter(''kezdet'');
String vs = request.getParameter(''veg'');
if (ks != null && vs != null) {
int k = Integer.parseInt(ks);
int v = Integer.parseInt(vs);
for (int i = k; i < v; i++) {
boolean nemprim = false;
for (int j = 2; j < (i - 1); j++) {
if ((i % j) == 0) {
nemprim = true;
break;
}
}
if (!nemprim) {
out.println(i + ''. primszam'' + ''<br>'');
}
}
}
%>
</body>
</html>
[Szerkesztve]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Epson Expression 12000 XL A3 síkágyas fotószkenner
- Bomba ár! Dell Latitude 7390 2in1 - i7-8G I 16GB I 256SSD I 13,3"FHD Touch I HDMI I Cam I W11 I Gar
- Lenovo ThinkPad X1 Yoga (6th Gen) - i7-1185G7, 32GB, 512GB SSD, multitouch
- Azonnali készpénzes nVidia RTX 3000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- HIBÁTLAN iPhone 14 256GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3100, 100% Akkumulátor
Állásajánlatok
Cég: FOTC
Város: Budapest