使用EL
(Scriplets 早就死了):
<c:set var="imgURL" value="get-it?x=${param.x}" />
<img src="${empty param.x ? '/images/x.gif' : imgURL}" />
或者您也可以在不设置其他属性的情况下执行此操作:
<img src="${empty param.x ? '/images/x.gif' : 'get-it?x='}${param.x}" />
如果您只有一个if-else
. 正如@Sotirios 的评论中所述,如果您有多个条件可供选择 -if-else if-else
阶梯,那么您将需要使用<c:choose>
标签。
注意,您需要在lib
文件夹中添加 JSTL 库,并包含核心taglib。
说了这么多,您还应该考虑在 Servlet 本身中准备 Image URI,转发到 JSP。
假设您有一个 HTML 表单:
<form action="/servlet1" method="POST">
<input type = "text" name="x" />
</form>
在映射的 Servlet 中/servlet1
,您应该获取参数,并基于该参数x
创建图像 URL 。然后将该图像 url 放入请求属性中:
String x = request.getParameter("x");
if (x == null) {
// Set Default image in request attribute
request.setAttribute("imageURL", "images/x.gif");
} else {
// Else create the image, and set it in request attribute
resp.setContentType("image/gif");
BufferedImage bi = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
GetBI fetchBI = new GetBI();
bi = fetchBI.get_bi(x);
ImageIO.write(bi,"gif",resp.getOutputStream());
request.setAttribute("imageURL", "get-it?x="+x);
}
// Forward the request to the required JSP
然后在 JSP 页面中,您可以*imageURL*
使用EL
:
<img src="${imageURL}" />
看,我只需要一个 Servlet。看看,如果我错过了什么,请发表评论。我认为您想要做的事情可以简单地使用单个 Servlet 来完成。
也可以看看: