要求:
1、设计教师与学生不同登陆界面
2、验证码随机生成
设计大体的框架:
首页为first.jsp生成的
它调用image.jsp生成验证码
再利用validate.jsp判断验证码是否正确
正确就进行账号密码验证
最后老师和学生转向不同的页面
下面是代码:
first.jsp
<%@page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>徐瑞准,20153809title>
<style type="text/css">
.headline{
text-align: left;
font-size: 28px;
font-weight:900;
font-family:黑体,隶书;
}
style>
head>
<body bgcolor="#127D22">
<p class="headline">用户登录:p>
<form name="form1" onSubmit="return check1();" action="judge.jsp" method="post">
<p align="center">用户名: <input type="text" name="usename"><br>
<p align="center">密 码 : <input type="password" name="pass"><br>
<input type="radio" name="identity" value="teacher" />老师
<input type="radio" name="identity" value="student" />学生
<br/>
<td><input type="text" name="rand" size="15">td>
<td><img name="randImage" src="image.jsp">td>
<br/>
<td><a href="javascript:loadimage();"><font class=pt95>看不清点我font>a>td>
<br/>
<input type="submit" value="登录">
<input type="reset" value="重置"><br>
form>
body>
html>
<script language="javascript">
function loadimage() {
document.getElementById("randImage").src = "image.jsp?" + Math.random();
}
script>
image.jsp
下面代码中设置缓存的三行其实删除也能运行
<%@
page contentType="image/jpeg"
import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"
pageEncoding="utf-8"
%>
<%!Color getRandColor(int fc, int bc) {
Random random = new Random();
if (fc > 255)
fc = 255;
if (bc > 255)
bc = 255;
int r = fc + random.nextInt(bc - fc);
int g = fc + random.nextInt(bc - fc);
int b = fc + random.nextInt(bc - fc);
return new Color(r, g, b);
}%>
<%
out.clear();//这句针对resin服务器,如果是tomacat可以不要这句
//no-cache指示请求或响应消息不能缓存
response.setHeader("Cache-Control", "no-cache");//Cache-Control指定请求和响应遵循的缓存机制
response.setHeader("Pragma", "No-cache");//作用相当于上行代码,通常两者合用
response.setDateHeader("Expires", 0);//Expires实体报头域给出响应过期的日期和时间。为了让代理服务器或浏览器在一段时间以后更新缓存中
//上一行代码的0 表示不能缓存
//生成一张图片
int width = 60, height = 20;
BufferedImage image = new BufferedImage(width, height,BufferedImage.TYPE_INT_RGB);
//TYPE_INT_RGB 返回默认RGB颜色模型
Graphics g = image.getGraphics();
Random random = new Random();
g.setColor(getRandColor(200, 250));
g.fillRect(0, 0, width, height);//用指定的画刷填充矩形,此函数包括矩形的左上边界,但不包括矩形的右下边界
g.setFont(new Font("Times New Roman", Font.PLAIN, 18));//设置字体
g.setColor(getRandColor(160, 200));
for (int i = 0; i < 155; i++) {
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x, y, x + xl, y + yl); //画线,验证码的背景
}
String sRand = "";
for (int i = 0; i < 4; i++) {
String rand = String.valueOf(random.nextInt(10));
sRand += rand;
g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
g.drawString(rand, 13 * i + 6, 16);//数字写入图片的位置
}
// 将认证码存入SESSION
session.setAttribute("rand", sRand);
ImageIO.write(image, "JPEG", response.getOutputStream());
g.dispose();//释放资源
%>
validate.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage=""%>
<%
String ran = (String)session.getAttribute("rand");
String input = request.getParameter("rand");
if(ran.equals(input)){
out.print("");
}else{
out.print("");
}
%>
judge.jsp
<%@page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<html>
<head>
<title>2018title>
head>
<body bgcolor="123544">
<%
String name=request.getParameter("usename");
String pwd=request.getParameter("pass");
String man=request.getParameter("identity");
if("teacher".equals(man)&&
"123".equals(name)&&
"123".equals(pwd))
response.addHeader("Refresh","3;URL=welcome.jsp");
else if("student".equals(man)&&
"456".equals(name)&&
"456".equals(pwd))
response.addHeader("Refresh","3;URL=https://www.baidu.com");
else{
response.addHeader("Refresh","3;URL=first.jsp");
}
%>
<h3>用户登录成功3秒后会自动跳转到欢迎页!
如果密码错误将返回到登录页面
h3>
如果没有跳转请按
<a href="welcome.jsp">这里a>跳转
body>
html>
welcome.jsp
<%@page contentType="text/html; charset=UTF-8" %>
<html>
<head>
<title>2018title>
head>
<body>
<h1>Welcome to This Webh1>
body>
html>
实验三 动态添加下拉列表的列表项
一、实验目的
1、掌握代码片段中的注释的应用;
2、掌握JSP脚本标示—Java代码片段的应用。
二、实验内容
1、设计教师与学生不同登陆界面;
2、验证码随机生成;
3、提交后分别转向教师页面和学生页面进行判断用户名和密码正确性;
4、如果正确,3秒后,转向成功页面,否则跳回验证页面;
三、实验方法
1、在同一页面上设计两个单选按钮:教师、学生,当点击提交按钮后,进入相应的JSP页面。当用户名及密码均正确时,进入欢迎界面;如果两者其一不正确就要提醒需要重新输入。在这些操作中,注意request内置对象的正确使用方法;
2、类似于1,使用request和out对象;
3、学习使用重定向方法解决实验内容3