部署好应用程序后,如果把script标签注释掉,取消img标签的注释,servlet程序可以运行;
如果把img标签注释掉,取消script标签的注释,servlet程序却不可以运行;不知道是什么原因?
count.html<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<!--<img src="http://localhost:8080/javaweb/servlet/CountServlet?id=3&ratio=4">
-->
<script type="text/javascript" src="http://localhost:8080/javaweb/servlet/CountServlet?id=3&ratio=4">
</script>
CountServlet.javaimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.util.Properties;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;public class CountServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,IOException
{
response.setContentType("image/jpeg");
//设置浏览器不要缓存此图片
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0); ServletOutputStream sos = response.getOutputStream(); BufferedImage image =
new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
/*g.setColor(Color.BLACK);
g.fillRect(0, 0, width, height);*/
g.setColor(Color.WHITE);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));
String value = getAccessCount(request);
int len = value.length();
//最大访问次数不能超过9999999
if(len > 7)
{
value = "9999999";
}
else
{
/*改为StringBuffer类的append方法来完成下面的逻辑,程序的
运行效率将更高,建议读者自己修改一下*/
StringBuffer tmp=new StringBuffer(7);
for(int i=0;i<7-len;i++)
{
tmp = tmp.append("0");
}
value =tmp.append(value).toString();
}
g.drawString(value,0,18);
//结束图像的绘制过程,完成图像
g.dispose(); double ratio=1;
try
{
ratio=Double.parseDouble(request.getParameter("ratio"));
}
catch (NumberFormatException e)
{
System.out.println(e);
}
AffineTransform atf=AffineTransform.getScaleInstance(ratio,ratio);
AffineTransformOp atf_op=new AffineTransformOp(atf,AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
image=atf_op.filter(image,null);
ImageIO.write(image, "JPEG", sos);
sos.close();
}
private String getAccessCount(HttpServletRequest request)
{
//得到引用页面的URL地址,并以此作为访问次数的检索关键字
String pageKey = request.getHeader("referer");
if(pageKey == null)
{
return "0";
} Properties settings = new Properties();
//count.txt等内部文件最好是保存在WEB-INF目录中
String countFilePath = getServletContext().getRealPath("/count.txt");
try
{
FileInputStream fis=new FileInputStream(countFilePath);
settings.load(fis);
fis.close();
}
catch(Exception e){} String count = "0";
try
{
count = settings.getProperty(pageKey);
if(count == null)
{
count = "0";
}
int c = Integer.parseInt(count) + 1;
count = new Integer(c).toString();
settings.setProperty(pageKey,count);
FileOutputStream fos=new FileOutputStream(countFilePath);
settings.store(fos,"the page is accessed:");
fos.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return count;
}
}
如果把img标签注释掉,取消script标签的注释,servlet程序却不可以运行;不知道是什么原因?
count.html<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
<!--<img src="http://localhost:8080/javaweb/servlet/CountServlet?id=3&ratio=4">
-->
<script type="text/javascript" src="http://localhost:8080/javaweb/servlet/CountServlet?id=3&ratio=4">
</script>
CountServlet.javaimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import java.util.Properties;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;public class CountServlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException,IOException
{
response.setContentType("image/jpeg");
//设置浏览器不要缓存此图片
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0); ServletOutputStream sos = response.getOutputStream(); BufferedImage image =
new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
/*g.setColor(Color.BLACK);
g.fillRect(0, 0, width, height);*/
g.setColor(Color.WHITE);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));
String value = getAccessCount(request);
int len = value.length();
//最大访问次数不能超过9999999
if(len > 7)
{
value = "9999999";
}
else
{
/*改为StringBuffer类的append方法来完成下面的逻辑,程序的
运行效率将更高,建议读者自己修改一下*/
StringBuffer tmp=new StringBuffer(7);
for(int i=0;i<7-len;i++)
{
tmp = tmp.append("0");
}
value =tmp.append(value).toString();
}
g.drawString(value,0,18);
//结束图像的绘制过程,完成图像
g.dispose(); double ratio=1;
try
{
ratio=Double.parseDouble(request.getParameter("ratio"));
}
catch (NumberFormatException e)
{
System.out.println(e);
}
AffineTransform atf=AffineTransform.getScaleInstance(ratio,ratio);
AffineTransformOp atf_op=new AffineTransformOp(atf,AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
image=atf_op.filter(image,null);
ImageIO.write(image, "JPEG", sos);
sos.close();
}
private String getAccessCount(HttpServletRequest request)
{
//得到引用页面的URL地址,并以此作为访问次数的检索关键字
String pageKey = request.getHeader("referer");
if(pageKey == null)
{
return "0";
} Properties settings = new Properties();
//count.txt等内部文件最好是保存在WEB-INF目录中
String countFilePath = getServletContext().getRealPath("/count.txt");
try
{
FileInputStream fis=new FileInputStream(countFilePath);
settings.load(fis);
fis.close();
}
catch(Exception e){} String count = "0";
try
{
count = settings.getProperty(pageKey);
if(count == null)
{
count = "0";
}
int c = Integer.parseInt(count) + 1;
count = new Integer(c).toString();
settings.setProperty(pageKey,count);
FileOutputStream fos=new FileOutputStream(countFilePath);
settings.store(fos,"the page is accessed:");
fos.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return count;
}
}
解决方案 »
- 请struts2高手进一下。整了2天了,注解加载出现有时加载有时没有加载的问题
- JSP 怎么实现一个用户上传文件,只有指定的用户才可以下载这个文件
- jsp 访问 access 问题
- 怎样用java、jsp提取单选按钮的value的int值?(request,好像不行,因为为string型的)
- 当前Java软件开发中几种认识误区
- 这问题是什么意思?我应该怎么解决 ?(关于日期)
- 已经将一个bean设置为session,那么在其他页面还需要申明吗?
- 提示出错:java.sql.SQLException: Invalid authorization specification: Access denied for user: '[email protected]' (Usi
- 不用数据库怎样做流言版,谢谢给出个方案 (java or jsp)
- 求助 --spring注入问题
- 请教,在JAVA中如何判断数字,字母和汉字??????
- jsp中不能显示数据库的返回结果
</script> type="text/javascript" 请求应答的是text/javascript 不是图片