关于web的请求 keep alive
1,就是当我请求一个页面时,这个页面里有一个<img src=/myproject/a.servlet> 这样一个图片,有点想不通,就是我没有发出这个图片的请求,为什么会进行第二次请求呢。2,就是在实际做项目时,如果要显示图片在页面,是将图片用流的方式读到客户端,还是将图片在服务器上的地址发过去,让<img>的src 来解析呢。因为静态页面就是用地址。
3,看了传智视频上这个代码: 这个就是验证码,在图片旁边放了一个链接,点击链接会执行一段js代码,就能实现 验证码看不清换一张的功能。因为没有用ajax,js只是把src的地址重新处理一下,也没有发送请求怎么就能实现换一张图片呢。 图片的生成是在服务端的
程序代码:
<span style="color: #FF0000;"><script type="text/javascript"> function _change() { /* 1. 得到img元素 2. 修改其src为/day11_3/VerifyCodeServlet */ var imgEle = document.getElementById("img"); imgEle.src = "/day11_3/VerifyCodeServlet?a=" + new Date().getTime(); } </script></span> </head> <body> <%-- 本页面提供登录表单,还要显示错误信息 --%> <h1>登录</h1> <% /* 读取名为uname的Cookie! 如果为空显示:"" 如果不为空显示:Cookie的值 */ String uname = ""; Cookie[] cs = request.getCookies();//获取请求中所有的cookie if(cs != null) {// 如果存在cookie for(Cookie c : cs) {//循环遍历所有的cookie if("uname".equals(c.getName())) {//查找名为uname的cookie uname = c.getValue();//获取这个cookie的值,给uname这个变量 } } } %> <% String message = ""; String msg = (String)request.getAttribute("msg");//获取request域中的名为msg的属性 if(msg != null) { message = msg; } %> <font color="red"><b><%=message %> </b></font> <form action="/day11_3/LoginServlet" method="post"> <%-- 把cookie中的用户名显示到用户名文本框中 --%> 用户名:<input type="text" name="username" value="<%=uname%>"/><br/> 密 码:<input type="password" name="password"/><br/> 验证码:<input type="text" name="verifyCode" size="3"/> <span style="color: #FF6600;"><img id="img" src="/day11_3/VerifyCodeServlet"/> <a href="javascript:_change()">换一张</a></span> <br/> <input type="submit" value="登录"/> </form> </body> </html> 下面是服务器端代码: VerifyCode vc = new VerifyCode(); BufferedImage image = vc.getImage(); request.getSession().setAttribute("session_vcode", vc.getText());//保存图片上的文本到session域 VerifyCode.output(image, response.getOutputStream());