jsp开发基本数据设置应该放在哪里?例如:数据库的连接(用户名、密码等),我的目的就是想以后移置的时候只要改改配置就行,不用重新编译。
好像可以放在tomcat的配置文件里,但不知怎样取那里的数据,或是有没有其它方法,我想知道大家是怎么做的?万分感谢!

解决方案 »

  1.   

    数据库的话可以在tomcat配置数据源,具体可以看tomcat的帮助,里面有详细的例子。
    配完之后在web.xml里添加
      <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>配置的数据源名</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
      </resource-ref>具体可以参考下面这篇文章
    http://fanyingjie.bokee.com/5797206.html
      

  2.   

    to:siliconchip(初学编程)
    可不可以不用数据源,我想直接设置数据库、用户、密码。
      

  3.   

    to:galant2008(無賴)
    怎样设置,可不可以给出简单的例子,谢谢!
      

  4.   

    你可以这样来实现,做一个配置文件,然后连接数据库的时候去取这个配置文件的参数就可以了给你个例子修改成你需要的样式吧,注意,读取培植文件的类,无法用public static void main()调试,只能在服务器运行的时候调试培植文件放到class目录,link.ini,内容如下
    jdbc.dbDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    jdbc.dbUrl=jdbc:microsoft:sqlserver://localhost:1433
    jdbc.DatabaseName=stock
    jdbc.dbUser=sa
    jdbc.dbPassword=读取培植文件的类
    ackage db;import java.io.BufferedReader;
    import java.io.FileReader;
    import java.util.StringTokenizer;import bean.linkbean;public class getfilemessage { public getfilemessage() {

    }
    //取当前工程类的所在路径
    public String getpath(){

    String str=this.getClass().getClassLoader().getResource("/").getPath();
    str=str.substring(1,str.length());//因为上面取回来的路径的第一个字符是"/",所以把第一个字符去掉
    str=StrPlace(str,"%20"," ");//如果得到的路径中有空格,则将JSP路径中的20%转换成" "

    return str;
    }


    //取配置文件中的ODBC连接基本信息
    public linkbean readfile(){

    FileReader infile;
    BufferedReader in;
    String s=null;
    linkbean rs=new linkbean();
    boolean iflink=false;

    String path=getpath();
    try{
    infile=new FileReader(path+"/link.ini");
    in=new BufferedReader(infile);
    iflink=true;

    while ((s=in.readLine())!=null)
    {
    String Ftr=s;
    StringTokenizer gall=new StringTokenizer(Ftr,"=");
    String gtstr=gall.nextToken();//取"="前面的所有值

    if (gtstr.equals("jdbc.dbDriver"))
    {
    rs.setDbDriver(gall.nextToken());
    }

    if (gtstr.equals("jdbc.dbUrl"))
    {
    rs.setDbUrl(gall.nextToken());
    }

    if (gtstr.equals("jdbc.DatabaseName"))
    {
    rs.setDatabaseName(gall.nextToken());
    }

    if (gtstr.equals("jdbc.dbUser"))
    {
    rs.setDbUser(gall.nextToken());
    }

    if (gtstr.equals("jdbc.dbPassword"))
    {
    rs.setDbPassword(gall.nextToken());
    }
    }
    }catch(Exception e){

    }

    if (iflink==false)
    {
    System.out.println("配置文件连接失败");
    }

    return rs;
    }
    /*
     * 转换字符串:将str字符串中含有str1的字符串,转换成str2
     * 提供参数str,str1,str2
     * 返回String
     */
    private synchronized String StrPlace(String str, String str1, String str2) {
            
    String ret_str = "";
            int loc=0, len=str1.length();
            
            for (int i=0; i<str.length(); i++) 
            {
                int j=str.indexOf(str1, loc);
                if (j>=0) 
                {
                    ret_str += str.substring(loc, j)+str2;
                    loc=j+len;
                    i=j;
                }
            }
            
            if (loc < str.length()) 
            {
                ret_str += str.substring(loc, str.length());
            }        return ret_str;
        }}
    数据库连接类
    package db;import java.sql.*;import bean.linkbean;
    public class dbconnect{

    Connection con;

    public dbconnect(){

    String dbDriver=null;
    String dbUrl=null;
    String DatabaseName=null;
    String dbUser=null;
    String dbPassword=null;

    try{
    getfilemessage gf=new getfilemessage();
    linkbean lb=gf.readfile();
    dbDriver=lb.getDbDriver();
    dbUrl=lb.getDbUrl();
    DatabaseName=lb.getDatabaseName();
    dbUser=lb.getDbUser();
    dbPassword=lb.getDbPassword();
    }catch(Exception e){

    }


    if (dbPassword==null)
    {
    dbPassword="";
    }

    boolean f=false;

    try{
    String SERVANDDB=dbUrl+";DatabaseName="+DatabaseName;
    Class.forName(dbDriver);
    con = DriverManager.getConnection(SERVANDDB,dbUser,dbPassword);
    f=true;
    }catch(Exception e){
    System.out.println("dbconnect.dbconnect():"+e);
    }

    if (f==false)
    {
    System.out.println("数据库连接失败");
    }
    }

    public Connection link(){
    return con;
    }
    }
      

  5.   

    你可以做一个db.property的属性文件
    里面设置:
    drivers = oracle.jdbc.driver.OracleDriver
    url=jdbc:oracle:thin:@192.168.1.211:1521:spserver
    user = yxtsp
    password = oracle
    maxconn = 2
    minconn = 1
    defconn = 1然后你取得数据库连接的class里面读取配置文件里面的配置信息就OK了.
    FileInputStream is=new FileInputStream("db.properties");
    Properties dbProps = new Properties();
    dbProps.load(is);
    String driverClasses = dbProps.getProperty("drivers");
      

  6.   

    to:Sunny319(努力学习java中.) 
    不好意思,我想问一下,property属性文件应该放在哪里?我刚学习jsp
      

  7.   

    web程序的话可以把db.property放在web-inf下面,或者放在src目录下,这2个路径都在classpath里,应该都能取到的
      

  8.   

    to:Sunny319(努力学习java中.) import java.io.*;
    import java.util.*;FileInputStream is=new FileInputStream("db.properties");  //这里出错了
    Properties dbProps = new Properties();
    dbProps.load(is); //这里出错了
    String driverClasses = dbProps.getProperty("drivers");