JavaWeb简单登录案例

举报
运气男孩 发表于 2021/12/20 23:20:33 2021/12/20
【摘要】 开发环境:jdk 1.8开发工具:IDEA服务器:TomCat此次实现一个简单的登录功能,登录页面包含用户名和密码两个用户输入框,用户输入用户名和密码,正确则跳转到登录成功界面,并显示用户名;错误则显示登录失败。跳转这里使用重定向一共有4个页面,LoginServle.java SuccessServlet .java FailServlet.java 和前端界面login.jsp首先先来写...

开发环境:jdk 1.8

开发工具:IDEA

服务器:TomCat

此次实现一个简单的登录功能,登录页面包含用户名和密码两个用户输入框,用户输入用户名和密码,正确则跳转到登录成功界面,并显示用户名;错误则显示登录失败。跳转这里使用重定向

一共有4个页面,LoginServle.java SuccessServlet .java FailServlet.java 和前端界面login.jsp

首先先来写一下前端页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录首页</title>
</head>
<body>
<h1>登录首页</h1>
<form action="/loginServlet" method="post">   <%--表单数据将提交到loginServlet --%>
    用户名:<input type="text" name="username" placeholder="请输入用户名"><br>
    密&nbsp;码:<input type="password" name="password" placeholder="请输入密码"><br>
    <input type="submit" value="登录">

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

简单的输入框和密码框再加一个提交的登录按钮,这里的表单加了LoginServlet的映射,相当于点击提交之后,之间访问表单action的路径,找到LoginServlet.java,然后进行用户名和密码的简单校验。

接着来写一下LoginServlet.java

首先,肯定要获取从前端jsp传过来的用户名和密码吧

这里使用request.getParameter(),request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据;request.getParameter()方法返回String类型的数据。

所以下面我会用String类型来接收这个值,并将值存放在session域中,为了简单的模拟这个过程,就没有连接数据库,采用map集合的键值对形式来保持真实的用户名和密码,用equals方法判断两个值是否相等,相等则跳转登录成功的界面并显示用户名;失败则提示失败。


@WebServlet("/loginServlet")
public class LoginServlet 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 {
        //获取前端登录首页用户输入的数据
        String username = request.getParameter("username");//获取文本框名为name的文本框
        String password = request.getParameter("password");
        request.getSession().setAttribute("username",username);
        //没时间连接数据库,改用集合存放真实的用户名密码
        Map<String,String> map = new HashMap<>();
        map.put("username","admin");
        map.put("password","123");

        //校验用户输入的账号和密码
        if(map.get("username").equals(username) &&map.get("password").equals(password) ){
            //输入的用户名密码和真实的账号密码(admin,123)一样的话,则转发到welcomeServlet
            response.sendRedirect("/successServlet");
    }else{
            //登录失败则转发到failServlet
// 转发      request.getRequestDispatcher("/failServlet").forward(request,response);
        response.sendRedirect("/failServlet");//重定向

        }
    }
}

接着写登录成功的SuccessServlet.java

设置编码防止乱码就不用多说了,这里验证成功后,直接从session域中取出username的值,然后显示在页面上

@WebServlet("/successServlet")   //对应LoginServlet类里面转发的路径
public class SuccessServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().println("登录成功<br>");
       String s= (String) req.getSession().getAttribute("username");
       resp.getWriter().println("姓名:"+s);



    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}

FailServlet.java的就简单显示一下登录失败就行

@WebServlet("/failServlet")   //对应LoginServlet类里面转发的路径
public class FailServlet extends HttpServlet {


    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().println("登录失败");


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req,resp);
    }
}


注意:这里最重要的就是映射路径别写错了,@WebServlet("/")  层层对应的。

下面来看看简单的实现效果

好了,关于此次JavaWeb的简易登录就说到这里了,如有不足之处,欢迎指正!

感恩能与大家在华为云遇见!希望能与大家一起在华为云社区共同成长。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。