Java——使用Servlet写一个登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/whm18322394724/article/details/86444292

*前言

   Servlet是java开发web应用时使用的底层技术,最近几天尝试着用Servlet写了一个简单的登录,想对Servlet有个更深的认识。
   要求:使用jsp+servlet实现登录,浏览器登录后能够让登录信息保存在浏览器中。如何操作,详情请见文!

*基础环境

1、使用idea创建web项目

(1)、首先打开idea——>New Project——>选择Java——>勾选Java EE下的Web Application——>点击Next

在这里插入图片描述

(2)、选择项目存放的路径并填写项目名称
在这里插入图片描述
2、创建可以写代码的java类和jsp

(1)、在src下建一个包,然后再在包下建一个Servlet

在这里插入图片描述

(2)、在WEB-INF下创建两个写登录页和欢迎页的jsp。创建后的项目目录如下

在这里插入图片描述

3、配置Tomcat

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、引Servlet的包

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、尝试启动项目

  如果能加载出默认的index.jsp,此时证明基础环境配好了。如果想启动时加载login.jsp,下面需要配置web.xml

在这里插入图片描述

6、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <servlet>
        <servlet-name>Login</servlet-name>
        <servlet-class>login.Login</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Login</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>

*代码

1、登录页:login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <form action="login" method="post">
        <input type="text" name="name" value=""/>
        <input type="password" name="password" value="">
        <input type="submit" name="登录">
    </form>
</body>
</html>

2、欢迎页:welcoming.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <div style="font-size: 100px;color: red">
        欢迎您的访问!
    </div>
</body>
</html>

9、Servlet

package login;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/*
 @author wanghuamei
 @DESCRIPTION ${DESCRIPTION}
 @create 2019/1/15
*/
public class Login extends javax.servlet.http.HttpServlet {
    private Map<String,String> users=new HashMap<>();

    public Login() {
        super();
        users.put("w","w");
        users.put("y","y");
    }

    /**
     * 表单提交时使用post请求
     * 1、从request中获取用户名和密码
     * 2、判断用户名是否存在,密码是否正确
     * 3、正确:跳转“欢迎”界面,并将用户名和密码存入session中
     * 4、不正确:提示错误信息
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name=request.getParameter("name");
        String password=request.getParameter("password");
        //判断用户名是否存在
        if(users.containsKey(name)){
            //判断密码是否正确
            if(users.get(name).equals(password)){
                RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/welcoming.jsp");
                requestDispatcher.forward(request,response);
                request.getSession().setAttribute("name",name);
            }
        }
        response.getWriter().print("error name or password");
    }

    /**
     * get请求
     * 1、从session中获取用户名
     * 2、session中还存在保存的用户名:跳转“欢迎的界面”
     * 3、session中的用户名已经不存在:跳转“登录页”,让用户输入用户名和密码
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从session中获取用户名
        String name=(String)request.getSession().getAttribute("name");
        //用户名存在:跳转“欢迎界面”
        if(name!=null && name.length()>0){
            RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/welcoming.jsp");
            requestDispatcher.forward(request,response);
        }
        //不存在:跳转“登录页”
        RequestDispatcher requestDispatcher=request.getRequestDispatcher("/WEB-INF/jsp/login.jsp");
        requestDispatcher.forward(request,response);
    }
}

猜你喜欢

转载自blog.csdn.net/whm18322394724/article/details/86444292
今日推荐