Gepostet vom Originalposter: 17.06.2008 15:26:20
lJBS
1. Listen Sie 10 Vorteile der JAVA-Sprache auf
a: Kostenlos, Open Source, plattformübergreifend (Plattformunabhängigkeit), einfach zu bedienen, vollständige Funktionen, objektorientiert, robust, multithreaded, strukturneutral, ausgereifte Plattform für Unternehmensanwendungen, drahtlose Anwendungen
2. Listen Sie 10 objektorientierte Programmierbegriffe in JAVA auf
a: Paket, Klasse, Schnittstelle, Objekt, Attribut, Methode, Konstruktor, Vererbung, Kapselung, Polymorphismus, Abstraktion, Paradigma
3. Listen Sie 6 häufig verwendete Pakete in JAVA auf
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4. Welche Funktionen und Eigenschaften haben Bezeichner in JAVA? Funktion: Bezeichner werden zur Benennung von Variablen, Klassen und Methoden verwendet. Zusätzlich zu den Zeichen „_“ und „$“, die mit Anfangsbuchstaben beginnen, können ihnen folgende Zeichen folgen Buchstaben, Unterstriche „_“ und „$“ Zeichen oder Zahlen
Java unterscheidet zwischen Groß- und Kleinschreibung und Bezeichner sind keine Ausnahme
5.Was sind die Merkmale von Schlüsselwörtern in JAVA? Listen Sie mindestens 20 Schlüsselwörter auf
Einige Wörter in Java, denen eine bestimmte Bedeutung gegeben und für spezielle Zwecke verwendet wird, werden Schlüsselwörter genannt
Alle Java-Schlüsselwörter sind Kleinbuchstaben. TURE, FALSE, NULL usw. sind keine Java-Schlüsselwörter.
goto und const werden zwar nie verwendet, sind aber als Java-Schlüsselwörter reserviert;
Es gibt insgesamt 51 Schlüsselwörter Java in •
abstraktes Assert, boolesches Break-Byte, Fortsetzung
case Catch char class const double
Standardmäßig wird „Do“ erweitert, sonst „Final Float“.
für goto long, wenn Import implementiert wird
Native neue Nullinstanz der int-Schnittstelle
Paket privat geschützt öffentlich Rückgabe kurz
Der statische StrictFP-Super-Switch hat dies synchronisiert
während void throw einen vorübergehenden Versuch auslöst
flüchtig
6.Wie werden Datentypen in JAVA klassifiziert?
Kann in einfache Datentypen und Referenzdatentypen unterteilt werden:
Einfache Datentypen: numerischer Typ (Byte, Short, Int, Long, Float Double), Zeichentyp (Char), Boolescher Typ (Boolean);
Referenzdatentypen: Klasse, Schnittstelle, Array.
7. Klassifizierung und Beispiele für Operatoren in JAVA
• Trennzeichen:,,;,[],()
• Arithmetische Operatoren: +, ―, *, /, %, ++, ――
• Vergleichsoperatoren: >, <, >=, <=, ==, !=
• Boolesche logische Operatoren: !, &, |, ^, &&, ||
• Bitoperatoren: &, |, ^, ~, >>, < <, >>>
• Zuweisungsoperator: = Erweiterter Zuweisungsoperator: +=, ―=, *=, /=
• String-Verkettungsoperator: +
• Formoperator: ()
8. Die Funktion und Verwendung der Schlüsselwörter super und this
• Verwenden Sie super in einer Java-Klasse, um auf Komponenten der übergeordneten Klasse zu verweisen
– Kann verwendet werden, um auf in der übergeordneten Klasse übergeordnete Attribute zuzugreifen
– Kann verwendet werden, um die in der übergeordneten Klasse superdefinierte Mitgliedsmethode aufzurufen
– Kann verwendet werden, um den Superklassenkonstruktor super im Unterklassenkonstruktor aufzurufen
– Die Rückverfolgbarkeit ist nicht auf die direkte übergeordnete Klasse super beschränkt
Um den Namenskonflikt und das Unsicherheitsproblem von Variablen zu lösen, wird das Schlüsselwort „this“ eingeführt, um das aktuelle Objekt der Methode darzustellen, in der es sich befindet. Java
– Der Konstruktor verweist auf das neue Objekt, das vom Konstruktor erstellt wurde
– Die Methode verweist auf das Objekt, das die Methode aufruft
• Verwendung von Schlüsselwörtern
– Referenzieren Sie die Instanzvariablen und Methoden der Klasse in der Methode oder dem Konstruktor der Klasse selbst
– Übergeben Sie das aktuelle Objekt als Parameter an andere Methoden oder Konstruktoren
– Wird zum Aufrufen anderer überladener Konstruktoren verwendet
9. Was ist ein Ausdruck in JAVA? Was macht es?
„Ein Ausdruck ist eine Kombination aus Operatoren und Operanden und eine Schlüsselkomponente jeder Programmiersprache.“
• Mit Ausdrücken können Programmierer mathematische Berechnungen, Wertevergleiche, logische Operationen und die Manipulation von Objekten in Java durchführen.
• Einige Beispiele für Ausdrücke:
-X
– X+10
– Y=x+10
–Arr[10]
– student.geName()
10. Erstellen Sie eine Tabelle, in der alle Modifikatoren in JAVA und ihr Anwendungsbereich aufgeführt sind (können sie Konstruktoren, Eigenschaften, freie Blöcke usw. ändern).
Klassenattribut-Methoden-Builder, kostenloser Block, innere Klasse
öffentlich YYY Y Y
geschützt JJ J J
(Standard) JJJJJJ
privat JJ J J
endgültig YY Y Y
abstrakt Y Y Y
statisch J JJ
11. Schreiben Sie eine Methode zum Drucken der Multiplikationstabelle mithilfe einer for-Schleife
/**
*Eine for-Schleife druckt die Multiplikationstabelle
*/
publicvoid nineNineMultiTable()
{
for (int i = 1,j = 1; j <= 9; i++) {
System.out.print(i+"*"+j+"="+i*j+" ");
if(i==j)
{
ich=0;
j++;
System.out.println();
}
}
}
12. Wie konvertiert man ein gegebenes java.util.Date-Objekt in einen String im Format „2007-3-22 20:23:22“?
/**
*Konvertieren Sie ein Datum in eine Zeichenfolge in einem festen Format
*@paramdate
*@returnstr
*/
public String dateToStr(java.util.Date date)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
return str;
}
13. Schreiben Sie eine Methode, die bestimmen kann, ob eine ganze Zahl eine Primzahl ist.
/**
* Bestimmen Sie, ob eine ganze Zahl eine Primzahl ist
*@paramn
*@returnboolean
*/
publicboolean isPrimes(int n)
{
for (int i = 2; i <= Math.sqrt(n); i++) {
if(n%i==0)
{
returnfalse;
}
}
returntrue;
}
14. Schreiben Sie eine Methode, die eine beliebige Ganzzahl eingibt und deren Fakultät zurückgibt
/**
*Ermitteln Sie die Fakultät einer beliebigen Ganzzahl
*@paramn
*@returnn !
*/
publicint faktorial(int n)
{
//Rekursion
if(n==1)
{
Rückgabe 1;
}
return n*factorial(n-1);
//nicht rekursiv
// int multi = 1;
// for (int i = 2; i <= n; i++) {
// multi*=i;
// }
// multi zurückgeben;
}
15. Schreiben Sie eine Methode, die mithilfe der binären Suche ermittelt, ob eine Ganzzahl in einem Ganzzahl-Array vorhanden ist. Wenn sie vorhanden ist, geben Sie ihre Indexposition im Array zurück. Wenn sie nicht vorhanden ist, geben Sie -1 zurück.
/**
*Binäre Suche nach der Position einer bestimmten Ganzzahl im Ganzzahl-Array (rekursiv)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
*/
publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)
{
int midIndex = (beginIndex+endIndex)/2;
if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
if(data <dataset[midIndex])
{
return binarySearch(dataset,data,beginIndex,midIndex-1);
}elseif(data>dataset[midIndex])
{
return binarySearch(dataset,data,midIndex+1,endIndex);
}anders
{
return midIndex;
}
}
/**
*Binäre Suche nach der Position einer bestimmten Ganzzahl im Ganzzahl-Array (nicht rekursiv)
*@paramdataset
*@paramdata
*@returnindex
*/
publicint binarySearch(int[] dataset,int data)
{
int beginIndex = 0;
int endIndex = dataset.length - 1;
int midIndex = -1;
if(data <dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;
while(beginIndex <= endIndex) {
midIndex = (beginIndex+endIndex)/2;
if(data <dataset[midIndex]) {
endIndex = midIndex-1;
} elseif(data>dataset[midIndex]) {
beginIndex = midIndex+1;
}anders
{
return midIndex;
}
}
return -1;
}
16. Ein Beispiel eines Züchters, der Tiere mit Futter füttert, spiegelt das objektorientierte Denken in JAVA und die Nützlichkeit von Schnittstellen (abstrakte Klassen) wider.
Paket com.softeem.demo;
/**
*@authorleno
*Tierschnittstelle
*/
Schnittstelle Tier
{
publicvoid eat(Essen Essen);
}
/**
*@authorleno
*eine Tierart: Katze
*/
Klasse Cat implementiert Animal
{
publicvoid eat(Essen Essen)
{
System.out.println("Kätzchen isst"+food.getName());
}
}
/**
*@authorleno
*eine Tierart: Hund
*/
Klasse Dog implementiert Animal
{
publicvoid eat(Essen Essen)
{
System.out.println("Welpenkauen"+food.getName());
}
}
/**
*@authorleno
*Abstrakter Kurs zum Thema Essen
*/
abstrakte KlasseEssen
{
geschützter String-Name;
öffentlicher String getName() {
Rückgabename;
}
publicvoid setName(String name) {
this.name = Name;
}
}
/**
*@authorleno
*Eine Lebensmittelgruppe: Fisch
*/
Klasse Fisch erweitert Essen
{
public Fish(String name) {
this.name = Name;
}
}
/**
*@authorleno
*Eine Lebensmittelgruppe: Knochen
*/
Klasse Bone erweitert Essen
{
public Bone(String name) {
this.name = Name;
}
}
/**
*@authorleno
*Züchterkategorie
*
*/
classFeeder
{
/**
*Der Züchter füttert eine bestimmte Tierart mit einer bestimmten Art von Futter
*@paramanimal
*@paramfood
*/
publicvoid Feed(Tier Tier,Lebensmittel Lebensmittel)
{
animal.eat(Nahrung);
}
}
/**
*@authorleno
*Testen Sie Züchter, die Tierfutter füttern
*/
publicclass TestFeeder {
publicstaticvoid main(String[] args) {
Feeder feeder=new Feeder();
Tier animal=new Dog();
Essen food=new Bone("Fleischknochen");
feeder.feed(animal,food); //Füttere den Hund mit Fleisch und Knochen
animal=new Cat();
food=new Fish("fish");
feeder.feed(animal,food); //Füttere die Katze mit Fisch
}
}
18. Erstellen Sie eine Single-Mode-Klasse und laden Sie die Eigenschaftendatei nur einmal
Paket com.softeem.demo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*@authorleno
*Einzelmodus, der sicherstellt, dass die Konfigurationseigenschaftsdatei während der gesamten Anwendung nur einmal geladen wird
*/
publicclass Singleton {
privatestatic Singleton-Instanz;
privatestaticfinal String CONFIG_FILE_PATH = "E:\config.properties";
private Eigenschaftenkonfiguration;
privater Singleton()
{
config = neue Eigenschaften();
InputStream ist;
versuchen {
is = new FileInputStream(CONFIG_FILE_PATH);
config.load(is);
is.close();
} Catch (FileNotFoundException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
publicstatic Singleton getInstance()
{
if(instance==null)
{
Instanz = new Singleton();
}
returninstance;
}
öffentliche Eigenschaften getConfig() {
returnconfig;
}
publicvoid setConfig(Properties config) {
this.config = config;
}
}
l J2SE
19. Kopieren Sie ein Verzeichnis (eine Datei) in den angegebenen Pfad
/**
*Kopieren Sie ein Verzeichnis oder eine Datei in den angegebenen Pfad
*@paramsource
*@paramtarget
*/
publicvoid copy(Dateiquelle,Dateiziel)
{
Datei tarpath = new File(target,source.getName());
if(source.isDirectory())
{
tarpath.mkdir();
File[] dir = source.listFiles();
for (int i = 0; i < dir.length; i++) {
copy(dir[i],tarpath);
}
}anders
{
versuchen {
InputStream ist = new FileInputStream(source);
OutputStream os = new FileOutputStream(tarpath);
byte[] buf = newbyte[1024];
int len = 0;
while((len = is.read(buf))!=-1)
{
os.write(buf,0,len);
}
is.close();
os.close();
} Catch (FileNotFoundException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
}
20. Beispiel für ein Bankabhebungsproblem mit Multithreading in JAVA
packagecom.softeem.demo;
/**
*@authorleno
*Kontotyp
*Standardmäßig ist ein Guthaben vorhanden und Sie können Geld abheben
*/
Klassenkonto {
privatefloatbalance = 1000;
publicfloat getBalance() {
Returnbalance;
}
publicvoid setBalance(float balance) {
this.balance = Balance;
}
/**
*Auszahlungsmethoden müssen synchronisiert werden
*@parammoney
*/
öffentliche synchronisierte ungültige Abhebungen (Float-Geld)
{
if(Kontostand>=Geld)
{
System.out.println("Taken"+money+"Yuan!");
versuchen {
Thread.sleep(1000);
} Catch (InterruptedException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
Balance-=Geld;
}
anders
{
System.out.println("Entschuldigung, unzureichendes Guthaben!");
}
}
}
/**
*@authorleno
*Bankkarte
*/
Klasse TestAccount1 erweitert Thread {
privates Kontokonto;
public TestAccount1(Kontokonto) {
this.account = Konto;
}
@Override
publicvoid run() {
account.withdrawals(800);
System.out.println("Der Kontostand ist:"+account.getBalance()+"Yuan!");
}
}
/**
*@authorleno
*Sparbuch
*/
Klasse TestAccount2 erweitert Thread {
privates Kontokonto;
public TestAccount2(Kontokonto) {
this.account = Konto;
}
@Override
publicvoid run() {
account.withdrawals(700);
System.out.println("Der Kontostand ist:"+account.getBalance()+"Yuan!");
}
}
publicclass-Test
{
publicstaticvoid main(String[] args) {
Kontokonto = neues Konto();
TestAccount1 testAccount1 = neues TestAccount1(Konto);
testAccount1.start();
TestAccount2 testAccount2 = new TestAccount2(account);
testAccount2.start();
}
}
21. Verwenden Sie Multithreading in JAVA, um ein Problem mit dem Verkauf von Fahrkarten am Bahnhof zu veranschaulichen
Paket com.softeem.demo;
/**
*@authorleno
*Ticketverkauf
*/
Klasse SaleTicket implementiert Runnable {
inttickets = 100;
publicvoid run() {
while (Tickets > 0) {
Verkauf();
//Oder implementieren Sie es so
// synchronisiert (dies) {
// if (Tickets > 0) {
// System.out.println(Thread.currentThread().getName() + „Sell the first“
// + (100 - Tickets + 1) + „Tickets“);
// Tickets--;
// }
// }
}
}
publicsynchronizedvoid sale() {
if (Tickets > 0) {
System.out.println(Thread.currentThread().getName() + „Zuerst verkaufen“
+ (100 - Tickets + 1) + „Tickets“);
Tickets--;
}
}
}
publicclass TestSaleTicket {
publicstaticvoid main(String[] args) {
SaleTicket st = new SaleTicket();
new Thread(st, "Fenster Nr. 1").start();
new Thread(st, "Fenster Nr. 2").start();
new Thread(st, "Fenster Nr. 3").start();
new Thread(st, "Fenster Nr. 4").start();
}
}
22. Beispiel für Produzenten- und Verbraucherprobleme bei der Verwendung von Multithreading in JAVA
Paket com.softeem.demo;
Der Klassenproduzent implementiert Runnable
{
privater SyncStack-Stack;
öffentlicher Produzent (SyncStack-Stack) {
this.stack = Stapel;
}
publicvoid run() {
for (int i = 0; i < stack.getProducts().length; i++) {
String product = "product"+i;
stack.push(product);
System.out.println("Produced: "+product);
versuchen
{
Thread.sleep(200);
}
Catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
Klasse Consumer implementiert Runnable
{
privater SyncStack-Stack;
public Consumer(SyncStack-Stack) {
this.stack = Stapel;
}
publicvoid run() {
for(int i=0;i <stack.getProducts().length;i++)
{
String-Produkt =stack.pop();
System.out.println("Consumed: "+product);
versuchen
{
Thread.sleep(1000);
}
Catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
Klasse SyncStack
{
private String[] products = new String[10];
privateintindex;
publicsynchronizedvoid push(String-Produkt)
{
if(index==product.length())
{
versuchen {
Warten();
} Catch (InterruptedException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
benachrichtigen();
Produkte[Index]=Produkt;
index++;
}
publicsynchronized String pop()
{
if(index==0)
{
versuchen {
Warten();
} Catch (InterruptedException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
benachrichtigen();
Index--;
String product = products[index];
Produkt zurücksenden;
}
public String[] getProducts() {
Rücksendungen;
}
}
publicclass TestProducerConsumer {
publicstaticvoid main(String[] args) {
SyncStack stack=new SyncStack();
Produzent p=neuer Produzent(Stack);
Verbraucher c=neuer Verbraucher(Stack);
neuer Thread(p).start();
neuer Thread(c).start();
}
}
23. Programmierung zur Realisierung der Übertragung serialisierter Student-Objekte (sno, sname) im Netzwerk
Paket com.softeem.demo;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
java.net.Socket importieren;
Klasse Student implementiert Serializable {
private int sno;
privater String sname;
public Student(int sno, String sname) {
this.sno = sno;
this.sname = sname;
}
public int getSno() {
sno zurückgeben;
}
public void setSno(int sno) {
this.sno = sno;
}
öffentlicher String getSname() {
Sname zurückgeben;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
öffentlicher String toString() {
return „Studentennummer:“ + sno + „;Name:“ + sname;
}
}
Klasse MyClient erweitert Thread {
@Override
public void run() {
versuchen {
Socket s = new Socket("localhost", 9999);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Student stu = (Student) ois.readObject();
System.out.println("Das Client-Programm empfängt das vom Serverprogramm übertragene Studentenobjekt >> " + stu);
ois.close();
s.close();
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
} Catch (ClassNotFoundException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
}
Klasse MyServer erweitert Thread {
@Override
public void run() {
versuchen {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
ObjectOutputStream ops = new ObjectOutputStream(s.getOutputStream());
Student stu = new Student(1, „Zhao Benshan“);
ops.writeObject(stu);
ops.close();
s.close();
ss.close();
} Catch (IOException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
}
}
öffentliche Klasse TestTransfer {
public static void main(String[] args) {
new MyServer().start();
new MyClient().start();
}
}
l JDBC
24. Verwenden Sie die dom4j-Komponente, um die folgenden XML-Formatdateien zu analysieren:
<?xml version="1.0"kodierung="UTF-8"?>
<Generator>
<table name="login" operation="1">
<column name="username" handle="0">aaa </column>
<column name="password" handle="0">123 </column>
</table>
<table name="login" operation="2">
<column name="id" handle="1">1 </column>
<column name="username" handle="0">bbb </column>
<column name="password" handle="0">444 </column>
</table>
<table name="login" operation="3">
<column name="id" handle="1">4 </column>
</table>
</generator>
Regeln: <Tabelle>Operation 1 Tabelle einfügen, Tabelle 2 aktualisieren, Tabelle 3 löschen.
<Spalte>Handle 1 Tabelle wird als Wo-Bedingung verwendet, Tabelle 0 wird als Operationsfeld verwendet.
Voraussetzung: Drei SQL-Anweisungen regelkonform generieren! (Das heißt, erstellen Sie eine Methode zum Parsen der XML-Datei, um eine Zeichenfolge mit drei SQL-Anweisungen zu generieren.)
/**
*Parsen Sie die XML-Datei, um eine Zeichenfolge mit ausführbaren SQL-Anweisungen zu generieren
*@paramxmlFileName
*@returnSQL
*/
öffentlicher String parseXmltoSQL(String xmlFileName) {
StringBuffer sbsql = new StringBuffer();
SAXReader-Reader = new SAXReader();
versuchen {
Dokument document = reader.read(new File(xmlFileName));
Element element = document.getRootElement();
Iterator it = element.elementIterator("table");
while (it.hasNext()) {
element = (Element) it.next();
//Operationen für die Tabelle abrufen
String oper = element.attributeValue("operation");
//Den Tabellennamen abrufen
String tableName = element.attributeValue("name");
if ("1".equals(oper)) {
sbsql.append("insert into").append(tableName);
Iterator it2 = element.elementIterator("column");
String ColumnName1 = null;
String ColumnValue1 = null;
String ColumnName2 = null;
String ColumnValue2 = null;
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName1 = element.attributeValue("name");
ColumnValue1 = element.getText();
}
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName2 = element.attributeValue("name");
ColumnValue2 = element.getText();
}
sbsql.append("("+Spaltenname1+","+Spaltenname2+")"+" Werte('"+Spaltenwert1+"','"+Spaltenwert2+"')n");
} elseif ("2".equals(oper)) {
sbsql.append("update").append(tableName);
Iterator it2 = element.elementIterator("column");
String ColumnName1 = null;
String ColumnValue1 = null;
String ColumnName2 = null;
String ColumnValue2 = null;
String ColumnName3 = null;
String ColumnValue3 = null;
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName1 = element.attributeValue("name");
ColumnValue1 = element.getText();
}
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName2 = element.attributeValue("name");
ColumnValue2 = element.getText();
}
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName3 = element.attributeValue("name");
ColumnValue3 = element.getText();
}
sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' where "+columnName1+"="+columnValue1+"n");
}elseif ("3".equals(oper)) {
sbsql.append("löschen aus").append(tableName);
Iterator it2 = element.elementIterator("column");
String ColumnName1 = null;
String ColumnValue1 = null;
if (it2.hasNext()) {
element = (Element) it2.next();
ColumnName1 = element.attributeValue("name");
ColumnValue1 = element.getText();
}
sbsql.append(" where "+columnName1+"="+columnValue1);
}
}
} Catch (DocumentException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
}
return sbsql.toString();
}
lJSP/SERVLET
25. Schreiben Sie die integrierten Objekte von JSP auf und erklären Sie ihre Funktionen
request:request stellt das HttpServletRequest-Objekt dar. Es enthält Informationen zur Browseranfrage und bietet mehrere nützliche Methoden zum Abrufen von Cookie- und Header-Daten. Response:Response stellt das HttpServletResponse-Objekt dar und bietet mehrere Methoden zum Festlegen der an den Browser zurückgesendeten Antwort (z. B. Cookies, Header-Informationen usw.). Das Out:Out-Objekt ist eine Instanz von javax.jsp.JspWriter und bietet mehrere Methoden, die Sie verwenden können kann verwendet werden, um die Ausgabe an den Browser zurückzusenden. pageContext: pageContext repräsentiert ein javax.servlet.jsp.PageContext-Objekt. Dabei handelt es sich um eine API, die den Zugriff auf verschiedene Bereiche von Namespaces und Servlet-bezogenen Objekten erleichtert und Methoden allgemeiner Servlet-bezogener Funktionen umschließt. session:session stellt ein angefordertes javax.servlet.http.HttpSession-Objekt dar. Die Sitzung kann Informationen zum Benutzerstatus speichern. Anwendung: Anwendung stellt ein javax.servle.ServletContext-Objekt dar. Dies hilft bei der Suche nach Informationen über die Servlet-Engine und die Servlet-Umgebung. config:config stellt ein javax.servlet.ServletConfig-Objekt dar. Dieses Objekt wird verwendet, um auf die Initialisierungsparameter der Servlet-Instanz zuzugreifen. page:page stellt eine Servlet-Instanz dar, die von dieser Seite generiert wurde.
Ausnahme: Das Ausnahmeobjekt ist ein Ausnahmeobjekt. Wenn während der Ausführung einer Seite eine Ausnahme auftritt, wird dieses Objekt generiert. Wenn eine JSP-Seite dieses Objekt verwenden möchte, muss sie isErrorPage auf true setzen, andernfalls kann sie nicht kompiliert werden. Es ist eigentlich das Gegenstück zu java.lang.Throwable