
实现功能:
第一步定义接口,实现登录的方法
package com.mappers;
import com.pojo.Customer;
import org.apache.ibatis.annotations.Param;
public interface CustomerMapper {
public Customer login(@Param("name") String name, @Param("pass")String password);
}
第二步在mapper里写SQL语句
select * from customer where name=#{name} and password=#{pass}
第三步实现service方法,实现三层架构模式
public class CustomerService {
public boolean loginService(String name,String password){
SqlSession session = Utils.getSession();
Customer login = session.getMapper(CustomerMapper.class).login(name, password);
if(login==null){
return false;
}
return true;
}
}
第四步实现servlet
package com.Controller;
import com.Service.CustomerService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/login")
public class loginServlet extends HttpServlet {
CustomerService customerService = new CustomerService();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
//获取请求验证码的参数
String checkCode = req.getParameter("captcha");
//获取生成的验证码
//session的应用场景,将servlet生成的验证码存储到session中。
String savedCode = (String) req.getSession().getAttribute(
"captcha");
//检验验证码是否正确,验证码不区分大小写
String error=null;
if(savedCode.equalsIgnoreCase(checkCode)){
if(username!=null&&username!=""&&password!=null&&password!=""){
boolean login =customerService.loginService(username,password);
if(login){
//利用cookie保存用户名和密码
String remember = req.getParameter("remember");
if(remember!=null){
cookie cookie = new cookie("name",username);
cookie.setPath(req.getContextPath());
cookie.setMaxAge(15*24*60*60);
resp.addcookie(cookie);
cookie cookie2 = new cookie("pass",password);
cookie2.setPath(req.getContextPath());
cookie2.setMaxAge(15*24*60*60);
resp.addcookie(cookie2);
}
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
else{
error="用户名或者密码错误";
req.setAttribute("error",error);
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
else{
error="用户名或者密码为空";
req.setAttribute("error",error);
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
}
error="验证码错误";
req.setAttribute("error",error);
req.getRequestDispatcher("login.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
最后前端代码
<%--
Created by IntelliJ IDEA.
User: 86133
Date: 2021/10/5
Time: 16:37
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%String error = (String )request.getAttribute("error");
if(error==null){
error="";
}
String name=null;
String password=null;
cookie[] cookies = request.getcookies();
for (cookie c:cookies){
if(c!=null){
if(c.getName().equals("name")){
name=c.getValue();
if(name==null){
name="";
}
}
if(c.getName().equals("pass")){
password=c.getValue();
if(password==null){
password="";
}
}
}
}
%>
<%=error%>
提示错误信息