圖片顯示不了呀
login.jsp里的代碼:
<img class="tpyzm" src="<%=request.getContextPath()%>/ImageServlet" alt="驗證碼" />?
? ? ? ? ? ??
? ? ? ? ? ? <a class="can" href="javascript:reloadCode();">刷新</a>?
然后ImageServlet.java里的代碼
/**?
?* Project Name:zjweb?
?* File Name:ImageServlet.java?
?* Package Name:com.zjweb.action?
?* Date:2016年10月31日上午11:09:33?
?*/
??
package com.zjweb.action;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**?
?* ClassName: ImageServlet <br/>?
?* Function: TODO ADD FUNCTION. <br/>?
?* Reason: TODO ADD REASON(可選). <br/>?
?* date: 2016年10月31日 上午11:09:33 <br/>?
?*?
?* @author haoshasha
?* @version ?
?* @since JDK 1.8
?*/
public class ImageServlet extends HttpServlet?
{
/**
*?
* doGet:(用來生成圖片驗證碼的). <br/>?
* TODO(這里描述這個方法適用條件 – 可選).<br/>?
* @author haoshasha
* @param request
* @param response?
* @throws IOException?
* @since JDK 1.8
*/
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
{
BufferedImage bi = new BufferedImage(68,22,BufferedImage.TYPE_INT_RGB );
Graphics g = bi.getGraphics();
Color c = new Color(200, 150, 255);
g.setColor(c);
g.fillRect(0, 0, 68, 22);
char[] ch = "QWERTYUIOPASDFGHJKLZXCVBNM1234567890".toCharArray();
/**
* 隨機獲取四個字符
*/
Random r = new Random();
int len = ch.length,index;
StringBuffer sb = new StringBuffer();
for(int i = 0;i<4;i++)
{
index = r.nextInt(len);
g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
g.drawString(ch[index]+"", (i*15)+3, 18);
sb.append(ch[index]);
}
request.getSession().setAttribute("piccode", sb.toString());
ImageIO.write(bi, "JPG", response.getOutputStream());
}
}
web.xml里的代碼
<servlet>
? ? <servlet-name>ImageServlet</servlet-name>
? ? <servlet-class>com.zjweb.action.ImageServlet </servlet-class>
? ?</servlet>
? ?<!-- 映射關系訪問到servlet類 -->
? <servlet-mapping>
? <servlet-name>ImageServlet</servlet-name>
? <url-pattern>/servlet/ImageServlet</url-pattern>
? </servlet-mapping> ?
2016-11-29
你看看你這里,這兩個路徑沒有對應上,即映射錯誤。
<img class="tpyzm" src="<%=request.getContextPath()%>/ImageServlet" alt="驗證碼" />?
? <servlet-mapping>
? ? ? <servlet-name>ImageServlet</servlet-name>
? ? ? <url-pattern>/servlet/ImageServlet</url-pattern>
? </servlet-mapping>
----------------------------------------------------------------------
解釋說明:
request.getContextPath()是獲得根路徑即?http://localhost:8080/項目名
應該這樣修改:
方法1:
src="http://localhost:8080/項目名/ImageServlet"
<servlet-mapping>
? ? ? <servlet-name>ImageServlet</servlet-name>
? ? ? <url-pattern>/ImageServlet</url-pattern>
? </servlet-mapping>
方法2:
src="http://localhost:8080/項目名/servlet/ImageServlet"
<servlet-mapping>
? ? ? <servlet-name>ImageServlet</servlet-name>
? ? ? <url-pattern>/servlet/ImageServlet</url-pattern>
? </servlet-mapping>
2016-11-07
我的是mvc框架的 ? ? 就是和這個是不是沖突的呀
2016-11-07
建議直接新建一個Servlet,在class中繼承httpservlet這樣可能會有問題。
2016-10-31
<img class="tpyzm" src="<%=request.getContextPath()%>/ImageServlet" alt="驗證碼" />?
改成<img class="tpyzm" src="<%=request.getContextPath()%>/servlet/ImageServlet" alt="驗證碼" />?