【发布时间】:2013-05-21 12:52:15
【问题描述】:
我正在使用 JSP 和 Servlets 开发一个 Web 应用程序。(数据库:Oracle10,容器:Glassfish)。
我开发了一个用于创建连接的类。
(Conn.java):
public class Conn
{
private Connection con = null;
public Connection getCon()
{
String home = System.getProperty("user.home");
home = home+"\\dbFile.properties";
//Read properties of Connection String from that file and Create Connection
return con;
}
}
然后我还有 4 个用于 SELECT、INSERT、UPDATE、DELETE 事务的其他类,它们使用上面的 Conn.java 类来获取连接:
(Select.java)
public class Select
{
private Conn connection = new Conn();
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs=null;
public String[][] selectData(String query)
{
String[][] data=null;
if(con==null)
{
con = connection.getCon();
}
//execute query put data in two dimensional array and then return it
return data;
}
}
INSERT、UPDATE 和 DELETE 的编码方式与上述类似,Select.java 的编码方式。
所以在所有 servlet 中,我只使用这 4 个(SELECT、INSERT、UPDATE、DELETE)类,将查询传递给它们并获取结果。
示例 Servlet
public class SampleServ extends HttpServlet
{
Select select = new Select();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String data[][];
data = select.selectData(QUERY_GOES_HERE);
//AND OTHER CODE
}
}
它工作得很好,但现在我们的要求是在用户登录后更改Database String。所以我想将User specific 属性文件名传递给Conn.java 类。因此,我将属性文件名存储在cookie。
我想到了一种方法:
- 获取所有 servlet 中的 cookie 值
- 将 cookie 值传递给
selectData()类的selectData()方法并从该类传递 - 将cookie值传递给
Conn.java类的getConn()方法
所以我想知道是否有更好的方法将此连接字符串文件名传递给Conn.java 类?
提前致谢。
【问题讨论】:
-
HttpSession 处理与会话相关的信息。通常,您会将您的用户信息存储在那里,并让服务器处理其存储方式的详细信息。
-
@SJuan76 是的 HttpSession 是正确的方法,但我正在使用 Cookies 在同一服务器上部署的所有 Web 应用程序共享 USERID
标签: java jsp servlets connection