【摘要】:登录程序中使用验证码是为了进一步防止黑客侵入系统。“login.jsp”中,语句用来显示验证码的图像,图像文件是“image.jsp”。“image.jsp”程序用语句“response.setContentType;”告诉客户端要接收的文档MIME类型为“image/jpeg”,然后在服务器的缓存中生成一幅有4个字符验证码的图像并发送到客户端。在浏览器地址栏中输入http://192.168.2.1:8080/E40/login.jsp进入登录页面,输入正确的验证码后单击“登录”按钮后显示的页面如图4-8所示。图4-8 验证码的生成login.jsp:image.jsp:checkLogin.jsp:
登录程序中使用验证码是为了进一步防止黑客侵入系统。
与resquest对象相对应的对象是response。可以用response对象对用户的请求做出动态响应,向客户端发送数据。例如,当用户请求访问一个JSP页面时,该页面用page指令设置页面的contentType属性的值是“text/html”,则JSP引擎将按照这种属性值响应用户的请求将页面的静态部分发送给客户端。如果要动态地改变contentType属性的值就要使用re-sponse对象中的setContentType(Strings)方法。
JSP使用session(会话)对象来唯一标识一个客户浏览器的请求,也就是说,如果有8个客户浏览器访问同一个网站,该网站就会生成8个不同标识的session对象来保存客户的活动信息,一直到客户离开该网站。可以使用session对象来存储用户信息,即便该用户由一个页面跳转到另一个页面,该session对象内的信息也仍然存在。
程序“login.jsp”、“image.jsp”、“checkLogin.jsp”组成了输入、生成、验证码的登录界面。
“login.jsp”中,语句

用来显示验证码的图像,图像文件是“image.jsp”。
“login.jsp”程序中还用到了实训36中“top.html”和“bottom.html”显示页头和页尾,要注意它们的存放文件夹,否则“login.jsp”不能正常编译运行。当然,将引用“top.html”和“bottom.html”文档的两条语句删除,不影响“login.jsp”程序的演示。
“image.jsp”程序用语句“response.setContentType("image/jpeg");”告诉客户端要接收的文档MIME类型为“image/jpeg”,然后在服务器的缓存中生成一幅有4个字符验证码的图像并发送到客户端。用语句“session.setAttribute("rand",sRand);”将验证码存入ses-sion,保证了从登录页面转到其他页面后依然可以获取该验证码。
checkLogin.jsp程序用语句“request.getParameter("checkcode");”取得用户在登录界面输入的验证码,用语句“(String)session.getValue("rand");”取得session中保存的验证码。两者比较,进一步防止了非法用户的侵入。
另外,为了防止非法用户跳过登录界面而在浏览器的地址栏中输入应用系统的其他页面程序进入系统,在登录验证正确后,可将用户名等数据存入session,在其他页面程序中从session中取出,如取出的用户名变量值为null则是从中途请求的而没有经过登录界面。
使用“记事本”分别输入“login.jsp”、“image.jsp”和“checkLogin.jsp”程序并存放在应用目录“webapps/ROOT”下的“E40”目录中。在浏览器地址栏中输入http://192.168.2.1:8080/E40/login.jsp进入登录页面,输入正确的验证码后单击“登录”按钮后显示的页面如图4-8所示。(www.chuimin.cn)

图4-8 验证码的生成
login.jsp:


image.jsp:


checkLogin.jsp:

相关推荐