java编程实例.docx
- 文档编号:26783109
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:65
- 大小:1.92MB
java编程实例.docx
《java编程实例.docx》由会员分享,可在线阅读,更多相关《java编程实例.docx(65页珍藏版)》请在冰豆网上搜索。
java编程实例
JavaSERVLET&JSPDay07
Top
1.验证码
2.购物车(提高题选做)
1验证码
1.1问题
通过Servlet生成一张图片返回给浏览器(图片是一张压缩为jpg格式的随机数图片)
1.2方案
小知识
如何写Java程序访问web应用?
Apache提供了一个工具类http-client.jar,封装了http协议,它提供一些接口及操作可以访问web应用。
可到Apache官方下载。
图示演示
验证码流程图
服务器部署某个应用,该应用添加了session验证,必须登录才能访问。
1)浏览器向login.jsp发送请求,请求获得登录页面
2)jsp会创建一个session对象
3)Jsp返回给浏览器一个登陆页面(html、js、css),
该页面包含一行代码
4)浏览器立即给服务器发请求checkCode,访问到CheckCodeServlet
5)CheckCodeServlet会生成一个随机数(验证数字),并绑定到Session对象上;
6)同时,CheckCodeServlet发送给浏览器一张图片(验证数字+图片)
此时,用户在浏览器上看到完全的登录页面:
表单
7)用户填写完表单后提交,访问LoginServlet
8)LoginServlet从Session对象中取到验证数字number1
9)LoginServlet将number1与用户提交请求中的验证数字number2比较,如果匹配,则继续正常的登录验证,不匹配则返回给浏览器信息“验证码不匹配”
案例演示
1)新建test.html
2)新建CheckCodeServlet
3)web.xml
4)部署项目
5)访问http:
//localhost:
8080/web07/test.html
服务器立即打印“servcie....”
说明浏览器访问页面test.html时,在执行
1.3实现
CheckcodeServlet代码如下:
1.packageweb;
2.
3.importjava.awt.Color;
4.importjava.awt.Graphics;
5.importjava.awt.image.BufferedImage;
6.importjava.io.IOException;
7.importjava.io.OutputStream;
8.importjava.util.Random;
9.
10.importjavax.servlet.ServletException;
11.importjavax.servlet.http.HttpServlet;
12.importjavax.servlet.http.HttpServletRequest;
13.importjavax.servlet.http.HttpServletResponse;
14.
15.importcom.sun.image.codec.jpeg.JPEGCodec;
16.importcom.sun.image.codec.jpeg.JPEGImageEncoder;
17.
18.publicclassCheckcodeServletextendsHttpServlet{
19.
20. publicvoidservice(HttpServletRequestrequest,
21. HttpServletResponseresponse)
22. throwsServletException,IOException{
23. System.out.println("service...");
24.
25. /*1设置服务器返回文件的格式为jpg格式的图片*/
26. //常见的还有:
text/html和text/xml
27. response.setContentType("image/jpeg");
28.
29. /*2画图*/
30. //BufferedImage:
内存映象对象
31. BufferedImageimage=
32. newBufferedImage(60,20,
33. BufferedImage.TYPE_INT_RGB);
34. Randomr=newRandom();
35. //获得画笔
36. Graphicsg=image.getGraphics();
37. //设置背景颜色
38. g.setColor(newColor(
39. r.nextInt(255),
40. r.nextInt(255),
41. r.nextInt(255)));
42. //填充背景颜色
43. g.fillRect(0,0,60,20);
44. //设置前景颜色
45. g.setColor(newColor(0,0,0));
46. //生成随机数
47. Stringnumber=String.valueOf(r.nextInt(99999));
48. //画到图片上
49. g.drawString(number,5,15);
50.
51. /*3压缩图片并输出*/
52. //获得字节输出流,因为要输出的是图像压缩之后
53. //的字节数组,所以,不能用PrintWriter。
54. OutputStreamos=response.getOutputStream();
55. //将图片压缩,输出
56. JPEGImageEncoderencoder=
57. JPEGCodec.createJPEGEncoder(os);
58. encoder.encode(image);
59. }
60.}
隐藏
web.xml代码如下:
1.
xmlversion="1.0"encoding="UTF-8"?
>
2. 3. xmlns=" 4. xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" 5. xsi: schemaLocation=" 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 隐藏 test.html代码如下: 1. 2.
3. 4. content="text/html;charset=UTF-8"> 5.
6.
7. 30px;"> 8. hello 9. 10. 11.