JSP设计网页登录界面

要求:

1、设计教师与学生不同登陆界面
2、验证码随机生成

设计大体的框架:

首页为first.jsp生成的
它调用image.jsp生成验证码
再利用validate.jsp判断验证码是否正确
正确就进行账号密码验证
最后老师和学生转向不同的页面

JSP设计网页登录界面_第1张图片

下面是代码:
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

你可能感兴趣的:(课程试验)