JSP 05

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <%--
        1.创建登录界面,用户名,密码,验证码,登录按钮
        2.servlet生成验证码,存入session,并实现点击刷新
        3.登录按钮跳转到servlet判断界面
        4.先判断验证码是否正确,再判断用户名和密码
        5.正确登录进入登录成功界面,不正确返回登录界面并清除session验证码防止重用
        6.删除session对象,退出
     --%>
<meta charset="utf-8">
<title>用户登录</title>
<style type="text/css">
    span{
        text-decoration:underline;
        color:blue;
    }
    div{
    color: red;
    }
</style>
</head>
<script type="text/javascript">
    window.onload=function(){
        var i=0;
        var yzm=document.getElementById("yzm");
        yzm.onclick=function(){
            i++;
            yzm.src="/web_homework2/yzm?"+i;
            
        }
        var span=document.getElementById("span");
        span.onclick=function(){
            yzm.onclick();
            
        } 
    }
</script>
<body>
    <form action="/web_homework2/testServlet" method="post">
        <input type="text" id="username" name="username" placeholder="你确定不输入yxy?"><br>
        <input type="password" id="password" name="password" placeholder="你确定不输入123456?"><br>
        <input type="text" name="yzm_text" placeholder="看清图片再输入"><br>
        <img alt="这是一张验证码" src="/web_homework2/yzm" id="yzm"><span id="span">啥玩意啊!换一个</span><br>
        <input type="submit" value="登录">
    </form>
    <div><%=request.getSession().getAttribute("yzm_error")==null?"":request.getSession().getAttribute("yzm_error")%></div>
    <div><%=request.getSession().getAttribute("user_error")==null?"":request.getSession().getAttribute("user_error")%></div>
    <%request.getSession().removeAttribute("yzm_error"); 
    request.getSession().removeAttribute("user_error"); %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>欢迎登录</title>
</head>
<script type="text/javascript">
    window.onload=function(){
        var zx=document.getElementById("zx");
        zx.onclick=function(){
            alert("你要走了吗?");
            document.getElementById("a").href="/web_homework2/exit";
        }
    }
</script>
<body>
    <%
        String name=(String)request.getSession().getAttribute("name");
    %>
    <p>欢迎登录,<%=name %>你是最酷的</p><br>
    <a id="a" href="#"><input type="submit" value="注销" id="zx"></a>
</body>
</html>
package servlet;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class yzm
 */
@WebServlet("/yzm")
public class yzm extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public yzm() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建图片对象
        int width=100;
        int height=50;
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
        //获取画笔
        Graphics g = image.getGraphics();
        //填充背景颜色
        g.setColor(Color.PINK);
        g.fillRect(0, 0, width, height);
        //画蓝色边框
        g.setColor(Color.BLUE);
        g.drawRect(0, 0, width-1, height-1);
        //生成随机字母数字,利用循环写入,同时保存session
        String str="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        Random r = new Random();
        g.setColor(Color.RED);//红色字
        StringBuilder sBuilder=new StringBuilder();
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(str.length());
            char ch = str.charAt(index);
            g.drawString(ch+"", width/5+i*20, height/2);//调整位置
            sBuilder.append(ch);
        }
        String yzm_session = sBuilder.toString();
        request.getSession().setAttribute("yzm_session", yzm_session);
        //画干扰线绿色
        g.setColor(Color.GREEN);
        for (int i = 0; i < 10; i++) {
            int x1 = r.nextInt(width);
            int x2 = r.nextInt(width);
            int y1 = r.nextInt(height);
            int y2 = r.nextInt(height);
            g.drawLine(x1, y1, x2, y2);
        }
        //输出图像展示到网页
        ImageIO.write(image, "jpg", response.getOutputStream());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class TestServlet
 */
@WebServlet("/testServlet")
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TestServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        HttpSession session = request.getSession();
        String yzm = (String)session.getAttribute("yzm_session");
        session.removeAttribute("yzm_session");//防止验证码复用
        String yzm_text = request.getParameter("yzm_text");
        if(yzm_text.equalsIgnoreCase(yzm)) {
            //验证码正确,继续判断用户名和密码
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            if(username.equals("yxy")&&password.equals("123456")) {
                //验证成功,跳转到登录成功界面
                request.getSession().setAttribute("name", username);
                request.getRequestDispatcher("/loginSuccess.jsp").forward(request,response);
            }else {
                //验证失败,返回登录界面,并提示错误信息
                request.getSession().setAttribute("user_error", "用户名或密码错误!");
                request.getRequestDispatcher("/login.jsp").forward(request, response);
            }
        }else {
            //验证码错误,返回登录界面,并提示错误信息
            request.getSession().setAttribute("yzm_error", "验证码错误!");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }
        
        
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class exit
 */
@WebServlet("/exit")
public class exit extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public exit() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.getSession().invalidate();//终结session
        request.getRequestDispatcher("/login.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

猜你喜欢

转载自www.cnblogs.com/yanzhen108/p/12679220.html
05
jsp