1

誰かのページに貼り付けて画像やテキストを取得するためのコードを提供する広告ページを作成しています。

データベースから画像またはテキストを表示するだけのサーブレットを取得し、それを誰かのページに含めたいと考えています。

試してみ <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();
            }
        }
    }
4

0 に答える 0