2016-03-28 19 views
2

Ich habe eine Webseite, die ich derzeit für ein internes Arbeitstool erstelle. Es ist eine Beispielwebsite, die es einem Benutzer ermöglicht, sich anzumelden und dann eine Abfrage von der Datenbank auszuführen. Ich habe gerade einen Filter implementiert, um nicht angemeldete Benutzer auf die Anmeldeseite umzuleiten. Die doFilter Funktion sieht wie folgt ausJava JSP Filtern nach Abfragezeichenfolge

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
    throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    HttpSession session = request.getSession(false); 

    if (session == null || session.getAttribute("user") == null) { 
     // No logged-in user found, so redirect to login page. 
     response.sendRedirect(request.getContextPath() + "/Login.jsp"); 
    } else { 
     // Logged-in user found, so just continue request. 
     chain.doFilter(req, res); 
    } 
} 

In meiner web.xml I

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>Servlets.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>/Home.jsp</url-pattern> 
</filter-mapping> 

haben, wenn ich Zugriff auf Home.jsp direkt wird es auf der Login-Seite umgeleitet. Nach der Anmeldung wird der Benutzer jedoch auf die Seite Home.jsp verschoben, auf der der Benutzer eine Abfrage für die Datenbank ausführen kann. Die Heim-URL aussehen wird

http://localhost:8084/LiveTrades/Home.jsp

Aber sobald sie Eingang zur Verfügung stellen, wird es auf eine neue Seite Anzeigen der Ergebnisse mit URL-Zeichenfolge wie

http://localhost:8084/LiveTrades/Request?BIC=cat (vorausgesetzt, der Benutzer eingegeben ‚Katze‘ für den Umzug Eingabe "BIC" -Feld).

Wenn ein Benutzer diese obige URL direkt eingibt, wenn nicht protokolliert wird, wird es gut verarbeitet, wenn es nicht sollte. Ich weiß, das liegt daran, dass mein Filter nur von der Home.jsp-Seite aufgerufen wird. Wie kann ich das umgehen, um zu verhindern, dass Seiten mit Anfrage * gefiltert werden?

Wäre es einfacher, eine weitere JSP-Seite zu haben, sagen wir Results.jsp, und lässt das Servlet, das die Informationen aus der Datenbank verarbeitet, die Daten an Results.jsp weiterreichen? Dann kann ich Results.jsp einfach zur web.xml hinzufügen.

Antwort

0

Ich konnte dieses Problem lösen, indem ich meine Webseite umstrukturierte. Die Ergebnisse werden nun über eine JSP-Seite angezeigt, die Daten werden von einem Servlet an die JSP-Seite übergeben. Jetzt in meinem Filter füge ich einfach die Ergebnis-JSP-Seite hinzu und das Problem ist gelöst.