一.配置servlet
在WebContent(以前的eclipse版本是WebRoot)文件夹下,有一个web.xml
修改web.xml ,加入以下代码
<servlet>
<servlet-name>helloservlet</servlet-name>
<servlet-class>my.helloservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloservlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
格式就是这样的:
<servlet>
<servlet-name>Servlet的名称(自己起的,不要重复)</servlet-name>
<servlet-class>Servlet的类路径(xx.xx.xx.xxservlet)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet的名称(与上面的一样)</servlet-name>
<url-pattern>/url名字(自己起的,不要重复,注意/,不能丢)</url-pattern>
</servlet-mapping>
这个配置是为了把输入的/url和创建的servlet绑定到一起,意思是我们访问 /url名字 实际上就是在访问这个helloservlet类
PS:MyEclipse(收费的)会在servlet创建好时自动帮你在web.xml中配置好,但是Eclipse并不会,所以需要我们自己配置
二.实现输入QQ号,查询头像的功能
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.text.*" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form method="get" action="download">
输入QQ号
<input type="text" name="qq"/><br/>
<input type="submit" value="查询">
</form>
</body>
</html>
这里action因为之前配置了web.xml,所以download就代表指向helloservlet.java这个文件
这里也可以写成action=helloservlet,是一样的
helloservlet.java ——doGet方法:
在D盘image文件夹下存放头像图片,通过获取参数,然后找到本地图片文件,循环输出给浏览器
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String qq=request.getParameter("qq");//取得参数
String filename=qq+".png";
//以文件格式下载
/*response.setHeader("Content-Disposition", "attachment;filename="+filename);
response.setContentType("application/octet-stream");*/
//图片png形式下载
response.setContentType("image/png");
response.setCharacterEncoding("UTF-8");
File DirFile=new File("d:/image");
File imageFile=new File(DirFile,filename);
FileInputStream filestream=new FileInputStream(imageFile);
OutputStream streamOut=response.getOutputStream();
byte[] buf=new byte[4096];
while(true) //循环输出
{
int n=filestream.read(buf);
if(n<=0)
break;
streamOut.write(buf,0,n);
streamOut.flush();
}
filestream.close();
streamOut.close();
}
效果如图所示:
输入111,点击查询,返回一个png图片