0

I am trying to display a jsp page which contains user image and user information.

Here is the JSP code:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@page import="utils.MyUtils"%>
<%@ page import="java.sql.*" %> 
<%@ page import="java.io.*" %> 
<%

    Connection con = MyUtils.getStoredConnection(request);

    String strSQL = "SELECT IMAGE "
            + "FROM CUSTOMER "
            + "WHERE CUST_ID= 111";
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(strSQL);
    rs.next();


    out.clear();
    OutputStream os = response.getOutputStream();
    String hello = "Hello";
    os.write(hello.getBytes());
    response.setHeader("expires", "0");
    response.setContentType("image/jpeg");

    os.write(rs.getBytes("IMAGE"));
    out.flush();
%> 

Here is my servlet:

package servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import beans.UserAccount;
import utils.MyUtils;

@WebServlet(urlPatterns = { "/userInfo" })
public class UserInfoServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public UserInfoServlet() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession();

        // Check User has logged on
        UserAccount loginedUser = MyUtils.getLoginedUser(session);

        // Not logged in
        if (loginedUser == null) {
            // Redirect to login page.
            response.sendRedirect(request.getContextPath() + "/login");
            return;
        }
        // Store info to the request attribute before forwarding.
        request.setAttribute("user", loginedUser);

        // If the user has logged in, then forward to the page
        // /WEB-INF/views/userInfoView.jsp
        RequestDispatcher dispatcher //
                = this.getServletContext().getRequestDispatcher("/WEB-INF/views/userInfoView.jsp");
        dispatcher.forward(request, response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }

}

But when i run my code the page only contains image and it doesn't show any information (Here i tried to print "Hello" in the page as information). What should i do? The images are stored in my PC.

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
Leolime
  • 197
  • 1
  • 1
  • 11
  • You need to properly represent the user information as HTML, right now you are telling the browser that you are sending it an image, and you end up sending it the bytes of a String... – QuakeCore Dec 17 '17 at 13:47
  • @QuakeCore Can you give me any example how should i do it correctly? thanks – Leolime Dec 17 '17 at 14:09
  • Check this answer: https://stackoverflow.com/a/2341322/2281189 – QuakeCore Dec 17 '17 at 16:14

0 Answers0