java登陆页面

news/2024/7/7 20:54:08 标签: servlet

当设计一个Java Web应用的登录页面时,逻辑思路通常包括以下几个步骤,这些步骤并不直接涉及代码,而是描述了整个流程的概念设计:

  1. 页面设计
    • 设计登录页面的用户界面,包括用户名和密码输入框、登录按钮、可能的验证码输入框、注册链接等。
    • 确保页面布局清晰、友好,易于用户理解和操作。
  2. 前端验证(可选):
    • 在用户提交表单之前,可以使用JavaScript进行前端验证,例如检查用户名和密码是否已填写,密码是否符合规定的格式等。
    • 前端验证虽然不是必须的,但可以提升用户体验,减少不必要的服务器请求。
  3. 表单提交
    • 当用户点击登录按钮后,表单数据(用户名和密码)将被发送到服务器。
    • 表单可以通过HTTP的POST方法提交,以确保数据的安全性。
  4. 后端接收请求
    • Java Servlet或Spring MVC等后端框架将接收来自前端的HTTP请求,并解析请求中的参数(即用户名和密码)。
  5. 后端验证
    • 在服务器端,对接收到的用户名和密码进行验证。
    • 这通常涉及查询数据库中的用户信息,比对用户名和密码是否匹配。
    • 还可以在此阶段进行其他验证,如检查用户是否已被禁用、是否需要重置密码等。
  6. 处理验证结果
    • 如果用户名和密码匹配,验证成功,服务器将生成一个会话(session)或令牌(token),并将其返回给客户端。
    • 客户端在后续的请求中携带这个会话或令牌,以证明其已登录状态。
    • 如果验证失败,服务器将返回一个错误消息给客户端,提示用户重新输入或进行其他操作(如找回密码)。
  7. 重定向或响应
    • 验证成功后,服务器可以将用户重定向到受保护的资源页面或主页。
    • 验证失败时,服务器可以在当前页面显示错误消息,或者将用户重定向回登录页面。
  8. 会话管理
    • 服务器需要跟踪和管理用户的会话,以确保用户在登录状态下能够访问受保护的资源。
    • 当用户退出登录或会话过期时,服务器需要清除会话信息,并确保用户无法再访问受保护的资源。
  9. 安全性考虑
    • 在整个登录过程中,需要考虑多种安全性因素,如防止SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。
    • 使用HTTPS协议来保护数据传输过程中的安全性。
    • 对密码进行哈希存储,并在验证时比对哈希值,而不是明文密码。
  10. 日志记录
    • 记录登录活动的日志,以便后续审计和故障排查。
    • 记录成功和失败的登录尝试,以及任何异常或可疑行为。

实现一个简单的登陆页面 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
    <form action="firstServlet" method="post" >
    <div>
        <label>学号:<input type="text" name="xuehao" placeholder="输入您的学号" required></label><br>
        <label>姓名:<input type="text" name="name" placeholder="输入您的姓名" required></label>
    </div>
    <input  type="submit" value="提交">
    <input  type="reset" value="取消">
    </label>
    </form>
</body>
</html>

返回参数:

package Se;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "firstServlet", value = "/firstServlet")
public class firstServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");


        String XueHao = request.getParameter("xuehao");
        String name= request.getParameter("name");
        String school="广西外国语学院";
        String major="计算机科学与技术";

        request.setAttribute("xuehao",XueHao);
        request.setAttribute("name",name);
        request.setAttribute("school",school);
        request.setAttribute("major",major);
        request.getRequestDispatcher("/secondServlet").forward(request, response);
    }
}

跳转页面:

package Se;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "secondServlet", value = "/secondServlet")
public class secondServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");


        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE html>");
        out.println("<html><head>");
        out.println("<meta charset=\"UTF-8\">");
        out.println("<title>"+"信息"+"</title></head>");
        out.println("<body>");
        out.println("<table border=\"1\">");
        out.println("<tr>");
        out.println("<th>"+"学校:"+"</th>");
        out.println("<th>"+"专业:"+"</th>");
        out.println("<th>"+"姓名:"+"</th>");
        out.println("<th>"+"学号:"+"</th>");
        out.println("</tr>");
        out.println("<tr>");
        out.println("<td>"+ request.getAttribute("school")+"</td>");
        out.println("<td>"+ request.getAttribute("major")+"</td>");
        out.println("<td>"+ request.getAttribute("xuehao")+"</td>");
        out.println("<td>"+ request.getAttribute("name")+"</td>");
        out.println("</tr>");
        out.println("</table>");
        out.println("</body>");
        out.println("</html>");
    }
}


http://www.niftyadmin.cn/n/5535227.html

相关文章

搜维尔科技:我们使用OptiTrack光学捕捉系统结合Manus VR手套制作了一些作品

搜维尔科技&#xff1a;我们使用OptiTrack光学捕捉系统结合Manus VR手套制作了一些作品 搜维尔科技&#xff1a;我们使用OptiTrack光学捕捉系统结合Manus VR手套制作了一些作品

vue3+vite+nodejs,通过接口的形式请求后端打包(可打包全部或指定打包组件)

项目地址https://gitee.com/sybb011016/test_build 打包通过按钮的形式请求接口&#xff0c;让后端进行打包&#xff0c;后端使用express-generator搭建模版。前端项目就在npm init vuelatest基础上添加了路由 如果只想打包AboutView组件&#xff0c;首先修改后端接口。 //打…

d88888888

分析&#xff1a;v9999999999 vn输出n个n 先算出n的位数p 所以答案是nn*10的p次方n*10的2p次方.....n*10的&#xff08;n-1&#xff09;p次方 化简n*&#xff08;10的0次方10的p次方10的2p次方.....10的&#xff08;n-1&#xff09;p次方&#xff09; 后面为等比数列求和 …

前端三件套开发模版——产品介绍页面

今天有空&#xff0c;使用前端三件套html、css、js制作了一个非常简单的产品制作页面&#xff0c;与大家分享&#xff0c;希望可以满足大家应急的需求。本页面可以对产品进行“抢购”、对产品进行介绍&#xff0c;同时可以安排一张产品的高清大图&#xff0c;我也加入了页面的背…

数据结构底层之HashMap(面经篇1)

1 . 讲一下hashmap的数据结构 HashMap是一种基于哈希表实现的数据结构&#xff0c;通常用于关联键值对&#xff0c;其中键是唯一的&#xff0c;而值可以重复。在Java中&#xff0c;HashMap是java.util.Map接口的一个实现&#xff0c;它提供了快速的查找、插入和删除操作。 数据…

Ueditor中集成135编辑器

一、背景 在资讯项目平台运营过程中&#xff0c;资讯需要排版&#xff0c;一般都是在135编辑器排好以后&#xff0c;复制到平台中UEditor编辑器中&#xff0c;所以&#xff0c;他们建议集成一下135哈 二、了解135编辑器 开始调研了解135编辑器&#xff0c;发现人家就支持集成…

HarmonyOS ArkUi Tabs+TabContent+List实现tab吸顶功能

Demo效果 Entry Component struct StickyNestedScroll {State message: string Hello WorldState arr: number[] []scroller new Scroller()StyleslistCard() {.backgroundColor(Color.White).height(72).width("100%").borderRadius(12)}build() {Scroll(this.sc…

记录通过Cloudflare部署属于自己的docker镜像源

引言 由于最近国内无法正常拉取docker镜像&#xff0c;然而找了几个能用的docker镜像源发现拉取回来的docker镜像不是最新的版本&#xff0c;部署到Cloudflare里Workers 和 Pages&#xff0c;拉取docker 镜像成功&#xff0c;故记录部署过程。 部署服务 登录Cloudflare后&…