2 Stimmen

Mehrere Links, die auf dieselbe Seite führen, aber unterschiedliche Funktionen erfüllen.

Gibt es eine Möglichkeit, mehrere Links zu einer leeren Seite zu haben, aber jeder der verschiedenen Links zeigt eine separate Abfrage auf der Seite an, anstatt separate Seiten zu haben, um es zu tun? Oder ist das zu viel verlangt? Ich mache das mit JSP-Seiten. Für jede Hilfe wäre ich dankbar.

Gracias.

4voto

BalusC Punkte 1034465

Dort werden die Servlet ist für. Sie können ihn nutzen, um Anfragen in hohem Maße zu kontrollieren, vor- und nachzubearbeiten. Sie können den Query-String nutzen, um anfragespezifische Informationen an das Servlet zu übergeben, z.B. http://example.com/context/servlet?name1=value1&name2=value2 auf die im Servlet wie folgt zugegriffen werden kann:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String name1 = request.getParameter("name1"); // Now contains "value1".
    String name2 = request.getParameter("name2"); // Now contains "value2".
    // Do your business thing with them.
}

Sie können auch request pathinfo verwenden, um anforderungsspezifische Informationen an das Servlet zu übermitteln, was zu schöneren URLs führt, z.B. http://example.com/context/servlet/value1/value2 auf die im Servlet wie folgt zugegriffen werden kann:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String pathInfo = request.getPathInfo(); // Now contains "/value1/value2".
    // Do your business thing with them.
}

In beiden Fällen ist die Servlet ist natürlich abgebildet in web.xml wie folgt:

<servlet>
    <servlet-name>servlet</servlet-name>
    <servlet-class>com.example.Servlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>servlet</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

Um die Ergebnisse in JSP anzuzeigen, müssen Sie die Daten im Anfragebereich speichern und die Anfrage zur Anzeige an eine JSP weiterleiten. Z.B.:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String query = request.getParameter("query");
    List<Result> results = searchDAO.list(query);
    request.setAttribute("results", results);
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
}

Hier wird die Result Klasse ist nur eine gewöhnliche JavaBean Klasse, die grob eine Zeile der Datenbanktabelle darstellt. Die JSP wird in /WEB-INF zu verhindern, dass direkt Zugang per URL. Das wollen Sie natürlich nur kann das Servlet darauf zugreifen. In JSP können Sie wiederum mit Ausdrucksform Sprache um auf beliebige Attribute zuzugreifen, wie z. B. results aus dem obigen Beispiel. Sie können in JSP auch Taglibs verwenden, um den Seitenfluss und die Ausgabe zu steuern. Eine bekannte Standard-Taglib ist JSTL (einfach fallen lassen jstl-1.2.jar en /WEB-INF/lib um es zum Laufen zu bringen), hier ein Beispiel, wie man die Ergebnisse schön in einer JSP anzeigen kann:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

...

    <table>
        <tr>
            <th>Name</th>
            <th>Description</th>
        </tr>
        <c:forEach items="${results}" var="result">
            <tr>
                <td>${result.name}</td>
                <td>${result.description}</td>
           </tr>
        </c:forEach>
    </table>

Um mehr über JSP/Servlets zu erfahren, empfehle ich die Die Coreservlets.com-Tutorials von Marty Hall . Wenn Sie mehr über die richtige Art der Interaktion mit Datenbanken (das DAO-Muster) erfahren möchten, finden Sie dieser Artikel ebenfalls nützlich.

Viel Glück!

3voto

leepowers Punkte 36580

Ja. Mit GET- oder POST-Variablen aktualisieren Sie die Anzeige einer Seite auf der Grundlage der übergebenen Argumente:

/page.jsp?arg1=val1&arg2=val2
/page.jsp?arg1=val2

Dann der page.js-Code:

String arg1 = request.getParameter("arg");
String arg2 = request.getParameter("arg2");

if (arg1 == "val1")
  // Do something
if (arg2 == "val2")
  // Do something else

0voto

Blessed Geek Punkte 19927

Es gibt eine Datei web.xml unter war/WEB-INF.

Sie können Folgendes in die Datei eingeben.

<servlet-mapping>
    <servlet-name>myApp1</servlet-name>
    <url-pattern>/hello/dolly</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>myApp2</servlet-name>
    <url-pattern>/bye/bunny</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>myApp1</servlet-name>
    <servlet-class>
    misc.apps.enter.theDragon
    </servlet-class>
</servlet>
<servlet>
    <servlet-name>myApp2</servlet-name>
    <servlet-class>
    misc.apps.enter.theDragon
    </servlet-class>
</servlet>

Hier ist die Erklärung:

  1. Definieren Sie einen Servlet-Bezeichner myApp1. Definieren Sie das kontextbezogene Url-Muster/den Pfad von myApp1 als /hello/dolly
  2. Ähnliches gilt für den Bezeichner myApp2, Definieren Sie die kontextbezogene Url Muster/Pfad als /bye/bunny
  3. Dann verknüpfen Sie myApp1 mit dem Servlet misc.apps.enter.theDragon.
  4. Verknüpfen Sie außerdem myApp1 mit dem Servlet misc.apps.enter.theDragon zu.

Also, jetzt beide Wege

  1. /hello/dolly
  2. /Auf Wiedersehen/Hase

am Ende das gleiche Servlet misc/apps/enter/theDragon.java aufrufen

Innerhalb des Servlet-Codes misc/apps/enter/theDragon.java finden Sie den Code

this.requestUri = request.getRequestURI();
if (this.requestUri.contains("/hello/dolly")){
  happyRoutine();
else // if (this.requestUri.contains("/bye/bunny"))
{
  response.redirect("whatever page");
}

Aber Sie wollen doch ein jsp-Servlet abbilden und nicht ein Nicht-jsp-Servlet, oder? Werfen Sie einen Blick auf die web.xml-Einträge unten und ich bin sicher, Sie brauchen keine eine weitere Erklärung, wie zwei URL-Pfade auf dieselbe JSP abgebildet werden. Verwenden Sie dann innerhalb des jsp erneut request.getRequestURI(), um herauszufinden, welche url verwendet wurde, um die jsp aufzurufen, und führen Sie dann die entsprechenden Aktionen aus, die Sie durchführen möchten.

<servlet-mapping>
    <servlet-name>empJSP1</servlet-name>
    <url-pattern>/hello/dolly</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>empJSP2</servlet-name>
    <url-pattern>/bye/bunny</url-pattern>
</servlet-mapping>

<servlet>
  <servlet-name>empJSP1</servlet-name>
  <jsp-file>/employees/emp.jsp</jsp-file>
</servlet>
<servlet>
  <servlet-name>empJSP2</servlet-name>
  <jsp-file>/employees/emp.jsp</jsp-file>
</servlet>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X