Sumber daya yang diminta (/xxx.html) tidak tersedia saat dialihkan

Saya benar-benar mengerjakan pekerjaan rumah saya untuk mencari tahu alasannya tetapi saya masih berjuang. Tolong bantu!

Saya memiliki Servlet yang berjalan dengan baik tanpa halaman apa pun sebelum hari ini (Tomcat 7 & Eclipse)

Sekarang, saya berharap untuk mencoba menambahkan beberapa halaman dan mengarahkannya kembali. Saya menambahkan sebaris

response.sendRedirect("/userhelp.html");

Untuk menguji apakah halaman tersebut berfungsi, tetapi ternyata tidak.

Saya menempatkan userhelp.html saya di bawah foler WebContent. Untuk pengujian, saya sudah mencoba menyalinnya ke WEB-INF, tidak ada yang berhasil.

Dan jika saya mengganti "/userhelp.html" menjadi "userhelp.html" tidak ada halaman kesalahan tetapi memiliki "pengalihan rekursif".

Di bawah ini adalah kode saya yang relatif.

@WebServlet(name="core",urlPatterns={"/"})
public class CoreServlet extends HttpServlet {


protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    response.setCharacterEncoding("UTF-8");
    response.sendRedirect("/userhelp.html");    

person JaskeyLam    schedule 26.07.2014    source sumber
comment
Maksudnya pengalihan rekursif?   -  person Abhijeet Panwar    schedule 26.07.2014
comment
Maaf, karena chrome saya versi China, jadi saya terjemahkan saja, artinya PageA--›PageA--›PageA--›PageA....kira-kira seperti ini, karena saya melihat kucing jantan saya berjalan dengan blank untuk lama dengan bilah proses hijau. Tapi menurut saya ini seharusnya berhasil /userhelp.html , mengapa 404?Tolong bantu!   -  person JaskeyLam    schedule 26.07.2014


Jawaban (1)


Anda perlu mengedit pengiriman Anda ke:

respon.sendRedirect("/ProjectName/userhelp.html");

Anda memiliki respon.sendRedirect("/userhelp.html"); argumen sendRedirect Anda dimulai dengan garis miring. Yang berarti 'relatif terhadap root wadah'. Jadi wadah membuat URL relatif terhadap URL asli permintaan.

Halaman userhelp.html Anda keluar di konten web proyek Anda. Jalur relatifnya dari root penampung harus /Projectname/userhelp.html. Jadi, Anda perlu mengedit jalur Anda di respon.sendRedirect.

Sunting : Masalahnya ada pada pemetaan servlet Anda karena @servletmapping(/) berarti apa pun yang datang untuk pola url ini(/) , harus dikirim ke servlet ini. Jadi yang sebenarnya terjadi adalah ketika servlet Anda dipanggil pertama kali dan ditanggapi. sendredirect() dipanggil, objek permintaan baru dibuat dan sebagai jalurnya adalah / , Jadi sekali lagi servlet Anda dipanggil dan proses rekursif ini dimulai.

Jadi solusi untuk ini adalah mengubah pemetaan servlet menjadi : @servletmapping(/test) dan kemudian memanggil servlet ini dengan memanggil yourlocalhost/test/ . Jadi ketika pengalihan kali ini selesai, Servlet tidak dipanggil untuk itu.

person Abhijeet Panwar    schedule 26.07.2014
comment
ini tidak berhasil untukku. Ketika saya menggunakan project/userhelp.html, saya mendapat situasi yang aneh adalah, ketika saya memiliki metode log enter dogetwhen enter doGet(), dan itu terus mencetak enter doget untuk solusi Anda, dan tidak ada yang keluar! - person JaskeyLam; 26.07.2014
comment
Bagaimana Anda memanggil servlet Anda? Silakan kirimkan kode Anda yang memanggil servlet Anda. - person Abhijeet Panwar; 26.07.2014
comment
Apa maksudnya disebut log dicetak, jadi metode do get masuk. - person JaskeyLam; 26.07.2014
comment
Ya, ada di dalam, tetapi mengapa pencetakannya 'terus menerus' masuk ke doget? Apakah servlet Anda dipanggil berulang kali? Jika ya, maka menurut saya itulah alasannya. Bahkan Anda telah menyebutkan dalam pertanyaan Anda tentang halaman rekursif a. Saya pikir masalahnya adalah sesuatu kalau tidak - person Abhijeet Panwar; 26.07.2014
comment
Tapi masalahnya adalah mengapa dia mengulanginya. Jika saya menghapus kode ini (redirect), semuanya akan baik-baik saja - person JaskeyLam; 26.07.2014
comment
Hai, coba masukkan return setelah respon.sendRedirect :) - person Abhijeet Panwar; 26.07.2014
comment
Mari kita melanjutkan diskusi ini dalam chat. - person JaskeyLam; 26.07.2014