关键词:
【中文标题】在 JSP 中实现登录页面的优雅方式【英文标题】:Elegant way to implement Login page in JSP 【发布时间】:2012-03-09 06:35:29 【问题描述】:我是 JSP Web 开发的初学者。我的 webapp 有一个登录 (Login.jsp) 页面,该页面具有标准登录控件(例如,用户名、密码文本框、记住我复选框和登录按钮)我想要获得的是当用户提供凭据时,提交后详细信息,调用 Authenticate.jsp,其中凭据与数据库匹配,如果它们正确,则为该用户创建会话,如果凭据不正确。我使用response.sendRedirect("./Login.jsp?status=fail");
将用户重定向回登录页面
在 Login.jsp 上,始终检查 status
参数,当它给出值 fail
时,我在带有消息 User Name or Password Incorrect!
的文本框下方有 <div>
,在此类失败时向用户显示。通过 URL 发送此类参数是否安全(出于特定目的)?什么是更合适或标准的方式来实现这样的事情?另外,当用户第一次访问登录页面时,寻找status
参数会抛出NullPointerException
。我有完整的 Login.jsp 代码来检查下面的参数。
try
String stat = request.getParameter("Status");
if(stat.equalsIgnoreCase("fail"))
msg = "Invalid Username or Password!";
else
msg = " ";
catch(NullPointerException e)
msg = " ";
catch(Exception e)
out.println(e);
正如我提到的,msg
字符串对象被写入<div>
。因此,如果没有找到status
参数,则假定用户是第一次访问该页面,因此不会显示错误凭据的消息。
我觉得这可能不是在实际系统中实现的方式。
纠正我。
谢谢。
注意:在网络上搜索相同的查询时,他们中的大多数都有不同的 JSP 页面来表示登录失败,而我只想保留一个页面。
【问题讨论】:
【参考方案1】:在进行专业开发时,您最好使用安全框架。 Apache Shiro 和 Spring Security 都非常适合在您的项目中实施安全性。
【讨论】:
我浏览了 Apache Shiro 的概述,我一定会尝试一下。但我正在寻找一种无需任何第三方框架即可使用的解决方案,仅使用 Java EE API 即可完成。 如果你不使用框架,你最终会为现实世界的应用程序做很多工作【参考方案2】:在您的代码中String stat = request.getParameter("Status");
stat
将永远是 NULL
访问 Login.jsp
时。这不是正确的实现方式。
始终建议在您拥有JSP
的地方实现MVC
模式以进行演示和查看。 Servlets
重定向请求,Beans
作为模型。
这里有更多解释...
1) 关注点分离 (SoC)。让您的视图 (jsp) 处理呈现,控制器 (servlet) 处理应用程序的流程,以及您在另一组类中的所有处理。这将是 MVC 的基础。这是一个简单布局的***定义。
Model - The model is a collection of Java classes that form a software application
intended to store, and optionally separate, data. A single front end class that can
communicate with any user interface (for example: a console, a graphical user interface,
or a web application).
View - The view is represented by a Java Server Page,
with data being transported to the page in the HttpServletRequest or HttpSession.
Controller - The Controller servlet communicates with the front end of the model and loads the HttpServletRequest or HttpSession with appropriate data,
before forwarding the HttpServletRequest and Response to the JSP using a RequestDispatcher.
您应该创建一个从 Login.jsp
调用的 Servlet,然后从请求中获取参数,然后检查凭据。然后在验证凭据后执行维护会话等任务。如果提供了错误的凭据,则从 servlet 重定向到带有参数的 Login.jsp
,或者在用户通过身份验证后重定向到其他页面。
【讨论】:
您能否提供资源,让我可以详细了解它应该如何实现?在 C++ 聚合类中实现调用多路复用的优雅方式?
】在C++聚合类中实现调用多路复用的优雅方式?【英文标题】:ElegantwayofimplementingcallmultiplexinginaC++aggregateclass?【发布时间】:2011-08-2912:12:55【问题描述】:当多路复用对许多子对象的调用时,防止循环样板代码的优雅方法是什... 查看详情
如何在 servlet jsp 中实现生产就绪登录注销功能
】如何在servletjsp中实现生产就绪登录注销功能【英文标题】:howtoimplementproductionreadyloginlogoutfunctionalityinservletjsp【发布时间】:2017-10-1110:31:28【问题描述】:我的问题很简单——如何在servletjsp中实现login-logout?以下是用例...我... 查看详情
如何在 Wordpress 中实现我的自定义登录页面?
】如何在Wordpress中实现我的自定义登录页面?【英文标题】:HowcanIimplementmycustomlandingpageintoWordpress?【发布时间】:2021-06-2018:52:59【问题描述】:我目前正在从事一个在Docker上的Node.js上运行的项目。为此,我使用Bootstrap构建了一... 查看详情
如何在 JSF 中实现登录过滤器?
】如何在JSF中实现登录过滤器?【英文标题】:HowimplementaloginfilterinJSF?【发布时间】:2012-01-1818:55:18【问题描述】:即使用户知道某些页面的url,我也想阻止某些页面的访问。例如/localhost:8080/user/home.xhtml(需要先登录)如果没... 查看详情
java示例代码_在web应用程序中实现HTTPS登录页面
java示例代码_在web应用程序中实现HTTPS登录页面 查看详情
Vue.js:在 laravel 中实现 MPA(多页面应用程序)的最佳方式
】Vue.js:在laravel中实现MPA(多页面应用程序)的最佳方式【英文标题】:Vue.js:BestwaytoimplementMPA(Multipageapp)inlaravel【发布时间】:2018-06-2218:16:16【问题描述】:我已经四处寻找了很长一段时间,但没有得到任何召集。在laravel中实... 查看详情
如何在 Grails 中实现超时页面
】如何在Grails中实现超时页面【英文标题】:HowtoimplementatimeoutpageinGrails【发布时间】:2011-10-2600:59:52【问题描述】:我需要一些帮助来处理Grails应用程序中的超时问题。上下文:在我的Grails应用程序中,我显示了敏感信息。显... 查看详情
html返回登录前页面
...过html代码实现登录以后跳转到登录前的页面;在html页面中实现而不是在Page_Load中实现输出可以在点登录的前一个页面点击时传一个值,如login.php?url="123.html"login.php里面用$_GET[\'url\'];获得之前的页面的URL,登录成功之后输入出echo... 查看详情
在 Angular 中实现 OAuth 2.0 授权代码授予
】在Angular中实现OAuth2.0授权代码授予【英文标题】:ImplementingOAuth2.0AuthorizationcodegrantinAngular【发布时间】:2019-07-0705:53:42【问题描述】:我们必须在我的客户项目中集成OAuth2.0授权码授予。目前,该应用程序使用本机登录页面。... 查看详情
用servlet与jsp中实现分页查询
这个题目,总共分4个部分1.查询总页数,把页码显示在页面上2.把每页的内容显示在页面上3.首页,尾页,上一页,下一页4.下拉列表中的页数,(根据页数变动,选中第几页提交到第几页)详解如下:(一部分代码在servlet中,... 查看详情
.netcore中实现h5微信登录(静默授权方式)(代码片段)
需求假设现在有一个H5需要有微信登录、手机号登录、邮箱登录三种登录方式。让我们一起来看看微信登录如何实现吧界面:最终实现的效果图(登录成功后返回个人页):因为微信登录目前没有实现移动端的其他浏览器授权登录... 查看详情
如何在优雅地spring中实现消息的发送和消费
本文将对rocktmq-spring-boot的设计实现做一个简单的介绍,读者可以通过本文了解将RocketMQClient端集成为spring-boot-starter框架的开发细节,然后通过一个简单的示例来一步一步的讲解如何使用这个spring-boot-starter工具包来配置,发送和... 查看详情
如何在 Angular 4 中实现 google auth 登录
】如何在Angular4中实现googleauth登录【英文标题】:Howtoimplementthegoogleauthlogininangular4【发布时间】:2019-01-1600:46:58【问题描述】:我是Angular的新手,我坚持使用google登录。我创建了一个按钮,单击它不会将我重定向到谷歌登录页... 查看详情
如何在 VueJS 中实现 Google 登录 API?
】如何在VueJS中实现Google登录API?【英文标题】:howtoimplementGoogleLoginAPIinVueJS?【发布时间】:2018-11-1900:40:47【问题描述】:所以我使用的是来自https://developers.google.com/identity/sign-in/web/的指南和代码当我点击按钮时,它工作正常,... 查看详情
如何在登录系统中使用会话并在codeigniter中实现注销
】如何在登录系统中使用会话并在codeigniter中实现注销【英文标题】:howtousesessioninloginsystemandimplementlogoutincodeigniter【发布时间】:2015-11-0522:49:09【问题描述】:codeigniter的新手正在学习它并坚持使用codeigniter的会话。我正在开发... 查看详情
如何在一个form表单中实现多个submit
Asweallknow,通过设置inputtype=“submit”,我们可以把form表单中的值通过post方式传递给action所指向的页面。下图中,我们可以把userName,userAge,userSex这三个值传递到xxx.jsp<formaction="xxx.jsp"method="post"> &nb 查看详情
如何在jsp页面中实现对数据库的增删查改?
在JSP页面中使用AJAX,通过URL跳转到Spring的控制层完成相应增删查改业务。如何将控制层取得结果返回到当前JSP页面中并显示出来!前端JS,AJAX,后端SpringMVC,数据库用的MySQL。运行工具Eclipse以下是部分代码首先我觉得你的问题不太... 查看详情
如何在我的项目中实现 Grails 的 Shiro 安全性
】如何在我的项目中实现Grails的Shiro安全性【英文标题】:howtoimplementShiroSecurityofGrailsinmyProject【发布时间】:2011-08-1411:55:53【问题描述】:我是Grails的新手,使用了一些Shiro安全性。我创建了一个带有登录页面的小网站,如果登... 查看详情