手把手教你学javaweb(三)登录和退出功能开发

javaweb项目登录退出功能的开发

登录功能

我们一步一步深入javaweb开发,此处就只讲登录和退出的servlet和jsp层面的处理逻辑,并不涉及持久层数据库的处理。

新增index.jsp 并 编写登录的form表单

代码如下

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>

<h2>用户登录</h2>
 <font color="red" size="5px">${msg}</font>
<form action="<%=request.getContextPath()%>/login" method = "post">
用户名:<input type="text" name="userName"/><br/>
密码:<input type ="password" name="password"/><br/>
<input type ="submit" value="登录"/>
</form>
</body>

</html>

其中 msg是用来回显错误提示信息的

新增登录成功后的页面 home.jsp

代码如下

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="static/js/jquery-1.8.3.min.js"></script>
<title>Insert title here</title>
</head>
<body>
 <img src="static/img/userinfo.jpg" height="40" width="40" />:<font size="6px">${userName}</font>
<h1>欢迎进入IT技术学习系统</h1>

</form>
</body>
</html>

这里引入了一个小的图片,在webapp目录下新增/static/img目录,并将userinfo.jpg放入目录中

编写 转向index.jsp页面的servlet

package com.cgy.demos.web.servlet;

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

public class IndexServlet  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.getRequestDispatcher("/WEB-INF/index.jsp").forward(req,resp);
    }
}

编写处理登录的LoginServlet

package com.cgy.demos.web.servlet;

import org.apache.commons.lang3.StringUtils;

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

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");


        if (StringUtils.isBlank(password)) {
            req.setAttribute("msg", "密码不能为空");
            req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
            return;
        }
        if (StringUtils.isBlank(userName)) {
            req.setAttribute("msg", "用户名不能为空");
            req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
            return;
        }
        if (!userName.equals("admin")) {
            req.setAttribute("msg", "用户名不正确");
            req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
            return;
        }
        if (!password.equals("123456")) {
            req.setAttribute("msg", "密码不正确");
            req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req, resp);
            return;
        }
        req.getSession().setAttribute("userName", userName);

        req.getRequestDispatcher("/WEB-INF/home.jsp").forward(req, resp);

        return;

    }
}

这里我们在servlet中写死用户名 admin 和密码123456 后续使用到jdbc的时候 再建表存入这些数据

登录成功后,将用户名 存入 session中,

将新写的servlet 配置到web.xml中

    <servlet>
        <servlet-name>indexServlet</servlet-name>
        <servlet-class>com.cgy.demos.web.servlet.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>indexServlet</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

<servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.cgy.demos.web.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

启动项目 并测试功能

在这里插入图片描述

故意输入错密码

在这里插入图片描述

登录成功后页面

在这里插入图片描述

我们的小图片也展示出来了

退出功能

在home.jsp页面新增 退出表单

代码如下

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="static/js/jquery-1.8.3.min.js"></script>
<title>Insert title here</title>
</head>
<body>
 <img src="static/img/userinfo.jpg" height="40" width="40" />:<font size="6px">${userName}</font>
<h1>欢迎进入IT技术学习系统</h1>



<form action="<%=request.getContextPath()%>/logout" method = "post">
<input type="submit" value="退出登录"/>

</form>
</body>
</html>

编写 LogoutServlet

package com.cgy.demos.web.servlet;

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


public class LogoutServlet 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.getSession().removeAttribute("userName");
               req.getRequestDispatcher("/WEB-INF/index.jsp").forward(req,resp);

    }
}

退出登录 将登录时放入session中的userName 数据清除,并转向到index.jsp

在web.xml中配置新的servlet

    <servlet>
        <servlet-name>logoutServlet</servlet-name>
        <servlet-class>com.cgy.demos.web.servlet.LogoutServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>logoutServlet</servlet-name>
        <url-pattern>/logout</url-pattern>
    </servlet-mapping>

启动项目并测试功能

在这里插入图片描述

点击退出登录 后跳转至登录页

在这里插入图片描述

下一节,我们讲解在登录页添加验证码

  • 0
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cgycro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值