使用jsp+javabean完成用户登陆功能

User.java

package com.po;

public class User implements java.io.Serializable {
    private String username;
    private String password;

    public User() {

    }

    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;
    }
}

UserDao.java

package com.dao;

import com.po.User;

// 用户的业务逻辑类
public class UserDao {
    public static boolean userLogin(User user) {
        if (user.getUsername().equals("admin") && user.getPassword().equals("admin")) {
            return true;
        } else {
            return false;
        }
    }
}

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">
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>welcome</title>
  </head>
  <body>
  <form action="checking.jsp" method="get">
    <input type="text" name="username" value="" placeholder="username">
    <input type="password" name="password" value="" placeholder="password">
    <%-- JavaBean的属性要与input标签的name保持一致,这样才能通过jsp:setProperty自动设置所创建对象的属性 --%>
    <input type="submit"/>
  </form>
  JSESSIONID=<%=request.getSession().getId()%>
  </body>
</html>

checking.jsp

<%@ page import="com.dao.UserDao" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>waiting</title>
</head>
<body>
    <jsp:useBean id="user" class="com.po.User" scope="page"/>
    <%-- 如果使用其它更大的作用域,会发现只要成功登陆一次,之后即使密码错误也能成功登陆 --%>
    <jsp:setProperty name="user" property="*"/>
    <%-- 请求重定是客户端行为,不会携带上一次请求的信息 --%>
    <%-- 请求分派是服务端行为,请求的信息会一直传递下去 --%>
    <%
        if (UserDao.userLogin(user)) {
            request.getRequestDispatcher("LoginSuccess.jsp").forward(request, response);
        } else {
            response.sendRedirect("LoginFailure.jsp");
        }
    %>
</body>
</html>

LoginFailure.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    登陆失败<br>
</body>
</html>

LoginSuccess.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    登陆成功<br>
</body>
</html>

【一些问题】

1、无法避免URL重写。。。

2、通过URL绕开登陆界面直接登陆。。。

【添加的小功能】

package com.status;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import java.util.Stack;

public class Online implements HttpSessionListener{
    private static Stack<String> online = new Stack<>();

    public static Stack<String> getOnline() {
        return online;
    }

    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        online.push(httpSessionEvent.toString());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        online.pop();
    }
}
<?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">
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>

    <session-config>
        <session-timeout>1</session-timeout>
    </session-config>

    <listener>
        <listener-class>
            com.status.Online
        </listener-class>
    </listener>
</web-app>
<%@ page import="com.status.Online" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    登陆成功<br>
    <hr>
    在线用户:<br>
    <%
        int i = 0;
        for (String user: Online.getOnline()) {
            out.print(++i + "、" + user + "<br>");
        }
    %>
</body>
</html>

事实上并不需要真正登陆,只要访问服务器下面的任何页面就算“在线”了。。。(因为这些行为都会导致JVM创建session)

时间: 2024-10-20 15:37:13

使用jsp+javabean完成用户登陆功能的相关文章

jsp应用-实现用户登陆功能

项目结构 1.login.jsp 这个没什么好说的,把表单提交到校验页面进行校验 2.首先获取request域中user,password,然后进行校验,校验成功把信息存入session域,然后转发到right.jsp页面 放入session域是为了防止不登录进去 3.在right,jsp获取用户名输出 4.需记住request------getParameter("") session--getAttribute("") 5.登陆页面至此结束 原文地址:https

Java Web学习(19):阶段项目之使用JSP+JavaBean完成用户登录

Model1简介 Java Web应用程序的开发总体上来说有两个模型就是Model1和Model2.Model1模型出现前,整个Web应用 的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.这样的弊端显露无 疑:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性特别差. JavaBean的出现可以使JSP页面中使用JavaBean封装的数据或者调用JavaBean的业务逻辑代码,这样大大提高 了程序的可维护性. Model

使用C#语言控制数据库,完成用户登陆功能

1. 数据库的创建 首先需要选择一个数据库管理工具,这里我们使用Navicat Premium作为我们的数据库管理工具,这款软件是需要下载安装的,安装完成之后需要记住你的账号和密码.我们使用mysql数据库作为我们使用的数据库,这也是需要我们下载安装的.当我们需要的软件都下载及安装完成之后我们就可以开始创建我们的数据库了. 第一步:创建一个连接,在Navicat右上角有一个连接选项,点击我们创建一个mysql数据库,然后会弹出这样一个窗口 自定义一个连接名,然后填写上主机的IP地址(如果用本机测

用java实现一个简单的单用户登陆功能的思路

引用 所谓"单用户单账户登录"是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A 处登录的账号. 要实现这样一个功能,如果我们项目使用了springmvc我们可以使用拦截器来替代过滤器,否则我们使用过滤器也可以实现,我们需要一个这样的东西来进行拦截用户的请求.我们的user表里也需要添加一个token字段,用于存放当前登录者的一个唯一标识. 大致的思路是这样的: 用户A

struts2+Hibernate实现用户登陆功能

实现的功能,在登陆页面输入Username和PassWord后,将username和password通过Hibernate匹对数据库是否含有一样的username和password,若有则登陆进去,若没有则返回到登陆页面 显示层 <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@taglib

jsp的session完成登陆功能

login.jsp: 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getSe

Session小案例------完成用户登陆

Session小案例------完成用户登陆 在项目开发中,用户登陆功能再寻常不过啦,当用户完成用户名和密码校验后,进入主界面,需要在主界面中显示用户的信息,此时用session来记住用户是最为合适不过了. 功能实现如下: 1,完成用户登陆功能 2,在主界面记住用户 3,完成用户注销功能 用户类: package cn.itcast.login; public class User{ private String username; private String password; public

017医疗项目-模块一:用户登录功能的实现

用户在登录页面上填好姓名和密码还有验证码实现登录. 实现的效果如下: 输入信息后成功. 具体做法代码如下: 我们还是从Dao层开始: 这里用到的Dao层的代码无非就是查名字,查密码什么的.之前就有的,这里的不用了. Service:这一层很重要: 先讲一下这一层要做的东西: 我们要做用户的登录验证. 1.根据传进来的id,去数据库查有没有这个用户,没有直接抛异常,有的话就继续下一步. 2.根据查到的用户sysuser.去查他的存在数据库里面的密码和我们在页面上的密码是不是一致的,一致的就继续,不

JavaWeb_(Spring框架)用户登陆Spring整合到Servlet中

一.使用servlet技术开发用户登陆功能 在MySQL中准备一个user表,表中增加一条假数据 使用Servlet实现用户登陆的功能 用户登陆的<from>表单 <form id="loginFrom" action="${pageContext.request.contextPath }/userLogin" method="post"> <div class="input-group input-gr