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());
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());