2016-04-21 8 views
2

Ich versuche gerade, ein CMS-Projekt zu machen, wo ich eine so genannte "Blogsite" machen werde, etwas wie WordPress. Das Problem, mit dem ich konfrontiert bin, ist, dass ich direkt über die URL auf die Blogsite zugreifen möchte.Struts2 - Erhalte die URL von der Fehlerseite

So etwas wie local/CMS/site_name

normalerweise wäre es ein 404-Fehler sein, da es nichts gibt, das dort abgebildet wird, so dass ich gefangen in der web.xml von

<error-page> 
    <error-code>404</error-code> 
    <location>/checkBlogUrl.action</location> 
</error-page> 

damit ich die URL-Anfrage dort bearbeiten kann, frage die Site ab, ob sie die Seite dorthin weiterleitet, falls nicht error.jsp.

Der Code, den ich zur Zeit bin versucht, es Arbeit zu machen ist

HttpServletRequest request = ServletActionContext.getRequest(); 

    String a = request.getServerName() +" : " + request.getRequestURI() 
      + " : "+ request.getServletPath() +" : "+ request.getLocalName(); 
    System.out.println(a); 

die leider wieder dieses

myCMS: /CMS/checkBlogUrl.action: /checkBlogUrl.action: myCMS

Wie kann ich den site_name erhalten? Oder gibt es eine bessere Möglichkeit, die URL für eine Datenbankabfrage "weiterzuleiten"?

+0

Was Sie tun möchten? Umleiten zu einer URL? – Babel

+0

Ich möchte eine Query-Basis für den Sitename erstellen und diesen Sitename an eine Struts2-Aktion übergeben, die meine Kacheln für diesen Sitename lädt. z.B. thisismysite.wordpress.com, wenn ich darauf zugreife, wird Wordpress mich zu der Blogsite schicken, die ich erstellt habe. ich möchte einfach so etwas im url format von locahost machen: 8080/CMS/sitename –

+1

welp im blöd. Ich habe gerade über Struts2 Wildcard herausgefunden. wird eine Weile herumspielen –

Antwort

2

Anstatt die Fehlerseite in der web.xml zu verwenden, habe ich sie in benannte Parameter geändert.

<action name="/*" class="checkBlogUrl"> 
    <param name="blogSiteUrl">{1}</param> 
    <result type="redirectAction"> 
     <param name="actionName">checkBlogUrl</param> 
     <param name="blogSiteUrl">{1}</param> 
    </result> 
</action> 

Wie Andrea Ligios erwähnt, web.xml Fehlerseite wird die ursprüngliche Anforderung URI fallen, so dass die Frage

EDIT nicht möglich war:

setzen $ {request [ 'javax.servlet. error.request_uri ']} in der JSP-Seite wird Ihnen die URI geben, dann vielleicht können Sie es an die Aktion Someway oder andere übergeben