您的位置:首页 > 其它

登陆界面验证码实现

2017-06-19 13:40 288 查看
login.jsp

<form method="post" action="user_login.action">
<label class="control-label" for="inputUser"> <span
class="icon-user"></span>
</label>
<input  type="text" id="inputUser"  name="sysuserinfo.userCode" placeholder="学号"
required="required" pattern="[0-9]{10}" value="">
<label class="control-label" for="inputPassword"> <span
class="icon-password"></span>
</label>

<input type="password" id="inputPassword" name="sysuserinfo.password"
required="required" placeholder="密码">
<label class="control-label" for="inputCode"> <span
class="icon-key"></span>
<input type="text"  name="chknumber" required="required" placeholder="验证码" maxlength="5" >
<img id="imgCode"
title="看不清楚请点击这里" src="<%=basePath%>randomCode.action" onclick="reloadcode(this,'<%=basePath%>')" alt="验证码"
/>
</form>


RandomAction.java

public class RandomCodeAction extends ActionSupport implements SessionAware,
ServletResponseAware {

private Map<String, Object> session;
private HttpServletResponse response;
private static final long serialVersionUID = 1L;

/**
* 生成验证码
*/
@Override
public String execute() throws Exception {
log.error("LOGIN-INFO:RandomCodeAction-execute()");
response.setHeader("Cache-Control", "no-cache");
int width = 60; // 图片宽度
int height = 20; // 图片高度
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.createGraphics();
graphics.setColor(this.getColor()); // 背景颜色
graphics.fillRect(0, 0, width, height);
graphics.setFont(new Font("Arial", Font.BOLD, 18));
graphics.setColor(this.getColor()); // 字的颜色
String number = String
.valueOf(System.currentTimeMillis() % 9000 + 1000);
// 生成四位随机数
System.out.println("系统验证码:" + number);
if (number == null) {
System.out.println("hahah");
}
session.put("randomCode", number); // 写入session中
graphics.drawString(number, (int) (width * 0.1), (int) (height * 0.8));
graphics.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(response
.getOutputStream());
encoder.encode(image);
response.getOutputStream().flush(); // 刷新到页面生成图片
response.getOutputStream().close(); // 关闭writer
return null;
}

private Color getColor() {
int red = (int) (Math.random() * 1000 % 256);
int green = (int) (Math.random() * 1000 % 256);
int blue = (int) (Math.random() * 1000 % 256);
return new Color(red, green, blue);
}

public void setSession(Map<String, Object> session) {
this.session = session;
}

public void setServletResponse(HttpServletResponse response) {
this.response = response;
}

}


struts.xml

<package name="comAction" namespace="/" extends="struts-default">

<action name="randomCodeAction" class="cn.edu.nwsuaf.comAction.RandomCodeAction">
</action>
</package>


效果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  验证码 界面