云南建设厅网站职称评定,免费建设自己的文学网站,河南龙王建设集团网站,seo建设网站通过Session共享数据验证码进行用户登录
需求#xff1a;
访问带有验证码的登录页面login.jsp。用户输入用户名#xff0c;密码以及验证码。 ①。如果用户名和密码输入有误#xff0c;跳转登陆页面#xff0c;提示#xff1a;用户名或密码错误。 ②。如果验证码输入有误…通过Session共享数据验证码进行用户登录
需求
访问带有验证码的登录页面login.jsp。用户输入用户名密码以及验证码。 ①。如果用户名和密码输入有误跳转登陆页面提示用户名或密码错误。 ②。如果验证码输入有误跳转登录页面提示验证码错误。 ③。如果全部输入正确则跳转到主页success.jsp显示用户名欢迎你。
一验证码
创建com.zm.servlet包在文章HTTP协议响应消息和Response对象响应消息【案例重定向、验证码】里面将验证码的代码复制到com.zm.servlet包里面。并且注意添加几行代码用“”标识的目的是为了将随机生成的验证码存储到session中进行共享数据方便其他页面可以获取数据。
StringBuilder sb new StringBuilder();//
for (int i 1; i 4; i) {int index ran.nextInt(str.length());//获取字符char ch str.charAt(index);//随机字符sb.append(ch);////2.3写验证码g.drawString(ch,width/5*i,height/2);
}
String checkCode_session sb.toString();//
//将验证码存入session
request.getSession().setAttribute(checkCode_session,checkCode_session);//二登录页面
在webapp文件里面创建login.jsp页面。
% page contentTypetext/html; charsetUTF-8 pageEncodingUTF-8 %
!DOCTYPE html
html
headtitle登录页面/titlescriptwindow.onload function () {//1.获取图片对象var img document.getElementById(checkCode);//2.绑定单击事件img.onclick function () {//加时间戳var date new Date().getTime();img.src /tomcat_demo/CheckCodeServlet? date;}}/scriptstylediv{color: red;}/style
/head
bodyform action/tomcat_demo/LoginServlet methodposttable aligncenter cellspacing0 border1trtd用户名/tdtdinput typetext nameusername/td/trtrtd密码/tdtdinput typepassword namepassword/td/trtrtd验证码/tdtdinput typetext namecheckCode/td/trtrtd colspan2img idcheckCode src/tomcat_demo/CheckCodeServlet/td/trtrtd aligncenter colspan2input typesubmit value登录/td/tr/table/formdiv aligncenter% request.getAttribute(cc_error)null ? : request.getAttribute(cc_error)%/divdiv aligncenter% request.getAttribute(login_error)null ? : request.getAttribute(login_error)%/div
/body
/html上述代码中有一部分是一下部分代码块实现的功能是通过点击登录按钮后页面将会提示用户输入的信息是否错误。
stylediv{color: red;}
/stylediv aligncenter% request.getAttribute(cc_error)null ? : request.getAttribute(cc_error)%/div
div aligncenter% request.getAttribute(login_error)null ? : request.getAttribute(login_error)%/div三登录成功页面
在webapp文件里面创建success.jsp文件
% page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitle登录成功/title
/head
bodyh1% request.getSession().getAttribute(user)%欢迎您/h1
/body
/html四验证码检验
package com.zm.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;WebServlet(/LoginServlet)
public class LoginServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.设置编码request.setCharacterEncoding(utf-8);//2.获取参数String username request.getParameter(username);String password request.getParameter(password);String checkCode request.getParameter(checkCode);//3.先获取生成的验证码HttpSession session request.getSession();String checkCode_session (String) session.getAttribute(checkCode_session);//删除session中存储的验证码session.removeAttribute(checkCode_session);//4.先判断验证码是否正确if (checkCode_session! null checkCode_session.equalsIgnoreCase(checkCode)){//忽略大小写比较//验证码正确//判断用户名和密码是否一致if (zhangsan.equals(username) 123.equals(password)){//需要调用UserDao查询数据库//登录成功//存储信息用户信息session.setAttribute(user,username);//重定向到success.jspresponse.sendRedirect(request.getContextPath()/success.jsp);}else {//登录失败//存储提示信息到requestrequest.setAttribute(login_error,用户名或密码错误);//转发到登录页面request.getRequestDispatcher(/login.jsp).forward(request,response);}}else {//验证码不一致//存储提示信息到requestrequest.setAttribute(cc_error,验证码错误);//转发到登录页面request.getRequestDispatcher(/login.jsp).forward(request,response);}}
}