2016-04-13 17 views
1

Bazı html içeriği ve formu olan bir search.jsp sayfam var. Form gönderildiğinde, form verilerinin bir servlet tutamacı vardır ve sonuçları search.jsp sayfasına yönlendirir. Ancak, formunu işledikten sonra tarayıcıda url servlet adına değiştirilir:Bir sunucu uygulamasını jsp sayfasına yönlendirdikten sonra url nasıl değiştirilir?

http://localhost:8080/MyProject/SearchServlet

değil search.jsp sayfa: Ben arama url değiştirebilir nasıl

http://localhost:8080/MyProject/Search.jsp 

.jsp? Başka bir deyişle, sonuçları aynı sayfada görüntülemek için search.jsp sayfasını yenilemek istiyorum. Bunu nasıl yapabilirim?

cevap

1

Bunu iletiyi ileterek yapamazsınız: response.sendRedirect() yöntemini kullanarak yeni bir http isteği oluşturmak için tarayıcıyı "bildirmeniz" gerekir.

Şimdi soru şu ki, URL çubuğunun Jsp adını görüntülemesini istiyor musunuz?

Gerçek hedef yolunu gizlemek, istekleri iletirken istenen bir özelliktir: kullanıcıların, web uygulamanızda gerçekleşen sunucu tarafı yönlendirmelerini (buna nasıl denir?) Bilmelerine gerek yoktur. Bunu bir düşünün: görevlerini gerçekleştirmek için bir sunucu, potansiyel olarak nihai hedefe ulaşmadan önce isteği iletebilir: URL çubuğunun her birini değiştirmesini istemezsiniz.

Sunucunuza aşağıdaki gibi bir meraklısı adı verin: "SearchServlet" yerine "Ara" yerine, kullanıcıların "SearchServlet" sayfasında değil, web uygulamanızın arama sayfasında olduklarını bilmelerini sağlayın.

Buna ek olarak, herhangi bir profesyonel web sitesini ziyaret ederseniz, adres çubuğunda .jsp veya .html veya .php uzantısını neredeyse hiç göremezsiniz. Bu bir gereklilik veya şartname olmasa da ve bunu yapmakta özgürsünüz, ilk yaklaşımın en iyi uygulama olduğuna inanıyorum (dürüstçe bana daha iyi görünüyor). Amaç, .jsp sayfalarınızı, url çubuğu aracılığıyla doğrudan erişime gizlemek olan bir WEB-INF klasörü bile var.

Yapmayı sevdiğim, web uygulamasının açılış karşılama sayfası olarak bir sunucu uygulamasına sahip olmaktır; bu, kullanıcı girdisine ve uygulamanın iç çalışmasına dayalı istekleri yönlendirmek ve yönlendirmekle yükümlüdür. Şimdi geri nihai talep (amaçlanan cinas)

için

"Diğer bir deyişle, sadece bunu yapabilirim nasıl aynı sayfada. Sonuçlarını görüntülemek için search.jsp sayfayı yenileyin ister misin?"

Ne yapacağını geçerli:

  1. karşılama/ev servlet "Ara" yı servlet kullanıcıyı yönlendirir.

  2. Arama servletinin doGet yönteminde, isteği, search.jsp sayfasına yönlendiririm (gerekiyorsa iletme öncesinde nitelikleri ayarlayabilirsiniz).

  3. search.jsp dosyasında, formun action niteliğini "Ara" (sunucu uygulamasının adı) ve POST yöntemini olarak ayarladım.

  4. Arama sunucu uygulamasının doPost yönteminde, uygulamak istediğiniz mantığı uygulayıp nihayet isteği araştırmaya yönlendirirsiniz.arama düğmesine basarak sonra jsp

(ve gönderme düğmesi tıklandığında sonra bile) hangi kullanıcı adres çubuğunda göreceksiniz basitçe mantıklı

http://localhost:8080/MyProject/Search 

Umut olduğunu.

0

Aynı search.jsp'yi aramada ve sonuçları göstermede kullanıyor musunuz? Her iki işlevi yerine getirmek için aynı jsp'yi kullanmak mümkündür, ancak sadece sonuçları gösterecek başka bir jsp yapmak daha kolay ve caziptir.

Eğer search.jsp'deki sonuçları göremiyorsanız, daha sonra jsp dosyasına yönlendirmeden önce Servlet sınıfında doğru cevabı ayarladığınızdan ve ayrıca Servlet sınıfı tarafından gönderilen yanıtı okuduğunuzdan emin olun. jsp içinde düzgün.

İsterseniz sayfanın hiç yenilenmemesi için AJAX'a gidin.

İlgili konular