Ho preparato un'applicazione che richiede un codice in una pagina html, con un bottone lancia una servlet parametrizzata che si collega ad un database mysql, qui tramite una ricerca preleva un campo con il quale compone un url ed esegue una ricerca di immagine in una cartella a livello di WebContent e restituisce un'immagine.
Fin qui tutto ok. Il problema nasce fal fatto che non riesco ad inviare nient'altro alla pagina web dopo l'immagine (che deve restare visibile) e quindi non ho un bottone per tornare indietro o qualunque altra possibilità di rinvio ad una pagine html o jsp.... come posso aggiungere all'immagine un testo cliccabile, un bottone o qualunque altra cosa che mi permetta di proseguire nell'applicazione? Grazie infinite a tutti per un suggerimento.
ecco i due files:
---------------------l'html------------------------------
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Provo Tutto5</title>
</head>
<body>
<form method="get" action="
http://localhost:8080/ProveDiServlet/Tutto5?userFiel">
scegli il compositore <input type="text" name="userField"> <br>
<input type="submit" value="Trova il file">
</form>
</body>
</html>
----------------------------- e la servlet----------------------------
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
@WebServlet("/Tutto5")
public class Tutto5 extends HttpServlet {
private static final long serialVersionUID = 1L;
public Tutto5() { super(); }
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try{
String userName = request.getParameter("userField");
ArrayList<String> array = select(userName);
for(int i = 0; i<array.size(); i++){
String scelto =array.get(i) ;
response.setContentType("image/jpeg"); // see different MIME type
ServletOutputStream sos = response.getOutputStream();// for binary stream of image files
if ( scelto !=null )
{ String relativeWebPath = "/Images";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
File f = new File(absoluteDiskPath, scelto + ".jpg");
DataInputStream dis = new DataInputStream(new FileInputStream(f));
byte[] barray = new byte[(int) f.length()];
try { dis.readFully(barray); }
catch (Exception e)
{ barray = null; }
finally
{ dis.close( ); }
sos.write(barray); // send the byte array to client
sos.close();
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally{};
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
public static ArrayList<String> select(String userName) throws Exception{
Connection con = conn();
PreparedStatement statement = con.prepareStatement("SELECT * FROM musica.anagra WHERE key_anagra = " + userName);
ResultSet result = statement.executeQuery();
ArrayList<String> array = new ArrayList<String>();
while (result.next()){
array.add(result.getString("anagra_cognome"));
}
return array;
}
public static Connection conn()throws ClassNotFoundException, SQLException{
try{
// String driver="" ;
// String driver = "{MySQL ODBC 5.6 Driver}";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "administrator";
Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager.getConnection(url, username, password);
// System.out.println("Connected.");
return connect;
}
finally {}
}
}