Passaggio parametri tra servlet e jsp

di il
11 risposte

Passaggio parametri tra servlet e jsp

Salve ragazzi,
praticamente ho bisogno di capire bene questa dinamica:

ho registrato un titolare in una tabella di un database Oracle;


ho creato una JSP LoginTitolare.jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Titolare</title>
</head>
<body>
	<form action="/LoginTitolare">



		<div>
			<input type="email" name="mail" placeholder="Email Address">

		</div>

		<div>

			<input type="password" name="pw" placeholder="Password">

		</div>

	
	<button type="submit">Login</button>
	</form>
	
</body>
</html>

ho creato una servlet chiamata LoginTitolare :



@WebServlet(  "/LoginTitolare" )
public class LoginTitolare extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginTitolare() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
	TitolareDao t = new TitolareDao();
		
		String email =request.getParameter("mail");
		String password=request.getParameter("pw");
	
		Titolare tit = new Titolare(001, "", "", email,"", "", password);
		
		if(t.autentica(tit) != null) {
			System.out.println("accesso effettuato");
			response.getWriter().append("accesso effettuato");
			response.sendRedirect("/ProfiloTitolare");
		
		}
		else {
			System.out.println("accesso negato");
			response.getWriter().append("accesso negato");
		}
		
		doGet(request, response);
	}
}
e un altra JSP chiamata ProfiloTitolare :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Titolare</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<link rel="stylesheet" href="assets/css/main.css" />
</head>
<body>

	<!-- Header -->

	<header id="header">
	<div class="inner">
		<a href="index.html" class="logo">Buy&Drink</a>
		<nav id="nav"> <a href="/home.jsp">&nbsp;Home</a> <a href="   ">&nbsp;Prodotti&nbsp;</a>
		<a href="/Pagina_pre_login.jsp">&nbsp;Logout</a> </nav>
	</div>
	</header>
	<a href="#menu" class="navPanelToggle"><span class="fa fa-bars"></span></a>

	<!-- Dati  -->
	<h3>Dati :</h3>

	<div class="row">
		<div class="6u 12u$(xsmall)">
			<ul class="alt">
				<li>ID:</li>
				<li>Nome:</li>
				<li>Cognome:</li>
				<li>E-mail:</li>
				<li>Codice Fiscale:</li>
				<li>Partita IVA:</li>
			</ul>
		</div>


	
</body>
</html>

1) vorrei capire cosa ho sbagliato perché quando clicco run compare il form ma quando clicco submit non va nella servlet , praticamente non prosegue.
2) vorrei che una volta eseguito il login i dati in profilo titolare si compilassero in automatico , con le espressioni delle jsp.


grazie in anticipo a tutti per la pazienza

11 Risposte

  • Re: Passaggio parametri tra servlet e jsp

    La JSP E' UNA SERVLET

    NON SONO due cose distinte: una JSP viene convertita in una servlet dal compilatore di jsp!
    C'e' anche modo di vedere il ".java" generato!

    Per il tuo problema: non e' che non prosegue, la cosa e' piu' banale:

    RICHIAMA SE STESSA!!!!!!!!
  • Re: Passaggio parametri tra servlet e jsp

    Benissimo , appurato anche questa volta che non ci ho capito niente , potresti suggerirmi come correggere
  • Re: Passaggio parametri tra servlet e jsp

    Repa235 ha scritto:


    Benissimo , appurato anche questa volta che non ci ho capito niente , potresti suggerirmi come correggere
    Alt, chiarisci innanzitutto: la pagina LoginTitolare.jsp con quale url esatto la richiami? Hai un nome di contesto oppure no per la tua applicazione?

    Insomma, è qualcosa tipo:

    http://nomehost:porta/nomecontesto/LoginTitolare.jsp

    o

    http://nomehost:porta/LoginTitolare.jsp
  • Re: Passaggio parametri tra servlet e jsp

    La prima ... http://localhost:8080/esercitazione_BuyDrink_02092018/LoginTitolare.jsp
    poi dopo aver cliccato login passa i parametri all'url e il" nomecontesto" scompare , suppongo che li avvenga il passaggio dei dati nel form alla servlet in modo che possa eseguire le sue istruzioni.
    tuttavia si vede solo lo schermo bianco se vado in eclipse , mentre andando all'url dal browser si note l'errore 404,
    
    Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
    

    ai miei occhi sembra un errore di url mapping
  • Re: Passaggio parametri tra servlet e jsp

    Repa235 ha scritto:


    La prima ... http://localhost:8080/esercitazione_BuyDrink_02092018/LoginTitolare.jsp
    Bene, allora "esercitazione_BuyDrink_02092018" è il nome del contesto della applicazione.

    Nella servlet hai messo @WebServlet("/LoginTitolare")

    Il / è relativo alla context-root, ovvero la tua servlet risponde al url

    http://localhost:8080/esercitazione_BuyDrink_02092018/LoginTitolare

    Ma nel html hai messo:
    <form action="/LoginTitolare">

    Questo / è relativo alla server-root. La richiesta la fa il browser, che non "sa" nulla di contesti. Gli url assoluti che iniziano con / partono da sotto la root del server. Quindi il browser richiede:

    http://localhost:8080/LoginTitolare

    Quindi secondo te, trova la servlet?


    E comunque, ancora un'altra cosa: nel <form> non hai specificato che il metodo è POST, quindi è GET per default. Solo che nella servlet hai gestito il doPost mentre il doGet è vuoto.
  • Re: Passaggio parametri tra servlet e jsp

    Perfetto , ho corretto ho corretto il form , solo che ora sono davanti a questo
    
    Type Exception Report
    
    Description The server encountered an unexpected condition that prevented it from fulfilling the request.
    
    Exception
    java.lang.NullPointerException
    	it.unirc.twd.BuyeDrink.titolare.TitolareDao.autentica(TitolareDao.java:190)
    	it.unirc.twd.BuyeDrink.titolare.servlet.LoginTitolare.doPost(LoginTitolare.java:50)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    
    
    Note The full stack trace of the root cause is available in the server logs.
    
    
  • Re: Passaggio parametri tra servlet e jsp

    Repa235 ha scritto:


    java.lang.NullPointerException
    it.unirc.twd.BuyeDrink.titolare.TitolareDao.autentica(TitolareDao.java:190)
    In TitolareDao, riga 190 viene fatto l'accesso ad un metodo/campo su un reference null. Cosa ci sia in TitolareDao lo sai solo tu, verifica bene il motivo del null.
  • Re: Passaggio parametri tra servlet e jsp

    Alla riga 190 c'è il metodo che ho inserito nella servlet t.autentica(tit)
    
    
    
    	public Titolare autentica(Titolare titolare) {
    		String query = "SELECT * FROM TITOLARE WHERE E_MAIL =? AND PASSWORD=?";
    		Titolare res = null;
    		PreparedStatement ps;
    		Connection conn=DBmanager.startConnection();
    		try {
    			ps = conn.prepareStatement(query);
    			ps.setString(1, titolare.getEmail());
    			ps.setString(2, titolare.getPassword());
    			ResultSet rs = ps.executeQuery();
    			if(rs.next()){
    				res=recordToTitolare(rs);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		DBmanager.closeConnection();
    		return res;
    	}
    
    
    la riga 190 contiene ps = conn.prepareStatement(query);
  • Re: Passaggio parametri tra servlet e jsp

    Repa235 ha scritto:


    la riga 190 contiene ps = conn.prepareStatement(query);
    Qui l'unica cosa che può causare un NPE è che conn sia null. Ripeto: verifica, lo puoi fare solo tu che hai visione completa sul tuo codice.
  • Re: Passaggio parametri tra servlet e jsp

    Perfetto , sono riuscito a creare una servlet per il login , adesso vorrei capire come poter prelevare i dati di questo utente che accede tramite email e password e trasferirli in una jsp profilo che mi fa vedere tutti i suoi dati salvati nel database .
  • Re: Passaggio parametri tra servlet e jsp

    Repa235 ha scritto:


    Perfetto , sono riuscito a creare una servlet per il login , adesso vorrei capire come poter prelevare i dati di questo utente che accede tramite email e password e trasferirli in una jsp profilo che mi fa vedere tutti i suoi dati salvati nel database .
    Imposti dei dati (magari un oggetto es. Utente) come "attributi" della request (HttpServletRequest) e poi fai un "forward" ad una JSP. La JSP potrà estrarre quei attributi.
Devi accedere o registrarti per scrivere nel forum
11 risposte