Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako otvoriti stranicu bez ekstenzije .jsp

[es] :: Java :: Kako otvoriti stranicu bez ekstenzije .jsp

[ Pregleda: 2037 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
212.66.146.*

Sajt: www.prefko.com


Profil

icon Kako otvoriti stranicu bez ekstenzije .jsp18.12.2008. u 12:45 - pre 187 meseci
Biću kratak. Mislim da je ovo sigurno moguće ali ni za živu glavu ne uspevam da nadjem na netu nekakvo objašnjenje ili hint

Dakle, umesto:
www.some-site.com/welcome.jsp

Hteo bih da jednostavno mogu da koristim:
www.some-site.com/welcome

dakle, ovakav link bi onda otvorio welsome.jsp stranicu ali u adresi ne bi pisalo .jsp

Da li neko ima ideju kako bi ovo moglo da se sredi? Ili bare GDE bih mogao o tome da čitam?

Hvala unapred!
Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp18.12.2008. u 13:32 - pre 187 meseci
Napravis jedan servlet, i u web.xml-u namestis da mu je servlet-mapping *
To znaci da ce taj servlet da uhvati sve requeste. Zatim u kod servleta, iz requesta uzmes ime koji je korisnik trazio, i forwardujes ka ime+".jsp"... ne znam napamet, nesto kao request.getRequestDispatcher(ime+".jsp").forward(request,response)

Na ovakav nacin radi Struts, osim sto on hvata *.do requeste
 
Odgovor na temu

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
212.66.146.*

Sajt: www.prefko.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp18.12.2008. u 14:12 - pre 187 meseci
TIL D DŽADŽA!!!

taj forward ću da provalim, tj. nađio sam ga već:
Code:

String path = request.getRequestURI();
String ime = path...
RequestDispatcher rd = request.getRequestDispatcher(ime+".jsp");
rd.forward(request, response);


A za servlet-mapping mi sad nešto pade na pamet, zar ne bi moglo da se podesi sa * da mappuje sve na to+.jsp?
Nešto u fazonu mapuj * na *.jsp ?

Moram da vidim za servlet-mapping...

Razmišljam da li bi radilo:
Code:

<servlet-mapping>
  <servlet-name>*.jsp</servlet-name>
  <url-pattern>*</url-pattern>
</servlet-mapping>


Mada sam 99,99% siguran da ne bi
Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
*.pools.arcor-ip.net.

Sajt: www.prefko.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp18.12.2008. u 19:01 - pre 187 meseci
Citat:
gajo2: Napravis jedan servlet, i u web.xml-u namestis da mu je servlet-mapping *
To znaci da ce taj servlet da uhvati sve requeste. Zatim u kod servleta, iz requesta uzmes ime koji je korisnik trazio, i forwardujes ka ime+".jsp"... ne znam napamet, nesto kao request.getRequestDispatcher(ime+".jsp").forward(request,response)
Na ovakav nacin radi Struts, osim sto on hvata *.do requeste


Joksim...

Code:

java.lang.StackOverflowError
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
    at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
    ...

Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

Ivan Ivanic
Ivan Ivanic
Freelance, Anywhere
Fruška Gora

Član broj: 203038
Poruke: 179
*.ptt.rs.

Sajt: ivan.yggdrasillcode.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp18.12.2008. u 19:36 - pre 187 meseci
http://en.wikipedia.org/wiki/Rewrite_engine

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

http://www.sitepoint.com/article/apache-mod_rewrite-examples/

Pogledaj prvo ovaj članak na wiki.
Pošto vidim da koristiš apache evo ti link za apache mod rewrite.
Rad rad i samo rad :-D
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp19.12.2008. u 07:36 - pre 187 meseci
Citat:
preff.net: Joksim...

Code:

java.lang.StackOverflowError
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
at javax.servlet.http.HttpServletRequestWrapper.getSession(HttpServletRequestWrapper.java:216)
at org.apache.catalina.core.ApplicationHttpRequest.getSession(ApplicationHttpRequest.java:545)
...

Da to ima smisla, jer je servlet-mapping * pa se stalno zove isti servlet. Onda mozes koristiti ovo sto je napisao Ivan, a uspeo sam da uradim i uz pomoc filtera. Dakle potpuno ista ideja kao servlet, u web.xml se deklarise filter i u filter-mappingu se upise url-pattern *, zatim kod filtera izgleda ovako:

Code:
public class RequestFilter implements Filter {

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest)request;
        String path = req.getRequestURI();
        String name = path.substring(path.lastIndexOf("/"));
        if (name.endsWith(".jsp")) {     // ako je JSP stranica onda je prikazi
            chain.doFilter(request, response);
        } else {      // inace forwarduj do nje
            req.getRequestDispatcher(name+".jsp").forward(request, response);
        }
    }
    
    public void destroy() { }

    public void init(FilterConfig cfg) throws ServletException { }

}


Prednost filtra nad servletom je ta da mozes prekinuti izvrsavanje tako sto na kraju metode ne napises chain.doFilter(request, response); tako da Tomcat nece uci u peskonacnu petlju...
Mada vidim da ces i ovako imati probleme sa slikama i drugim ne-jsp fajlovima, pa mozda ti je bolje da ne koristis format http://www.mojsajt.com/stranica nego neki drugi npr. sa .html ekstenzijom? Napravis servlet ili filter ili koristis mod_rewrite tako da .html requeste forwarduje ka .jsp?
 
Odgovor na temu

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
212.66.146.*

Sajt: www.prefko.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp19.12.2008. u 09:01 - pre 187 meseci
Citat:
gajo2: Da to ima smisla, jer je servlet-mapping * pa se stalno zove isti servlet. Onda mozes koristiti ovo sto je napisao Ivan, a uspeo sam da uradim i uz pomoc filtera.


TO GAJO MAJSTORE

Sad mi krivo što sam na poslu pa ne mogu da probam, ali čim stignem kući večeras odmah kuckam sve ovo

Ako sam dobro skapirao, samo treba da dodam u web.xml:
Code:

    <filter>
        <filter-name>RequestFilter</filter-name>
        <filter-class>cope.RequestFilter</filter-class>
        <description>Ubiva potrebu za .jsp u URL-u</description>
    </filter>

i to je to?

[Ovu poruku je menjao preff.net dana 19.12.2008. u 10:24 GMT+1]
Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

gajo2
Budapest

Član broj: 62614
Poruke: 518
*.i-rose.si.

Sajt: b.flyingoranges.com


+117 Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp19.12.2008. u 10:11 - pre 187 meseci
Pa ja sam na poslu napisao ovo, treba nekako da prođe vreme kad je sve ušlo u zastoj zbog praznika

Forum misli da koristim caps lock kad pisem cirilicom?

Edit: vidi ti to, konvertirano u latinicu!
 
Odgovor na temu

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
*.pools.arcor-ip.net.

Sajt: www.prefko.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp19.12.2008. u 18:37 - pre 187 meseci
RADI!!!

Ako nekome treba evo detaljnog koda:
(obratiti pažnju da se pokriju sve ekstenzije koje koristite, na primer png ili recimo .dwr ako ga koristite, taj me je mučio...)
Code:

package cope;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public class RequestFilter implements Filter
{

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
            ServletException
    {
        HttpServletRequest req = (HttpServletRequest) request;
        String path = req.getRequestURI();
        String name = path.substring(path.lastIndexOf("/"));
        if (name.endsWith(".js")) chain.doFilter(request, response);
        else if (name.endsWith(".ico")) chain.doFilter(request, response);
        else if (name.endsWith(".css")) chain.doFilter(request, response);
        else if (name.endsWith(".jpg")) chain.doFilter(request, response);
        else if (name.endsWith(".gif")) chain.doFilter(request, response);
        else if (name.endsWith(".jsp")) chain.doFilter(request, response);
        else if (name.endsWith("/")) req.getRequestDispatcher(name + "index.jsp").forward(request, response);
        else req.getRequestDispatcher(name + ".jsp").forward(request, response);
    }

    public void destroy()
    {}

    @SuppressWarnings("unused")
    public void init(FilterConfig cfg) throws ServletException
    {}

}


i u web.xml na vrhu:
Code:

    <filter>
        <filter-name>RequestFilter</filter-name>
        <filter-class>cope.RequestFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>RequestFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

cope.rs
Predrag Stojadinović
preff.net
Aachen

Član broj: 145487
Poruke: 145
*.pools.arcor-ip.net.

Sajt: www.prefko.com


Profil

icon Re: Kako otvoriti stranicu bez ekstenzije .jsp20.12.2008. u 10:39 - pre 187 meseci
Mali dodatak da bi se najbrže provalile ekstenzije koje nam trebaju a koje smo zaboravili da pokrijemo.

Umesto
Code:

else req.getRequestDispatcher(name + ".jsp").forward(request, response);


staviti
Code:

        else
        {
            System.out.println(name);
            req.getRequestDispatcher(name + ".jsp").forward(request, response);
        }


I onda će ispisati fajlove koje smo zaboravili
Pedja
- http://www.CoPe.rs
- http://iKr.me - GROK! SKRATI TAJ LINK!
 
Odgovor na temu

[es] :: Java :: Kako otvoriti stranicu bez ekstenzije .jsp

[ Pregleda: 2037 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.