誰かのページに貼り付けて画像やテキストを取得するためのコードを提供する広告ページを作成しています。
データベースから画像またはテキストを表示するだけのサーブレットを取得し、それを誰かのページに含めたいと考えています。
試してみ
<script src="http://mylocalhost/myservlet?someparameters=x"></script>
ましたが、うまくいきません。
シンプルなHTMLページを実行
<img src="http://mylocalhost/myservlet?someparameters=x">
すると、画像が表示されます(パラメーターを指定してサーブレットが解決する必要があり、画像またはテキストである必要があります)。
私のサーブレット:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
String wielkosc = request.getParameter("wielkosc");
String typ = request.getParameter("typ");
ArrayList<Integer> lista = new ArrayList<Integer>();
//WYŚWIETLANIE OBRAZKÓW -------------------------------------------------------------------------
if (typ.equals("1")) {
PreparedStatement ps = con.prepareStatement("SELECT Id FROM Reklamy WHERE Typ=? AND Size=?");
if (wielkosc.equals("0")) {
ps.setInt(1, 1);
ps.setInt(2, 0);
} else if (wielkosc.equals("1")) {
ps.setInt(1, 1);
ps.setInt(2, 1);
}
ResultSet rs = ps.executeQuery();
while (rs.next()) {
lista.add(rs.getInt("Id"));
}
Random r = new Random();
PreparedStatement ps2 = con.prepareStatement("SELECT Content FROM Reklamy WHERE Id=?");
int los = r.nextInt(lista.size());
ps2.setInt(1, lista.get(los));
rs = ps2.executeQuery();
if (rs.next()) {
Blob blob = rs.getBlob(1);
InputStream stream = blob.getBinaryStream();
int len = (int) blob.length();
System.out.println(len);
byte[] rb = new byte[len];
int read = stream.read(rb, 0, len);
response.setContentType("image/jpg");
response.getOutputStream().write(rb, 0, len);
response.getOutputStream().flush();
}
// WYŚWIETLANIE TEKSTU -------------------------------------------------------------------------
} else if (typ.equals("0")) {
PreparedStatement ps = con.prepareStatement("SELECT Id FROM Reklamy WHERE Typ=? AND Size=?");
if (wielkosc.equals("0")) {
ps.setInt(1, 0);
ps.setInt(2, 0);
} else if (wielkosc.equals("1")) {
ps.setInt(1, 0);
ps.setInt(2, 1);
}
ResultSet rs = ps.executeQuery();
while (rs.next()) {
lista.add(rs.getInt("Id"));
}
System.out.println(lista.size());
Random r = new Random();
PreparedStatement ps2 = con.prepareStatement("SELECT Content FROM Reklamy WHERE Id=?");
int los = r.nextInt(lista.size());
ps2.setInt(1, lista.get(los));
rs = ps2.executeQuery();
if (rs.next()) {
Blob blob = rs.getBlob(1);
InputStream stream = blob.getBinaryStream();
int len = (int) blob.length();
System.out.println(len);
byte[] rb = new byte[len];
int read = stream.read(rb, 0, len);
response.setContentType("text/html;charset=UTF-8");
response.getOutputStream().write(rb, 0, len);
response.getOutputStream().flush();
}
}
}