Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Struts 2在MySQL的JSP页面中查看图像_Java_Mysql_Image_Jsp_Struts2 - Fatal编程技术网

Java 使用Struts 2在MySQL的JSP页面中查看图像

Java 使用Struts 2在MySQL的JSP页面中查看图像,java,mysql,image,jsp,struts2,Java,Mysql,Image,Jsp,Struts2,我有一个按钮来获取图像并将其放入MySQL数据库。在此之后,我希望图像将显示在同一页。我是Struts2的新手,现在不知道该怎么办 这是我的类Registrazione.java: public String visualizzaimg() throws SQLException, IOException { Connessione(); // DB connection method PreparedStatement pstmt = con.prepareStateme

我有一个按钮来获取图像并将其放入MySQL数据库。在此之后,我希望图像将显示在同一页。我是Struts2的新手,现在不知道该怎么办

这是我的类
Registrazione.java

public String visualizzaimg() throws SQLException, IOException {
    Connessione();    // DB connection method
    PreparedStatement pstmt = con.prepareStatement("SELECT Immagine FROM Utenti WHERE Username = ?");
    pstmt.setString(1,username);
    ResultSet rs = pstmt.executeQuery();
    while(rs.next()){
    fin = rs.getBinaryStream("Immagine");
    byte[] b = new byte[fin.available()];
    fin.read(b);
    }
    return "success";
}
这是我的
struts.xml
文件:

<action name="visualizzaimg" class="Model.Registrazione" method="visualizzaimg">
<result name="success" type="stream">
        <param name="contentType">image/jpeg</param>
        <param name="inputName">fin</param>
        <param name="contentDisposition">attachment;filename=${fileName}</param> /* Not sure if i've understood what i have to put here.. */
        <param name="bufferSize">1024</param>
    </result>
</action>

关键是将url写入
标记。url应该映射一个将流数据传输到响应的操作

现在配置结果

private InputStream inputStream;

public ImputStream getInputStream(){
  return inputStream;
}

public String visualizzaimg() throws SQLException, IOException {
    Connessione();    // DB connection method
    PreparedStatement pstmt = con.prepareStatement("SELECT Immagine FROM Utenti WHERE Username = ?");
    pstmt.setString(1,username);
    ResultSet rs = pstmt.executeQuery();
    if(rs.next()){
      inputStream = rs.getBinaryStream(1);
    }
    return "success";
}

图像/jpeg

它确实有效!!但你能解释一下吗?为什么要将1放入getBinaryStream<代码>输入流=rs.getBinaryStream(1)因为方法使用类型为
int
的列索引参数。。。。您可以在页面上找到参数a从1开始计数。好的,谢谢。是否可以在同一个jsp页面中查看图像?因为当我点击“VisualizeZa”按钮时,它会打开另一个名为“VisualizeZaimg.action”的操作,该操作带有图像,它应该是另一个在结果中返回JSP的操作。
<img src="<s:url action='visualizzaimg'/>">  
private InputStream inputStream;

public ImputStream getInputStream(){
  return inputStream;
}

public String visualizzaimg() throws SQLException, IOException {
    Connessione();    // DB connection method
    PreparedStatement pstmt = con.prepareStatement("SELECT Immagine FROM Utenti WHERE Username = ?");
    pstmt.setString(1,username);
    ResultSet rs = pstmt.executeQuery();
    if(rs.next()){
      inputStream = rs.getBinaryStream(1);
    }
    return "success";
}
<result name="success" type="stream">
   <param name="contentType">image/jpeg</param>
</result>