页面s
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>首页</title>
<!-- 1. 导入CSS的全局样式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery导入,建议使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 导入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
<style>
span{
color: red;
}
</style>
</head>
<body>
<%--<div align="center">
<a
href="${pageContext.request.contextPath}/fingPage" style="text-decoration:none;font-size:33px">查询所有用户信息
</a>
</div>--%>
<div class="container" style="width: 400px;">
<h3 style="text-align: center;">管理员登录</h3>
<form action="${pageContext.request.contextPath}/login" method="post">
<div class="form-group">
<label for="user">用户名:</label>
<input type="text" name="username" class="form-control" id="user" placeholder="请输入用户名"/>
<span id="message"></span>
</div>
<div class="form-group">
<label for="password">密码:</label>
<input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
<span id="message1"></span>
</div>
<div class="form-inline">
<label for="vcode">验证码:</label>
<input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
<img src="${pageContext.request.contextPath}/checkCode" title="看不清点击刷新" id="vcode"/><a id="a" href="javascript:refreshCode()">看不清?请点击</a>
</div>
<hr/>
<div class="form-group" style="text-align: center;">
<input class="btn btn btn-primary" type="submit" value="登录">
</div>
</form>
<!-- 出错显示的信息框 -->
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" >
<span>×</span></button>
<strong>${login_msg}</strong>
</div>
</div>
</body>
<script>
window.onload=function () {
var image=document.getElementById("vcode");
image.onclick=function () {
//给图片设置时间戳
var data=new Date().getTime();
image.src="${pageContext.request.contextPath}/checkCode?"+data;
}
let a = document.getElementsByTagName("a")[0].onclick=function () {
var data=new Date().getTime();
image.src="${pageContext.request.contextPath}/checkCode?"+data;
}
}
//用户名验证
let username = document.getElementById("user");
username.onblur=function () {
var reg=/^[\u4e00-\u9fa5a-zA-Z0-9]+$/;
let value = document.getElementById("user").value;
let message = document.getElementById("message");
if(reg.test(value)){
message.innerHTML="";
}else{
message.innerHTML="用户名有误,请重新输入!";
}
}
//密码验证
let password = document.getElementById("password");
password.onblur=function () {
var reg=/^[0-9a-zA-Z]{2,}$/;
let value = password.value;
let message = document.getElementById("message1");
if(reg.test(value)){
message.innerHTML="";
}else{
message.innerHTML="密码错误,请您重新输入!"
}
}
</script>
</html>
生成验证码
package cn.itcast.Servlet;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
/**
* 随机生成验证码
*/
@WebServlet("/checkCode")
public class CheckCode extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//定义图片的宽和高
int width =80;
int height=36;
//1.定义画布
BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);
//2.美化图片
Graphics graphics=image.getGraphics();
//2.1给图片设置背景色
graphics.setColor(Color.pink);
graphics.fillRect(0,0,width,height);
//2.2给边框设置颜色
graphics.setColor(Color.black);
graphics.drawRect(0,0,width-1,height-1);
//2.3给图片设置字面字符
graphics.setColor(Color.BLUE);
String word="abcdefghijklmnopqrxtuvwszABCDEFGHIJKLMNOPKRXTUVWSZ0123456789";
Random random=new Random();
//用于存储验证码
StringBuilder builder=new StringBuilder();
for(int i= 1;i<5;i++){
int index = random.nextInt(word.length());
char newstr = word.charAt(index);
builder.append(newstr);
graphics.setFont(new Font("黑体",Font.BOLD,24));
Font font = graphics.getFont();
graphics.drawString(String.valueOf(newstr),width/5*i,height/2);
}
//用于验证码的校验
String checkword = builder.toString();
request.getSession().setAttribute("checkCode",checkword);
//2.4给画布设置画线
graphics.setColor(Color.green);
for(int i=1;i<7;i++){
int x = random.nextInt(width);
int x2 = random.nextInt(width);
int y=random.nextInt(height);
int y2=random.nextInt(height);
graphics.drawLine(x,y,x2,y2);
}
//3.将图片输出到页面
ImageIO.write(image,"jpg",response.getOutputStream());
}
}
用户登陆校验
package cn.itcast.Servlet;
import cn.itcast.domain.UserInfo;
import cn.itcast.service.Impl.UserServiceImpl;
import cn.itcast.service.UserService;
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;
import java.io.IOException;
/**
* 用户登陆
*/
@WebServlet("/login")
public class login extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//2.1获取用户填写验证码
String verifycode = request.getParameter("verifycode");
//3.验证码校验
HttpSession session = request.getSession();
String checkCode = (String) session.getAttribute("checkCode");
session.removeAttribute("checkCode");//确保验证码一次性
if(!checkCode.equalsIgnoreCase(verifycode)){
//验证码不正确
//提示信息
request.setAttribute("login_msg","验证码错误!");
//跳转登录页面
request.getRequestDispatcher("/index.jsp").forward(request,response);
return;
}
String username = request.getParameter("username");
String password = request.getParameter("password");
UserService service=new UserServiceImpl();
String contextPath = request.getContextPath();
UserInfo user = service.findOne(username, password);
if(user==null){
request.getRequestDispatcher("/index.jsp").forward(request,response);
}else {
response.sendRedirect(contextPath+"/fingPage");
}
request.setAttribute("userInfo",user);
}
}
(额外)过滤器条件:在其他资源在登陆的情况下才可以访问
package cn.itcast.Servlet;
import cn.itcast.Utils.PageUtils;
import cn.itcast.service.Impl.UserServiceImpl;
import cn.itcast.service.UserService;
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 java.io.IOException;
import java.util.Map;
/**
* 条件的分页查询
*/
@WebServlet("/fingPage")
public class FingPage extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String currentPage = req.getParameter("currentPage");
String number = req.getParameter("number");
if (currentPage == null ||"".equals(currentPage)) {
currentPage="1";
}
if(number==null || "".equals(number)){
number="5";
}
int currentPages = Integer.parseInt(currentPage);
if(currentPages<=0){
currentPages=1;
}
//获取按条件查询的参数
Map<String, String[]> condition = req.getParameterMap();
int numbers=numbers = Integer.parseInt(number);
UserService userService=new UserServiceImpl();
PageUtils pageUtils = userService.paging(currentPages, numbers,condition);
if(currentPages>pageUtils.getTotalPage()){
currentPages=pageUtils.getCurrentPage()-1;
pageUtils = userService.paging(currentPages, numbers,condition);
}
req.setAttribute("page",pageUtils);
req.getRequestDispatcher("/Jsp/list.jsp").forward(req,resp);
}
}