2014-01-16 133 views
0

我正在设计一个小应用程序,它接受数据库用户名和密码,连接到Oracle数据库,接受记录并使用servlet将其放入数据库。将连接对象从一个servlet传递到另一个servlet

我有一个接受用户名和密码的servlet,进行数据库连接,然后重定向到另一个页面。在此页面上,记录值被接受。在这里,我想插入到数据库中,但我没有连接对象。有什么方法可以将连接对象传递给这个新的servlet吗?

或者我应该使用不同的方法,如验证用户名和密码,使用setAttribute保存它们,然后在第二个servlet中建立连接?

我对web编程和servlets是全新的,所以任何帮助都会很棒,谢谢!

+0

将连接对象保存为'ServletContext'作为属性。它将对每个servlet都可见。 –

+0

不要建立新的连接。重新使用相同的连接。写入你的'ContextListener'。在那里创建一个连接。将连接存储在ServletContext属性中。 –

+0

是的,这有效。非常感谢你! –

回答

1

HTTP重定向会像新的页面请求一样查找服务器。保持来自同一用户的页面请求之间的连续性的方式是使用会话。在Java中,您可以从传递给servlet的servlet请求对象获取会话对象。

要完成您所要求的功能,您可以将数据库连接存储在会话中。但是,由于重定向可能并非因为各种原因而实际发生,这可能会使数据库连接无限期地打开,这是一个坏主意。

更好的办法是将数据库凭据存储在会话中,而不是打开数据库连接。然后,当重定向进入时,处理重定向的servlet可以打开一个新的数据库连接,存储所需的值,提交并关闭连接。

+0

是的,我也想到了。但之后,我无法验证第一个servlet中的凭据。 除非我验证它,关闭连接,存储凭据,然后在第二个servlet中打开一个新的连接。 虽然这是个好主意吗? –

+0

如果您确实想要验证第一个servlet中的凭据,那么这是一个合理的方法。 –

相关问题