現(xiàn)象說明:能刷新出字符,但是常會拋出異常,說是STRING定義有異常,對照老師所講的,沒有錯(cuò)。有時(shí)候在第一次刷新時(shí)出現(xiàn)。有時(shí)連續(xù)要刷新幾次才會出現(xiàn)
異常現(xiàn)象:
016-8-4 15:16:06 org.apache.catalina.core.StandardWrapperValve invoke
嚴(yán)重: Servlet.service() for servlet ValidataServlet threw exception
java.lang.StringIndexOutOfBoundsException: String index out of range: 54
at java.lang.String.substring(String.java:1935)
at ptms05.ValidataServlet.doPost(ValidataServlet.java:73)
at ptms05.ValidataServlet.doGet(ValidataServlet.java:32)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
2016-8-4 15:16:08 org.apache.catalina.core.StandardWrapperValve invoke
源代碼:
//response.setContentType("text/html");
//PrintWriter out = response.getWriter();
//創(chuàng)建圖像
int width=100;
int height=30;
BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//創(chuàng)建圖層
Graphics g=image.getGraphics();
//確立畫筆顏色
g.setColor(Color.BLACK);
//創(chuàng)建矩形
g.fillRect(0, 0, width, height);
//在大矩形中畫小矩形
g.setColor(Color.WHITE);
g.fillRect(1, 1, width-2, height-2);
//填充字符
String data="abcdefghijklmnuvwxyzABCDEFGHIJKLMNUVWXYZ1234567890";
//隨機(jī)獲取4個(gè)字符做為驗(yàn)證碼
Random random=new Random();
for (int i = 0; i < 4; i++) {
//從DATA的62個(gè)字符中隨機(jī)取的4個(gè)字符
int index=random.nextInt(62);
g.setColor(Color.RED);
g.setFont(new Font("宋體", Font.BOLD, 22));
String str=data.substring(index, index+1);
g.drawString(str, 25*i, 26);
}
//服務(wù)器響應(yīng)頁面的請求
response.setContentType("image/jpeg");
//輸出圖像到瀏覽器
ImageIO.write(image, "jpg", response.getOutputStream());
現(xiàn)象說明:能刷新出字符,但是常會拋出異常