项目的登录demo

1.JSP

<?xml version="1.0" encoding="UTF-8" ?>
<%@page import="org.apache.coyote.Request"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
<link type ="text/css" rel="stylesheet" href="../resourses/css/Login.css"/>
<title>Insert title here</title>
</head>

<body>
<!-- <form method ="post" action ="/Labproject/Loginservlet"> -->
<!--    账户  :<input id ="user" name ="user" type ="text"/> -->
<!--    密码  :<input id ="pass" name ="pass" type ="password"  /> -->
<!--    登陆  :<input type ="submit" value ="提交"/> -->
<!-- </form> -->
<!-- <div id ="login_id"></div> -->
<form method ="post" action ="/LoginDemo/Loginservlet">
 <div id ="title" class="_title"> 
	  	<div id ="title_1" class="_title1">
	  		     后台管理员
	  	</div>
	  </div>
	  <div id ="mid" class="_mid">
	  	<div id ="mid_1" class="_mid1">
	  		<div style="width: 40%;height: 60px; margin: auto;">账号:<input class="_input" type="text" id ="input_id_1" value="" placeholder="用户名" name="user"/></div>
	  		<div style="width: 40%;height: 60px; margin: auto;">密码:<input class="_input" type="password" id ="input_id_2" value="" placeholder="密码" name="pass"/><span id ="span_id" style ="color:red"></span></div>
	  		<div style="width: 30%;height: 40px; margin: auto;">                       
            <input id ="code_id" type="text" name="code" placeholder="请输入验证码">                    
           <span>		
<img alt="验证码" id="scode" src="/LoginDemo/ImageServlet" >
<a href="#" onclick="javascript:flushCode();">看不清?</a>
          </span>
            </div>
	  		<div style="width: 40%;height: 40px; float: right;"><input style="width: 20%;height: 25px;" type="submit" id ="input_id_3" name="input_name_3" value="登录"/></div>
	  	</div>
	  </div>
	   
	</form>
</body>
<script>
     $(
    		 fale()
    		 
     );
     function flushCode() {
 	    // 每次刷新的时候获取当前时间,防止浏览器缓存刷新失败
 	    var time = new Date();
 	    document.getElementById("scode").src = "/LoginDemo/ImageServlet?time=" + time;
 	}
     function getUrlParam(name) {
	  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
	  var r = window.location.search.substr(1).match(reg); //匹配目标参数
	  if (r != null) return unescape(r[2]); return null; //返回参数值
	 }
     function fale(){
		 var m;
		 var a =getUrlParam('message');
	      if(a ==1){
	    	  m ="账号或密码错误";
	    	  $("#span_id").empty().append(m);
	      }else if(a==2){
	    	  m ="验证码错误"
	    	  $("#span_id").empty().append(m);
	      }
	      
	 }
      
</script>
</html>
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
<form method ="post" action ="/LoginDemo/ExitLogin">
<input type ="submit" value ="退出登陆"/>
</form>
<% //判断
    if(request.getSession().getAttribute("username") ==null){
      response.sendRedirect("/LoginDemo/html/Login.jsp");
    }
%>
 session:<h1><%
    out.print(request.getSession().getAttribute("username"));
 %></h1>
</body>
</html>

2.后端:

package com.util;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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 Login
 */
@WebServlet("/Loginservlet")
public class Loginservlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Loginservlet() {
        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
		//response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	@SuppressWarnings("unused")
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String usera ="123";//账号
		String passa ="123";//密码
		String message ="1";//返回信息
		String user =request.getParameter("user");//前台页面传来的账号
		String pass =request.getParameter("pass");//前台页面传来的密码
		//判断账号密码是否相等
		if (user.equals(usera) && pass.equals(passa)) {
			//获取sessio
			HttpSession session =request.getSession();
			//设置session
			session.setAttribute("username", user);
			if (session ==null) {
				//判断session是否为空
				//getServletContext().getRequestDispatcher("/Login.jsp").forward(request, response);
				 response.sendRedirect("/LoginDemo/html/Login.jsp");
				}
			//解析session里的内容
			String username =(String)session.getAttribute("username");
			if (username ==null) {
				//判断username是否为空
				//重定向,一定要加return,sendRedirect是通过浏览器来做重定向实现页面跳转的,只有页面处理后
				//才有实际动作。要做转向的,后边的输出就没有意义了,并且有可能会因为后边的输出出错。
				//使用sendRedirect的时候前面不能有HTML输出,并不是绝对的,如果不报错就可以,因为现在JSP server都有cache机制
				//这样写会在地址栏出现相应的地址,并且session会自动传过去,但是参数只能写在url中,
				//不能 request.setAttribute("message","错误信息: " + ex.getMessage());
                //然后get去获取值。
				///使用这个不会出现地址,
				//getServletContext().getRequestDispatcher("/Login.jsp").forward(request, response)
				//但是可以request.setAttribute("message","错误信息: " + ex.getMessage());
				//然后get去获取值。
				response.sendRedirect("/LoginDemo/html/Login.jsp");
				 return;
			}
			  //获取session的验证码
			   String code = (String) request.getSession().getAttribute("code");
		        // 获取页面提交的验证码
		        String inputCode = request.getParameter("code");
		        if(code.toLowerCase().equals(inputCode.toLowerCase())) { // 验证码不区分大小写
		            // 验证成功,跳转到成功页面		        	
		 	       	response.sendRedirect("/LoginDemo/html/Logintwo.jsp");
		 	       return;
		        } else { // 验证失败
		        	String aString ="2";
		        response.sendRedirect("/LoginDemo/html/Login.jsp?message="+aString+"");
		        return;
		        }			
			}else {	
				//账号密码错误
			response.sendRedirect("/LoginDemo/html/Login.jsp?message="+message+"");
				return;
			}
		
			
	}

}

退出登录

package com.util;

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 ExitLogin
 */
@WebServlet("/ExitLogin")
public class ExitLogin extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ExitLogin() {
        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
		//response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//sessio定义获取session
		HttpSession session =request.getSession();
		//如果seeion为空
		if (session ==null) {
			response.sendRedirect("/LoginDemo/html/Login.jsp");
			return;
		}
		//如果不为空,移除登陆session
		session.removeAttribute("username");
		//重定向到网页
		response.sendRedirect("/LoginDemo/html/Login.jsp");
		doGet(request, response);
		
	}

}

 验证码:

package com.util;


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 GetImage
 */
@WebServlet("/ImageServlet")
public class ImageServlet extends HttpServlet {
	 /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// 图片高度
    private static final int IMG_HEIGHT = 100;
    // 图片宽度
    private static final int IMG_WIDTH = 30;
    // 验证码长度
    private static final int CODE_LEN = 4;
 
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req, resp);
    }
 
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // 用于绘制图片,设置图片的长宽和图片类型(RGB)
        BufferedImage bi = new BufferedImage(IMG_HEIGHT, IMG_WIDTH, BufferedImage.TYPE_INT_RGB);
        // 获取绘图工具
        Graphics graphics = bi.getGraphics();
        graphics.setColor(new Color(100, 230, 200)); // 使用RGB设置背景颜色
        graphics.fillRect(0, 0, 100, 30); // 填充矩形区域
 
        // 验证码中所使用到的字符
        char[] codeChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456".toCharArray();
        String captcha = ""; // 存放生成的验证码
        Random random = new Random();
        for(int i = 0; i < CODE_LEN; i++) { // 循环将每个验证码字符绘制到图片上
            int index = random.nextInt(codeChar.length);
            // 随机生成验证码颜色
            graphics.setColor(new Color(random.nextInt(150), random.nextInt(200), random.nextInt(255)));
            // 将一个字符绘制到图片上,并制定位置(设置x,y坐标)
            graphics.drawString(codeChar[index] + "", (i * 20) + 15, 20);
            captcha += codeChar[index];
        }
        // 将生成的验证码code放入sessoin中
        req.getSession().setAttribute("code", captcha); 
       
        // 通过ImageIO将图片输出
        ImageIO.write(bi, "JPG", resp.getOutputStream());
    }
 
}

百度云:链接:https://pan.baidu.com/s/1KQAhJSYrVnlni4gDguMfFA 密码:dtoz

猜你喜欢

转载自blog.csdn.net/qq_33188563/article/details/81569179