资讯专栏INFORMATION COLUMN

过滤器实栗 登录检测

leanxi / 504人阅读

摘要:项目结构代码如下登录接收内容接收内容保存返回信息用户不能为空密码不能为空报错信息为进行验证登录成功增加会话登录失败使用服务器端跳转保存数据对于登录的增加了过滤器如下首页过滤器转型因为默认的中未提供相关的方法需要向下转型获取到判断登录已经登

项目结构

![](https://melovemingming-125387...
)

代码如下 登录servlet
package com.ming.servlrt;


import com.ming.factory.DAOFactory;
import com.ming.vo.User;

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;
import java.util.ArrayList;
import java.util.List;

public class LoginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String path = "login.jsp";
        // 接收userid内容
        String userid = req.getParameter("userid");
        // 接收userpass内容
        String userpadd = req.getParameter("userpass");
        // 保存返回信息
        List info = new ArrayList();
        if(userid == null || "".equals(userid)){
            info.add("用户id不能为空");
        }
        if(userpadd == null || "".equals(userpadd)){
            info.add("密码不能为空");
        }
        // 报错信息为0进行验证
        if(info.size() == 0){
            User user = new User();
            user.setUserid(userid);
            user.setPassword(userpadd);
            try{
                if(DAOFactory.getIuserDAOInstance().findLogin(user)){
                    info.add("登录成功!" + user.getName());
                    // 增加session会话
                    HttpSession session = req.getSession();
                    session.setAttribute("id", userid);
                }else{
                    info.add("登录失败");
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        // 使用服务器端跳转, 保存数据
        req.setAttribute("info", info);
        req.getRequestDispatcher(path).forward(req, resp);
    }

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

对于登录的servlet增加了session

过滤器如下
package com.ming.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

// 首页过滤器
public class LoginFile implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 转型 因为默认的ServletRequest中未提供相关的方法,需要向下转型
        HttpServletRequest request = (HttpServletRequest)servletRequest;
        // 获取到session
        HttpSession session = request.getSession();
        // 判断登录
        if(session.getAttribute("id") != null){
            // 已经登录
            filterChain.doFilter(servletRequest, servletResponse);
        }else{
            // 跳转登录页登录
            request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }
}
配置文件如下



  Archetype Created Web Application
    
        LoginFile
        com.ming.filter.LoginFile
    
    
        LoginFile
        /index.jsp
    
    
        login
        com.ming.servlrt.LoginServlet
    
    
        login
        /loginServlet
    

jsp文件如下

涉及 前端的js验证
采用拦截click事件

<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %><%--
  Created by IntelliJ IDEA.
  User: ming
  Date: 19-3-16
  Time: 下午11:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


用户登录程序

<% List info = (List)request.getAttribute("info"); if(info != null){ Iterator iterator = info.iterator(); while(iterator.hasNext()){ %>

<%=iterator.next()%>

<% } } %>
用户id 密码

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73748.html

相关文章

  • jsp 实栗 jsp + jdbc 登录

    摘要:实栗实现登录实现思路一个表单页,输入用户登录和密码,然后信息提交到页面进行验证,如果可以服务器跳转到登录成功页,失败,跳转到错误页跳转的时候窗口的地址会发生变化代码如下编写登录代码登录登录登录操作用户登录登录登录密码登录重置登录处理 jsp 实栗 jsp + jdbc 实现登录 实现思路 一个表单页,输入用户登录和密码,然后信息提交到jsp页面进行验证,如果可以服务器跳转到登录成功页,...

    YacaToy 评论0 收藏0
  • 监听器实栗 在线人数统计

    摘要:实现思路常见的流程是标准的即登录表单用户提交数据到登录检查若登录检查通过以后触发事件保存进入在线人员列表中页面跳转到在线用户列表若用户注销从在线列表中删除代码如下使用集合即集合去重原因内部存储为的键值对为由于哈希表的特征即可去重项目结构 实现思路 常见的流程是,标准的mvc 即 登录表单,用户提交数据到登录检查,若登录检查通过以后,触发session事件,保存进入在线人员列表中,页面跳...

    CloudwiseAPM 评论0 收藏0
  • web开发模式

    摘要:显示层控制层数据层统一交给或者处理处理流程客户端发送到执行读取返回返回给在返回给在给客户端问题代码杂乱即方式客户端发送到然后执行用于读取控制器获取到读取的数据以后再次返回给生成文件给客户端分为显示层控制层模型层属于提供的分布式组件服务分 Model1 显示层,控制层,数据层,统一交给jsp或者javabean处理. 处理流程 客户端发送request 到 jsp jsp 执行java...

    ztyzz 评论0 收藏0
  • 基于RESTful API 怎么设计用户权限控制?

    摘要:原文链接基于怎么设计用户权限控制前言有人说,每个人都是平等的也有人说,人生来就是不平等的在人类社会中,并没有绝对的公平,一件事,并不是所有人都能去做一样物,并不是所有人都能够拥有。 原文链接:BlueSun | 基于RESTful API 怎么设计用户权限控制? 前言 有人说,每个人都是平等的;也有人说,人生来就是不平等的;在人类社会中,并没有绝对的公平,一件事,并不是所有人都能去做;...

    sumory 评论0 收藏0

发表评论

0条评论

leanxi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<