0
次のコードでサーブレットを使用して図形を描画しようとしていますが、コードワードは、JSPとサーブレットを別々に使用する場合には問題ありませんが、コード全体をサーブレットに入れても機能しません。次のコードでサーブレットを使用して図形を描画しようとしていますが、画像が表示されていません。
これは私のコードです:
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
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;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class CreateShapes
*/
@WebServlet("/CreateShapes")
public class CreateShapes extends HttpServlet {
private static final long serialVersionUID = 1L;
HttpSession sessionvar;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at:
// ").append(request.getContextPath());
// response.setContentType("text/html");
ServletOutputStream sos = response.getOutputStream();
sos.println("<html><body>");
sos.println("<form method='get' action='CreateShapes'>");
sos.println(
"<input type='submit' name='btn' value='Circle'><br><input type='submit' name='btn' value='Square'><br><input type='submit' name='btn' value='Rectangle'>");
sos.println("</form></body></html>");
String shapeselected = request.getParameter("btn");
if (shapeselected.length() > 0) {
sessionvar = request.getSession();
sessionvar.setAttribute("selectedshape", shapeselected);
sos.flush();
}
// sos = response.getOutputStream();
response.setContentType("image/jpeg");
sos.println("session value\t" + sessionvar.getAttribute("selectedshape").toString());
BufferedImage bi = new BufferedImage(500, 500, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
// g.setBackground(Color.WHITE);
// g.clearRect(0, 0, 300, 300);
if (sessionvar.getAttribute("selectedshape").toString().equals("Circle")) {
g.setColor(Color.RED);
g.fillOval(30, 30, 150, 150);
g.dispose();
ImageIO.write(bi, "jpeg", sos);
} else if (sessionvar.getAttribute("selectedshape").equals("Square")) {
g.setColor(Color.GREEN);
g.fillRect(80, 80, 100, 100);
ImageIO.write(bi, "jpeg", sos);
} else {
g.setColor(Color.BLUE);
g.fillRect(80, 80, 200, 150);
ImageIO.write(bi, "jpeg", sos);
}
sos.flush();
// sos.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
はあなたが達成したいのか、理解するために、動作するコードを表示します。 **とにかく**、あなたは一つのサーブレットメソッドからHTML **と**イメージの両方を出力することはできません(実際、Michael Akermanの答えはかなり正確です、元の質問のあいまいさを考えると、なぜ誰かがそれをdownvotedしたのか分かりません)。 –