[实战小剧场servlet&jsp] 用户登录及退出功能实现


prtyaa
prtyaa 2023-12-27 15:28:50 51520
分类专栏: 资讯

项目使用技术:servlet+jsp+mybatis

用户登录:
根据用户名和密码查询用户信息。查到则登录成功,查不到则登录失败。
用户退出:
销毁session


登录思路:

  1. 浏览器在登录页面发起登录请求 →
  2. 处理登录的servlet,从请求数据中获取到登录用到的用户名和密码 →
  3. 调用service层进行业务处理(调用mapper层 查询数据) →
  4. service 对返回数据处理传递到servlet →
  5. servlet 根据返回结果判断并用session 携带成功或失败信息 →

1.成功携带用户信息跳转主页面,现实功能

2.失败携带失败提示跳转失败页面,提示账号或密码错误

 

省略mybaitis工具类 ; log4j.properties ; db.properties ;页面无用代码,

下列代码按执行顺序放置

pojo

节约篇幅省略及其常规操作

public class User implements Serializable {
    private int id;
    private  String uname;
    private String password;
    private String sex;
    private int age;
    private String birthday;
}

servlet

package com.lin.servlet;

import com.lin.pojo.User;
import com.lin.service.LoginService;
import com.lin.service.impl.LoginServiceImpl;

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

/**
 * 用户登录 操作
 */
public class UserLoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求响应编码格式
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //接收请求信息
        String uname = req.getParameter("uname");
        String password = req.getParameter("password");
        //处理请求信息调用service层
        LoginService service = new LoginServiceImpl();
        User user = service.UserLogin(uname, password);
        HttpSession session = req.getSession();
        if (user !=null){
            session.setAttribute("user",user);
            resp.sendRedirect("/main.jsp");
        }else {
            session.setAttribute("error","登录失败");
            resp.sendRedirect("/login.jsp");
        }
    }
}

service

interface

package com.lin.service;

import com.lin.pojo.User;

public interface LoginService {

    /**
     * 用户登录
     * @param uname 用户名
     * @param password 密码
     * @return
     */
    User UserLogin(String uname, String password);
}

impl

package com.lin.service.impl;

import com.lin.mapper.UserMapper;
import com.lin.pojo.User;
import com.lin.service.LoginService;
import com.lin.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;

public class LoginServiceImpl implements LoginService {


    @Override
    public User UserLogin(String uname, String password) {
        SqlSession session = MyBatisUtil.getSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.userLogin(uname, password);
        session.close();
        if (user!=null){
            return user;
        }else {
            return null;
        }
    }
}

mapper

interface

package com.lin.mapper;

import com.lin.pojo.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    /**
     * 用户登录
     * @param uname 用户名
     * @param password 密码
     * @return
     */
    User userLogin(@Param("uname") String uname ,@Param("password") String password);
}

xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lin.mapper.UserMapper">
    <select id="userLogin" resultType="User" parameterType="User">
        select * from t_user where uname=#{uname} and pwd=#{password};
    </select>
</mapper>

页面处理失败情况代码


用户退出:

销毁session

servlet

public class UserOutServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置求情响应编码
        req.setCharacterEncoding("utf-8");
        resp.sendRedirect("text/html;charset=utf-8");
        //处理请求信息 获取session
        HttpSession session = req.getSession();
        //销毁session
        session.invalidate();
        //响应处理结果(重定向)
        resp.sendRedirect("/login.jsp");
    }
}

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=31435
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2973
【软件正版化】软件正版化工作要点  2891
统信UOS试玩黑神话:悟空  2864
信刻光盘安全隔离与信息交换系统  2749
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1283
grub引导程序无法找到指定设备和分区  1253
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  170
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  169
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  162
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!