会话: 用户一次性登录(含验证码验证)
**********************************************************************
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="/day08/servlet/LoginServlet" method="post">
用户名: <input type="text" name="username" /> <br/><br/>
密码: <input type="password" name="password" /> <br/><br/>
验证码: <input type="text" name="code" />
<img src="/day08/servlet/ImageServlet" /> <br/><br/>
<input type="submit" value="登录" />
</form>
</body>
</html>
**********************************************************************
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
**********************************************************************
// 创建验证码
public class ImageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 刷新验证码,设置浏览器不需要缓存
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
// 设置图片的宽高
int width = 120;
int height = 25;
// 创建一副内存图像:BufferedImage 最后一个参数为: 红绿蓝色素方式
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 得到属于该图片的画笔: Graphics
Graphics g = image.getGraphics();
// 画边框
g.setColor(Color.RED);
g.drawRect(0, 0, width, height);
// 填充背景色
g.setColor(Color.YELLOW);
g.fillRect(1, 1, width - 2, height - 2);
// 画10条干扰线
g.setColor(Color.GRAY);
Random r = new Random();
for (int i = 0; i < 10; i++) {
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width),
r.nextInt(height));
}
// 随机数字
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
int x = 23; // 初始数字的横坐标
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 4; i++) {
String code = r.nextInt(10) + "";
sb.append(code);
g.drawString( code, x, 20);
x += 20;
}
// 把验证码放到session中
request.getSession().setAttribute("code", sb.toString());
// 输出到浏览器的页面上: ImageIO 参数依次为: 内存图像,图像格式,输出方式
ImageIO.write(image, "jpg", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 模拟主页
public class IndexServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if(user == null){
out.write("<a href='/day08/Login.html'>登录</a>");
}else{
out.write("欢迎您:" + user.getUsername() + "
<a href='/day08/servlet/LogoutServlet'>注销</a>");
}
out.write("<hr/>");
out.write("这是主页");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 登录
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String code = request.getParameter("code");
String sessionCode = (String) request.getSession().getAttribute("code");
// 判断验证码
if(!code.equalsIgnoreCase(sessionCode)){
out.write("错误的验证码<a href='/day08/Login.html'>返回</a>");
return;
}
// 验证用户名和密码是否正确 用户名: wzhting 密码: gnithzw
StringBuffer sb = new StringBuffer(password);
password = sb.reverse().toString();
if(username.equals(password)){
// 验证通过了,把user对象放到HttpSession中
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
out.write("登录成功,2秒后自动转回主页~~~");
}else{
out.write("错误的用户名或密码,2秒后自动转回主页~~~");
}
response.setHeader("refresh", "2;URL=/day08");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 注销用户
public class LogoutServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 摧毁HttpSession对象
// request.getSession().invalidate();
// 只是删除了域中的一个绑定对象
request.getSession().removeAttribute("user");
out.write("注销成功! 2秒后自动转回主页~~~");
response.setHeader("Refresh", "2;URL=/day08");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Login.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="/day08/servlet/LoginServlet" method="post">
用户名: <input type="text" name="username" /> <br/><br/>
密码: <input type="password" name="password" /> <br/><br/>
验证码: <input type="text" name="code" />
<img src="/day08/servlet/ImageServlet" /> <br/><br/>
<input type="submit" value="登录" />
</form>
</body>
</html>
**********************************************************************
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
**********************************************************************
// 创建验证码
public class ImageServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 刷新验证码,设置浏览器不需要缓存
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
// 设置图片的宽高
int width = 120;
int height = 25;
// 创建一副内存图像:BufferedImage 最后一个参数为: 红绿蓝色素方式
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 得到属于该图片的画笔: Graphics
Graphics g = image.getGraphics();
// 画边框
g.setColor(Color.RED);
g.drawRect(0, 0, width, height);
// 填充背景色
g.setColor(Color.YELLOW);
g.fillRect(1, 1, width - 2, height - 2);
// 画10条干扰线
g.setColor(Color.GRAY);
Random r = new Random();
for (int i = 0; i < 10; i++) {
g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width),
r.nextInt(height));
}
// 随机数字
g.setColor(Color.RED);
g.setFont(new Font("宋体", Font.BOLD | Font.ITALIC, 20));
int x = 23; // 初始数字的横坐标
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 4; i++) {
String code = r.nextInt(10) + "";
sb.append(code);
g.drawString( code, x, 20);
x += 20;
}
// 把验证码放到session中
request.getSession().setAttribute("code", sb.toString());
// 输出到浏览器的页面上: ImageIO 参数依次为: 内存图像,图像格式,输出方式
ImageIO.write(image, "jpg", response.getOutputStream());
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 模拟主页
public class IndexServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
if(user == null){
out.write("<a href='/day08/Login.html'>登录</a>");
}else{
out.write("欢迎您:" + user.getUsername() + "
<a href='/day08/servlet/LogoutServlet'>注销</a>");
}
out.write("<hr/>");
out.write("这是主页");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 登录
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String code = request.getParameter("code");
String sessionCode = (String) request.getSession().getAttribute("code");
// 判断验证码
if(!code.equalsIgnoreCase(sessionCode)){
out.write("错误的验证码<a href='/day08/Login.html'>返回</a>");
return;
}
// 验证用户名和密码是否正确 用户名: wzhting 密码: gnithzw
StringBuffer sb = new StringBuffer(password);
password = sb.reverse().toString();
if(username.equals(password)){
// 验证通过了,把user对象放到HttpSession中
User user = new User();
user.setUsername(username);
user.setPassword(password);
request.getSession().setAttribute("user", user);
out.write("登录成功,2秒后自动转回主页~~~");
}else{
out.write("错误的用户名或密码,2秒后自动转回主页~~~");
}
response.setHeader("refresh", "2;URL=/day08");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************
// 注销用户
public class LogoutServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
// 摧毁HttpSession对象
// request.getSession().invalidate();
// 只是删除了域中的一个绑定对象
request.getSession().removeAttribute("user");
out.write("注销成功! 2秒后自动转回主页~~~");
response.setHeader("Refresh", "2;URL=/day08");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
**********************************************************************