学习使用session来实现简单的登录与注销

Session实现登陆注销中遇到的问题

  • 代码
  • 问题

这次因为要写一个输入输出功能,所以就先学习了简单的例子,但是在这之中还是出现了很多问题!!

代码

1、先创建一个静态html界面作为登陆界面
index.html

<!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>登陆界面</title>
</head>
<body>
<form action="http://localhost:8080/Servlet_war_exploded/Servlet/LoginServlet" method="post">
    帐号:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><br>
    <input type="submit" value="登录">

</form>
</body>

2、创建一个登陆功能的servlet

package servlet;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

import static java.lang.Thread.sleep;

public class LoginServlet extends HttpServlet {

    /**
     * @category 使用Session处理用户登陆
     * @author Bird
     */
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();



        String username = request.getParameter("username");
        String password = request.getParameter("password");

        List<User> list = Db.getAll();
        for(User u: list){
            if(u.getUsername().equals(username) && u.getPassword().equals(password)){
                request.getSession().setAttribute("user", u);//登录成功,将用户数据放入到Session中
                response.sendRedirect("http://localhost:8080/Servlet_war_exploded/jsp/index.jsp");
                return;//进行重定向,并且下面的代码不再执行
            }
        }
          out.write("<script language='javascript'>alert('error');window.location.href='http://localhost:8080/Servlet_war_exploded/index.html';</script>");

//        out.write("您的用户名或密码错误");


    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request,response);
    }

}


3、创建一个简单的数据库
DB.java

package servlet;

import java.util.ArrayList;
import java.util.List;

class Db{
    public static List<User> list = new ArrayList<User>();
    static{
        list.add(new User("aaa","123"));
        list.add(new User("bbb","123"));
        list.add(new User("ccc","123"));
    }

    public static List<User> getAll(){
        return list;
    }
}

4、创建一个User类
User.java

package servlet;

/**
 * @category 封装用户的数据的对象
 * @author Bird
 *
 */
public class User {
    private String username;
    private String password;


    public User() {

    }
    public User(String username, String password) {

        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

5、注销代码

package servlet;

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 LoginOutServlet extends HttpServlet {

    /**
     * @category 退出登录的Servlet,注销
     * @author Bird
     */
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(false);//防止创建Session
        if(session == null){
            response.sendRedirect("http://localhost:8080/Servlet_war_exploded/jsp/index.jsp");
            return;
        }

        session.removeAttribute("user");
        response.sendRedirect("http://localhost:8080/Servlet_war_exploded/index.html");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

    }

}

最后是要进入的页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


    <title>My JSP 'index.jsp' starting page</title>

</head>

<body>
欢迎您,${user.username}<br>
<a href="http://localhost:8080/Servlet_war_exploded/Servlet/LoginOutServlet">退出登录</a>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

到这就实现了简单的登录登出功能了。

遇到的问题

在这之中遇到了很多问题,发现页面的定向也不对,方法调用也出了问题。最后发现问题都是在跳转的时候链接地址的错误,或者是启动页面的错误。所以认真修改url路径,看好自己要去的地方到底是哪里,就可以很好的解决问题了!!
收获虽然不多,但是也是一个很好的学习过程了。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值