一尘不染

基于表单的身份验证

jsp

我有编程Java应用程序的经验,但是从来没有任何Web应用程序,因此xml对我而言相对较新。我在研究中学到了很多东西,但是目前我很困惑,希望大家能帮助我。

背景信息:我工作的公司聘请了承包商来开发库存软件。开发人员选择在公司的Intranet上创建一个Web应用程序(根本不连接到Internet)。几个月后,经过了几次修改,开发人员出于未知原因(至少对我而言)退出了该项目。因此,这里我使用.war文件进行反向工程,然后完成项目!

根据Netbeans,我已经配置了Tomcat和MS SQL
Server,并且所有连接都很好。我可以部署该应用程序,但是这是我遇到的困难。index.jsp包含一个login.jsp。查看这些页面的代码让我感到困惑。

尽我所知,开发人员正在使用基于表单的身份验证,以便在登录时确定用户角色。我完全不了解这段代码如何重定向到任何页面,更不用说什么了:

<form method="POST" action='<%= response.encodeURL("j_security_check") %>' >
    <table border="0" cellspacing="5">
    <tr>
        <td>
            Username:<br>
            <input type="text" name="j_username" style="width: 200px;">
        </td>
    </tr>
    <tr>
        <td>
            Password:<br>
            <input type="password" name="j_password" style="width: 200px;">
        </td>
    </tr>
    <tr>
        <td><br></br><input type="submit" value="Log In" class="buttonStyle"> <input type="reset" class="buttonStyle"></td>
    </tr>
    </table>
</form>

具体来说,是什么告诉应用程序登录好坏?单击按钮时由什么处理事件?

感谢您的耐心配合和帮助!


阅读 208

收藏
2020-06-10

共1个答案

一尘不染

通读Java
Servlet规范
,特别是第13.6.3节。读规范听起来很吓人,但是Java
Servlet规范是我读过的最易读的书之一:它是由程序员而非律师阅读的。

快速摘要是,当用户尝试访问受保护的页面(尚未经过身份验证)时,将向他们显示登录页面。“提交”按钮将用户名和密码发布到执行身份验证(检查用户名/密码)的servlet容器(Tomcat),然后返回登录页面(如果用户名/密码不正确)或将用户重定向回到他们最初请求的受保护页面。

这里发生的事情并不明显,因为容器(Tomcat)正在为您处理它。阅读规范(实际上是整个过程)将使您对一切工作原理有深刻的了解,并使您更好地准备接受已继承的代码。

EDT更新2014-10-22 13:45

要确定执行的身份验证类型,您需要<Realm>在Web应用程序的META- INF/context.xml文件中或conf/server.xml嵌套在Web应用程序的<Context>元素内的Tomcat的元素中查找一个元素。它将指示正在使用的领域的类型(通常为的“内存”
conf/tomcat-users.xml,或DataSource/ JDBC指示认证信息在关系数据库中,等等)。

规范不涵盖“领域”内容。为此,您必须参考Tomcat文档,或一般地加入Tomcat用户列表和社区。

2020-06-10