login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>验证码测试</title>
<script type="text/javascript">
/* 刷新验证码 */
function changeCheckCode()
{
document.getElementById("checkCode").src = "checkCode.jpg?" + new Date().getTime();
}
function checkLoginInfo()
{
if (form1.userName.value == "" || form1.userName.value == null)
{
alert("用户名不能为空");
form1.userName.focus();
return false;
}
else if (form1.userCode.value == "" || form1.userCode.value == null)
{
alert("验证码不能为空");
form1.yanzhengma.focus();
return false;
}
return true;
}
</script>
</head>
<body>
<center>
<form action="loginCheck" method="post" name="form1">
<br/><br/><br/><br/><br/><br/>
请输入用户名:<input type="text" name="userName" id="userName"/>
<br/><br/>
<img alt="点击刷新" src="checkCode.jpg" border="0" id="checkCode" onClick="changeCheckCode();" />
<br/>
请输入验证码:<input type="text" name="userCode" id="userCode"/>
<br/><br/>
<input type="submit" value="确认登录">
<br/><br/>
<!-- 保存登录失败时显示给用户的提示信息 -->
<font color="red">
${sessionScope.loginError } <%session.removeAttribute("loginError"); %>
</font>
</form>
</center>
</body>
</html>
Login.java
package edu.njnu.ncs.controller;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.cxf.common.util.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.wangxiang.util.CheckCode;
@Controller
public class Login {
@RequestMapping(value="loginCheck",method=RequestMethod.POST)
public String loginCheck(HttpServletRequest request, HttpServletResponse response) throws IOException{
response.setContentType("text/html;charset=UTF-8");
HttpSession session = request.getSession();
String userName = request.getParameter("userName"); // 账号
String userCode = request.getParameter("userCode"); // 输入的验证码
/* 获取系统生成的验证码,同时移除掉 */
String verificationCode = (String) session.getAttribute("checkCode");
session.removeAttribute("checkCode");
if (!userCode.equals(verificationCode))
{
session.setAttribute("loginError", "验证码错误");
return "login";
}
return "index";
}
@RequestMapping("checkCode.jpg")
public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 通知浏览器不要缓存
response.setHeader("Expires", "-1");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "-1");
CheckCode util = CheckCode.Instance();
// 将验证码输入到session中,用来验证
String code = util.getString();
request.getSession().setAttribute("checkCode", code);
// 输出打web页面
ImageIO.write(util.getImage(), "jpg", response.getOutputStream());
}
}