Tidak dapat meneruskan nilai dari servlet ke JSP

Kode Diperbarui dengan konfigurasi web.xml dan Servlet

Saya mencoba meneruskan beberapa nilai dari servlet saya ke JSP, tetapi ketika saya mencoba mengakses nilai itu ke JSP, tidak ada keluaran.

Ini formulir saya:

<HTML>
<BODY>
<FORM METHOD=POST ACTION="servlet/NewServlet">
Enter Name: <Input type="text" name="name"/><br>
<P><INPUT TYPE=SUBMIT>
</FORM>

Ini Bean saya yang saya gunakan untuk metode penyetel dan pengambil:

package user;

    public class CompileClass {
    public String name;

    public void setName(String n){
            name=n;
        }

    public String getName(){
            return name;
        }
    }

Ini servlet saya:

import java.io.*;
import javax.servlet.*;  
import javax.servlet.http.*;

import user.CompileClass;

public class NewServlet extends HttpServlet{

    public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String name1;

CompileClass c=new CompileClass();
name1=c.getName();
request.getSession().setAttribute("name1", name1);

request.getRequestDispatcher("../Result.jsp").forward(request, response);

    }
    }

Dan akhirnya inilah halaman JSP saya:

<%@ page import="java.net.*"%>
<%@ page import="javax.servlet.*"%>
<%@ page import="java.util.ArrayList"%>

<jsp:useBean id="user" scope="request" class="user.CompileClass" />
<jsp:setProperty property="*" name="user"/>
<html>

  <body>

Name:
<br/>

<% request.getSession().getAttribute("name1");%>


  </body>
</html>

Ini web.xml saya:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>NewServlet</servlet-name>
    <servlet-class>NewServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>NewServlet</servlet-name>
    <url-pattern>/servlet/NewServlet</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Segalanya tampak baik-baik saja bagiku. Tapi tetap saja saya tidak mendapatkan output apa pun di halaman JSP saya. Membantu?


person Anurag    schedule 26.03.2011    source sumber


Jawaban (3)


Bagaimana nilai dari formulir yang masuk ke Bean Anda? Anda sedang melakukan:

CompileClass c=new CompileClass();      //creates a new, empty instance
name1=c.getName();                      //gets the name from the empty 
                                        //instance (will be null)
request.setAttribute("name1", name1);   //sets 'name1' to null in the request

Anda mungkin lebih beruntung jika melakukannya:

CompileClass c=new CompileClass();      //creates a new, empty instance
c.setName(request.getParameter("name"));//get the param and set it in the bean
name1=c.getName();                      //gets the name from the bean
request.setAttribute("name1", name1);   //sets 'name1' in the request

Meskipun dari struktur kode Anda, sepertinya Anda mungkin menggunakan beberapa kerangka web yang Anda harapkan akan mengisi Bean secara otomatis untuk Anda dengan data dari permintaan. Jika demikian, maka Anda mungkin ingin berkonsultasi dengan dokumen konfigurasi dan penggunaan kerangka kerja Anda untuk memastikan bahwa Anda telah menyiapkannya dengan benar dan Anda menggunakannya dengan benar.

Sunting:

Selain itu, mohon jangan melakukan hal-hal seperti:

<% request.getSession().getAttribute("name1");%>

Gunakan ini sebagai gantinya:

${name1}

Sunting 2:

Anda tidak menerapkan servlet Anda di web.xml. Anda perlu mengkonfigurasinya dengan menambahkan sesuatu seperti:

<servlet>
  <servlet-name>newServlet</servlet-name>
  <servlet-class>user.NewServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>newServlet</servlet-name>
  <url-pattern>/name/*</url-pattern>
</servlet-mapping>

Dan kemudian Anda perlu memperbarui HTML formulir Anda sehingga formulir tersebut diposkan ke servlet, bukan langsung ke JSP. Jadi sesuatu seperti:

<FORM METHOD=POST ACTION="name/submit">

person aroth    schedule 26.03.2011
comment
Saya mencoba kode Anda yang dimodifikasi tidak berhasil. Saya juga menghapus konstruktornya dan kemudian mencoba, tetapi itu juga tidak berhasil. Ini bukan kerangka web. Hanya itu garis besar aplikasi web kami yang telah kami rancang dan coba pertahankan pada struktur ini. - person Anurag; 26.03.2011
comment
@Anurag - Lalu bisakah Anda juga memposting file web.xml Anda? Dengan asumsi semuanya terhubung dengan benar, kode di atas akan berfungsi. - person aroth; 26.03.2011
comment
@Anurag - Itu menjelaskannya, Anda belum menerapkan servlet Anda. Anda perlu menambahkan bagian konfigurasi untuk servlet Anda, seperti: <servlet> <servlet-name>nameServlet</servlet-name> <servlet-class>user.NewServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>nameServlet</servlet-name> <url-pattern>/name/*</url-pattern> </servlet-mapping>, dan kemudian mengatur action pada Anda menjadi sesuatu seperti ACTION="name/submit", dan Anda siap melakukannya. - person aroth; 26.03.2011
comment
@aroth Saya memperbarui web.xml dan menambahkan konfigurasi yang sesuai. Saya juga telah memperbarui web.xml di sini. Di index.jsp juga sudah saya modifikasi: <FORM METHOD=POST ACTION="servlet/NewServlet"> Tapi masih di halaman Result.jsp belum ada output :| Dimana kesalahanku sekarang? - person Anurag; 26.03.2011
comment
@Anurag - Sulit dikatakan. Sudahkah Anda mencoba menambahkan beberapa panggilan System.out.println() di servlet Anda untuk memverifikasi bahwa panggilan tersebut dipanggil? Jika ya, mungkin coba gunakan request.getRequestDispatcher("../Result.jsp").include(request, response); dan lihat apakah ada bedanya. - person aroth; 27.03.2011
comment
@aroth Saya menghapus kacang dan halaman result.jsp dan langsung mengambil params dari index.php dan memproses serta mencetak dari servlet. Sekarang ini berhasil. Terima kasih untuk bantuannya. - person Anurag; 27.03.2011

Sepertinya, ada masalah dengan cakupannya. Cara termudah untuk memperbaikinya adalah dengan menggantinya

request.setAttribute("name1", name1);

to

request.getSession().setAttribute("name1", name1);
person Stan Kurilin    schedule 26.03.2011
comment
Saya mencoba mengubah panggilan permintaan dengan sesi tetapi tidak berhasil. - person Anurag; 26.03.2011
comment
Saya mencoba semua yang ditunjukkan di sini. Tapi sekali lagi tidak ada keluaran. Saya juga telah memperbarui kode di sini. - person Anurag; 26.03.2011
comment
@Anurag - coba sertakan alih-alih meneruskan. - person Stan Kurilin; 27.03.2011
comment
@stas Saya menghapus kacang dan halaman result.jsp dan langsung mengambil params dari index.php dan memproses serta mencetak dari servlet. Sekarang ini berhasil. Terima kasih atas bantuannya. - person Anurag; 27.03.2011
comment
@Stas index.jsp salahku :| Maksud saya formulir JSP awal - person Anurag; 27.03.2011

gunakan kelas RequestDispatcher...

person Mazhar    schedule 20.03.2014
comment
Baca pertanyaannya, itu yang dia lakukan: request.getRequestDispatcher("../Result.jsp").forward(request, response); - person Erwin Bolwidt; 20.03.2014
comment
bersama dengan pengirim permintaan, kami dapat meneruskan nilai ke halaman berikutnya saja. itu yang dia inginkan.. - person Mazhar; 21.03.2014
comment
Jika Anda yakin hal itu terjadi, mengapa Anda tidak menjelaskannya dalam jawaban Anda? - person Erwin Bolwidt; 21.03.2014