使用servlet提交表单时图像无法检索

时间:2013-04-05 07:18:15

标签: java jsp tomcat servlets

我的sql中有一个图像,我想在网页中检索它 所以我开发了一个servlet。现在,当我点击提交按钮然后它调用servlet但是图像没有显示但是在浏览器中如果我正在编写localhost:8080 / y / testimageServlet则会显示图像。

imagetestServlet.java

import java.sql.*;
import DB.DataBaseConnection;

import java.io.IOException;
import java.io.InputStream;

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;

/**
 * Servlet implementation class imagetestServlet
 */
@WebServlet("/imagetestServlet")
public class imagetestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public imagetestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
              throws IOException,ServletException {

                 Blob image = null;
                  Connection con = null;
                  Statement stmt = null;
                  ResultSet rs = null;
                  DataBaseConnection db= new DataBaseConnection();
                  ServletOutputStream out = response.getOutputStream();
                  try {
                  Class.forName("com.mysql.jdbc.Driver");
                  con=db.connet();
                  stmt = con.createStatement();
                  rs = stmt.executeQuery("select img from one where  id = '4'");
                  if (rs.next()) {
                  image = rs.getBlob(1);
                  } else {
                  response.setContentType("text/html");

                  out.println("<font color='red'>image not found for given id</font>");

                  return;
                  }
                  response.setContentType("image/gif");
             InputStream in = image.getBinaryStream();
              int length = (int) image.length();
              int bufferSize = 1024;
              byte[] buffer = new byte[bufferSize];
              while ((length = in.read(buffer)) != -1) {
              out.write(buffer, 0, length);
              }
              in.close();
              out.flush();

            } catch (Exception e) {
              response.setContentType("text/html");
              out.println("<html><head><title>Unable To Display image</title></head>");
              out.println("<body><h4><font color='red'>Image Display Error=" + e.getMessage() +
               "</font></h4></body></html>");
              return;
              } 
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

}

登录

<form id="f1" name="f1" action="imagetest" method="post" onsubmit="return ccheck()">

            <img  src="header.png"><br><br><br><br><br>
    <table >
        <tr>
            <td>
                <table class="table">
                    <tr>
                        <td>
                            <table class="table">
                                <tr>
                                    <td>
                                        <div class="content"><div class="signin-header"><h3>Welcome to DiaEmr</h3></div></div>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div class="content">
                                        <div class="signin-box">
                                        <p class="one">
                                                Welcome to all at the <b>"Workshop on Ileal Interposition".</b><br>

                                                <b>Brazil</b> to inaugurate & launch this very important Data Registry<br>
                                                Key features of the solution-<br>
                                        </div>  
                                        </div>
                                    </td>
                                </tr>
                            </table>
                        </td>
                        <td>image</td>
                        <td>
                            <table class="table" >
                                <tr>
                                    <td>
                                        <div class="content">
                                        <div class="signin-header">
                                        <h3>Portal Login</h3>
                                        </div>
                                        </div>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div class="content">
                                            <div align="center" class="signin-box">
                                                <table class="table">
                                                    <tr>
                                                        <td><b>User ID</b></td>
                                                        <td><input name="uid" type="text" /></td>
                                                    </tr>
                                                    <tr >
                                                        <td><b>Password</b></td>
                                                        <td><input name="cpass" type="password" /></td>
                                                    </tr>
                                                    <tr >
                                                        <td><input type="submit" 
                                                                class="button button-submit" value="Submit" /></td>
                                                        <td><input type="reset" class="button button-submit"
                                                                value="Reset" /></td>
<tr>New User<a href ="UserRegistration.jsp">Register</a></tr><br>
                                                        </tr>


                                                    </table>
                                                </div>
                                            </div>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr>
            </table>
        </td>
        </tr>
</table>

<div class="footer-bar">
    <img align="left" src="footer.png">
</div>
</form>

1 个答案:

答案 0 :(得分:1)

您的表单会发送post个请求,

<form id="f1" name="f1" action="imagetest" method="post" onsubmit="return ccheck()">

但您只在servlet中定义了一个doGet方法。如果您在浏览器中导航(GET),则会导致页面正常工作,但在提交表单(POST)时则不会。

您需要更改表单才能使用get或在doPost方法中实施代码