java编程实例.docx

上传人:b****3 文档编号:26783109 上传时间:2023-06-22 格式:DOCX 页数:65 大小:1.92MB
下载 相关 举报
java编程实例.docx_第1页
第1页 / 共65页
java编程实例.docx_第2页
第2页 / 共65页
java编程实例.docx_第3页
第3页 / 共65页
java编程实例.docx_第4页
第4页 / 共65页
java编程实例.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

java编程实例.docx

《java编程实例.docx》由会员分享,可在线阅读,更多相关《java编程实例.docx(65页珍藏版)》请在冰豆网上搜索。

java编程实例.docx

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),

该页面包含一行代码(checkCode是一个请求地址)

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时,在执行语句时向服务器发送了checkcode请求

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.CheckcodeServlet

9.web.CheckcodeServlet

10.

11.

12.

13.CheckcodeServlet

14./checkcode

15.

16.

17.

隐藏

test.html代码如下:

1.

2.

3.

4.        content="text/html;charset=UTF-8">

5.Inserttitlehere

6.

7.

30px;">

8.    hello

9.    

10.

11.

隐藏

访问http:

//localhost:

8080/web07/test.html

每次刷新会生成一个新的随机数

增加更换验证码功能

修改test.html

访问http:

//localhost:

8080/web07/test.html

1.4扩展

为用户注册页面加入验证码。

1.拷贝day06的session验证案例

2.修改regiest.jsp

添加验证码

1.<%@pagepageEncoding="utf-8"

2.contentType="text/html;charset=utf-8"%>

3.

4.    

5.        regist

6.        

7.        

8.    

9.    

10.        

11.            

12.                    

13.                        

14.                            

15.                                2009/11/20

16.                                

17.                            

18.                        

19.                        

20.                            

21.                                main

22.                            

23.                        

24.                        

25.                        

26.                    

27.                

28.                    

29.                    

30.                    

31.                        注册

32.                    

33.

34.    

35.        class="form_table">

36.        

37.            

38.                用户名:

39.            

40.            

41.                

42.                name="username"/>

43.                <%

44.                    Stringmsg=

45.                    (String)request.getAttribute("regist_error");

46.                %>

47.                

red;font-style:

italic;">

48.                    <%=(msg==null?

"":

msg)%>

49.                

50.            

51.        

52.        

53.            

54.                真实姓名:

55.            

56.            

57.                

58.            

59.        

60.        

61.            

62.                密码:

63.            

64.            

65.                

66.            

67.        

68.        

69.            

70.                性别:

71.            

72.            

73.                男

74.                

75.                    name="gendar"value="m"checked="checked"/>

76.                女

77.                

78.                    name="gendar"value="f"/>

79.            

80.        

81.        

82.        

83.            

84.                验证码:

85.                

86.                

;"

87.                onclick="document.getElementById('img1').src

88.                        ='checkcode?

'+Math.random();">换一张

89.            

90.            

91.                

92.                name="number"/>

93.            

94.        

95.    

96.    

97.        

98.        value="确认"/>

99.    

100.

101.                

102.            

103.            

104.                

105.                ABC@

106.                

107.            

108.        

109.    

110.

隐藏

3.拷贝CheckedServlet到项目下

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.importjavax.servlet.http.HttpSession;

15.

16.importcom.sun.image.codec.jpeg.JPEGCodec;

17.importcom.sun.image.codec.jpeg.JPEGImageEncoder;

18.

19.publicclassCheckcodeServletextendsHttpServlet{

20.

21.    publicvoidservice(HttpServletRequestrequest,

22.            HttpServletResponseresponse)

23.            throwsServletException,IOException{

24.        System.out.println("service...");

25.        //text/html;

26.        //text/xml;

27.        response.setContentType("image/jpeg");

28.        //BufferedImage:

内存映象对象

29.        BufferedImageimage=

30.            newBufferedImage(60,20,

31.                BufferedImage.TYPE_INT_RGB);

32.        Randomr=newRandom();

33.        //获得画笔

34.        Graphicsg=image.getGraphics();

35.        g.setColor(

36.                newColor(r.nextInt(255),

37.                        r.nextInt(255),r.nextInt(255)));

38.        g.fillRect(0,0,60,20);

39.        g.setColor(newColor(0,0,0));

40.        Stringnumber=String.

41.        valueOf(r.nextInt(99999));

42.        g.drawString(number,5,15);

43.        

44.        //获得字节输出流,因为要输出的是图像压缩之后

45.        //的字节数组,所以,不能用PrintWriter。

46.        OutputStreamos=response.getOutputStream();

47.        //将图片压缩,输出。

48.        JPEGImageEncod

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1