我有编程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>
具体来说,是什么告诉应用程序登录好坏?单击按钮时由什么处理事件?
感谢您的耐心配合和帮助!
通读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指示认证信息在关系数据库中,等等)。
<Realm>
META- INF/context.xml
conf/server.xml
<Context>
conf/tomcat-users.xml
DataSource
JDBC
规范不涵盖“领域”内容。为此,您必须参考Tomcat文档,或一般地加入Tomcat用户列表和社区。