提升JSP应用程序的7大绝招(转帖)

提升JSP应用程序的7大绝招(转自:http://www.weste.net/2005/1-10/15174728409.html)

作者:陶国强 罗小虎 发布时间:2005-1-10 15:17:47 | 【字体:大 中 小】

枪战系列

    你时常被客户抱怨JSP页面响应速度很慢吗?你想过当客户访问次数剧增时,你的WEB应用能承受日益增加的访问量吗?本文讲述了调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的趋势。在本文中,我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中,某些调优技术是在你的编程工作中实现的。而另一些技术是与应用服务器的配置相关的。在本文中,我们将详细地描述怎样通过调整servlet和JSP页面,来提高你的应用程序的总体性能。在阅读本文之前,假设你有基本的servlet和JSP的知识。

  方法1:在servlet的init()方法中缓存数据

  当应用服务器初始化servlet实例之后,为客户端请求提供服务之前,它会调用这个servlet的init()方法。在一个servlet的生命周期中,init()方法只会被调用一次。通过在init()方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,就可大大地提高系统性能。

  例如,通过在init()方法中建立一个JDBC连接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库连接,在通常的情况下,我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQL请求都要执行一次JNDI查询的话,那系统性能将会急剧下降。解决方法是如下代码,它通过缓存DataSource,使得下一次SQL调用时仍然可以继续利用它:

public class ControllerServlet extends HttpServlet

{

 private javax.sql.DataSource testDS = null;

 public void init(ServletConfig config) throws ServletException

 {

  super.init(config);

  Context ctx = null;

  try

  {

   ctx = new InitialContext();

   testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");

  }

  catch(NamingException ne)

  {

   ne.printStackTrace();

  }

  catch(Exception e)

  {

   e.printStackTrace();

  }

 }

 public javax.sql.DataSource getTestDS()

 {

  return testDS;

 }

 ...

 ...

}

  方法 2:禁止servlet和JSP 自动重载(auto-reloading)

  Servlet/JSP提供了一个实用的技术,即自动重载技术,它为开发人员提供了一个好的开发环境,当你改变servlet和JSP页面后而不必重启应用服务器。然而,这种技术在产品运行阶段对系统的资源是一个极大的损耗,因为它会给JSP引擎的类装载器(classloader)带来极大的负担。因此关闭自动重载功能对系统性能的提升是一个极大的帮助。

  方法 3: 不要滥用HttpSession

  在很多应用中,我们的程序需要保持客户端的状态,以便页面之间可以相互联系。但不幸的是由于HTTP具有天生无状态性,从而无法保存客户端的状态。因此一般的应用服务器都提供了session来保存客户的状态。在JSP应用服务器中,是通过HttpSession对像来实现session的功能的,但在方便的同时,它也给系统带来了不小的负担。因为每当你获得或更新session时,系统者要对它进行费时的序列化操作。你可以通过对HttpSession的以下几种处理方式来提升系统的性能:

   如果没有必要,就应该关闭JSP页面中对HttpSession的缺省设置: 如果你没有明确指定的话,每个JSP页面都会缺省地创建一个HttpSession。如果你的JSP中不需要使用session的话,那可以通过如下的JSP页面指示符来禁止它:

<%@ page session="false"%>

   不要在HttpSession中存放大的数据对像:如果你在HttpSession中存放大的数据对像的话,每当对它进行读写时,应用服务器都将对其进行序列化,从而增加了系统的额外负担。你在HttpSession中存放的数据对像越大,那系统的性能就下降得越快。

  当你不需要HttpSession时,尽快地释放它:当你不再需要session时,你可以通过调用HttpSession.invalidate()方法来释放它。

  尽量将session的超时时间设得短一点:在JSP应用服务器中,有一个缺省的session的超时时间。当客户在这个时间之后没有进行任何操作的话,系统会将相关的session自动从内存中释放。超时时间设得越大,系统的性能就会越低,因此最好的方法就是尽量使得它的值保持在一个较低的水平。

[resin]resin 配置与使用(转帖)

[resin]resin 配置与使用(转自:http://blogger.org.cn/blog/more.asp?name=mjm0928&id=13262)

心得体会

mjm0928 发表于 2006-4-7 12:56:07

 1. <http host='localhost' port='80'/>

   host参数指定的是服务器,port指定的是http端口,默认是localhost和8080。

2. <srun host='localhost' port='6802'/> 这个是jsp和java Servlet的引擎配置。

3. 使用Resin开发Java Web项目时,需要建立自己的WebApp。

4. Resin中的应用可以有2种方式发布:

       一是在Resin的目录下发布;

       二是打包成War发布。

5. 在resin.conf中查找<web-app>标签,该标签表示一个web应用

     标签中,id属性表示该应用的Web路径。如<web-app id='/test'>,表示该应用在Web上访问的时候应该用http://hostname/test/来访问。app-dir属性表示该应用的实际路径。如<app-dir>d:\resin\doc\test</app-dir>表示该应用在d:\resin\doc\test目录下面。默认值为根下面的和id同名的目录。Resin可以配置3种error-page:404错误也就是文件找不到错误页;Exception违例页;不能连接java引擎页。他们分别可以这样子设置。

 

    404文件找不到页

    <web-app id='/app1'>

     <error-page error-code='404' location='/file_not_found.jsp'/>

    </web-app>

 

    Exception 违例页

    <web-app id='/foo'>

     <error-page exception-type='java.lang.NullPointerException' location='/nullpointer.jsp'/>

    </web-app>

 

    不能连接到srun Servlet引擎错误页

 

    该页设置和应用无关,属于服务器的设置。

    <http-server>

     <error-page exception-type='connection' location='/missing_file.html'/>

    </http-server>

 

    参见下面的语句:

 

    <classpath id='WEB-INF/classes' source='WEB-INF/src' compile='true'/>

 

    id参数的值表示classpath中编译后的class的存放路径;

      source参数的值表示classpath中java源代码的存放路径;

      compile中的值可能是true或者false,表示是否由Resin的srun自动编译java源代码。

      Classpath的设置一般和javaBean或者Servlet的使用有关。id的值表示javaBean的编译好的包存放的根,source的值表示javaBean的java源代码存放的根。Servlet相同。

6.  Servlet的设置

      <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>

    <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>

    <servlet-mapping url-pattern='/servlet/*' servlet-name='invoker'/>

    一般就是指定那些需要通过srun的解析。比如在这里,把*.jsp改成*.jss,其他不变,那么只要在访问时遇到*.jss的文件就和原来遇到*.jsp一样处理。通过这个可以指定解析的引擎,如以下的配置:

    <servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/>

    在Servlet中,也可以指定servlet。如

    <servlet servlet-name='hello' servlet-class='test.HelloWorld'/>

    <servlet-mapping url-pattern='/hello.html' servlet-name='hello'/>

    在servlet-mapping中有个重要的参数case-sensitive 如果在windows上,最好配置成false,忽略大小写,从而和windows的约定一致。

7.  Session的配置

      <session-config>

    <session-max>4096</session-max>

    <session-timeout>30</session-timeout>

    <enable-cookies>true</enable-cookies>

    <enable-url-rewriting>true</enable-url-rewriting>

    <file-store>WEB-INF/sessions</file-store>

    </session-config>

 

    session-max :最大 session数量

    session-timeout :session过期时间,以分钟为单位。

    是否允许cookie :指session是否采用cookies。如果采用cookies,浏览器必须支持session才能使用,发布时建议改成false。enable-url-rewriting和enable-cookies一般配合使用。如果enable-cookies是false,

    enable-url-rewriting应该设成true比较合适。

    file-store :该配置指示服务器是否把session作为文件存放在服务器上。如果把该项注释掉,则在你的web-app目录下的WEB-Inf/sessions目录不保存序列化后的session对象。Session还有jdbc-store配置,对应着把session通过jdbc永久保存在数据库中。其实也就是会话变量的序列化后的保存和重新载入的物理实现。

 

   

    

关于tomcat服务器优化,常遇到的一些简单问题的解决方法(

关于tomcat服务器优化,常遇到的一些简单问题的解决方法 (z)(转自:http://www.21tx.com/dev/2005/01/14/14647.html)

http://dev.21tx.com 2005年01月14日 Blog bon_jovi

每日文章精萃

.Net:解析Visual Basic.NET事件编程 Java:结合Direct Web Remoting使用AJAX

ASP:如何在 dataGrid 上的第一列加上 Che PHP:嵌入式Web视频点播系统实现方法

JSP:在Windows NT 4.0上安装Apache+Servl CGI:Perl程序设计中常用的函数之二

VB:在VB 中调用动态连接库 VC:目录文件查找包装类

配置tomcat的时候,我想禁掉目录列表的访问。结果通过google的搜索找到了一篇不错的文章。除了我想要的,还有一些其他有用的东西。

出处:你的博客网(yourblog.org)

做JSP时,关于tomcat服务器优化,常遇到的一些简单问题的解决方法:

1.如何禁止访问目录列表:

修改tomcat x.x/conf/Web.XML内的一个属性值,就是把true 改为 false

在web.xml里找到以下代码 

<Servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>

          org.apache.catalina.servlets.DefaultServlet

        </servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

把其中的<init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

改为 <init-param>

            <param-name>listings</param-name>

            <param-value>false</param-value>

     </init-param>

2.如果某文件资源没有找到,服务器要报404错误,

  如果执行的某个JSP文件产生 NullPointException

  会显示一些不想异常提示代码,

  为了让用户看到更更友好的页面

  可在自己的虚拟目录的WEB-INF/web.xml中作如下的设置

<error-page>

  <error-code>404</error-code>

  <location>/notFileFound.jsp</location>

</error-page>

<error-page>

  <exception-type>Java.lang.NullPointerException</exception-type>

  <location>/null.jsp</location>

</error-page>

  同理,你也可以设置抛出其它异常时应该显示的页面!

  另外在jsp页面最上方加上这样一句话,

<%@ page isErrorPage="true" errorPage="error.jsp"%>

    也可以捕捉NullPointerException这种异常,此时转向error.jsp

3.设置session的超时时间 (单位:分钟)

<session-config>

   <session-timeout>30</session-timeout>

</session-config>

4.设置默认欢迎页面(当不输入文件名,只输入目录时起作用)

<welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

   <welcome-file>index.html</welcome-file>

   <welcome-file>index.htm</welcome-file>

</welcome-file-list>

------------------------

配置好的web.xml文件如下:

------------------------

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

   <display-name>Tomcat Examples</display-name>

    <description>

      Tomcat Example servlets and JSP pages.

   </description>

<!--

会话超时的设置

设置session 的过期时间,单位是分钟;

-->

<session-config>

<session-timeout>10</session-timeout>

</session-config>

<!-- -->

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

<welcome-file>index.html</welcome-file>

<welcome-file>index.htm</welcome-file>

</welcome-file-list>

<error-page>

<error-code>404</error-code>

<location>/notFileFound.jsp</location>

</error-page>

<error-page>

<error-code>500</error-code>

<location>/common/500.jsp</location>

</error-page>

<!-- 可以对特定的Exception 捕获 -->

<error-page>

<exception-type>java.lang.NullPointerException</exception-type>

<location>/null.jsp</location> </error-page>

<!--

如果某文件资源没有找到,服务器要报404错误,按上述配置则会调用notFileFound.jsp。

如果执行的某个JSP文件产生NullPointException ,则会调用null.jsp

-->

<!--

下面的写法是错误的,少一个 /

<error-page>

<error-code>404</error-code>

<location>filenotfound.jsp</location>

</error-page>

-->

</web-app>

BSD版权翻译(转)

下面就是我们使用的BSD版权内容:(转自:http://www.postgresql.org/docs/faqs.FAQ_chinese.html)

部分版权(c)1996-2005,PostgreSQL 全球开发小组,部分版权(c)1994-1996 加州大学董事

(Portions copyright (c) 1996-2005, PostgreSQL Global Development Group Portions Copyright (c) 1994-6 Regents of the University of California)

允许为任何目的使用,拷贝,修改和分发这个软件和它的文档而不收取任何费用, 并且无须签署因此而产生的证明,前提是上面的版权声明和本段以及下面两段文字出现在所有拷贝中。

(Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.)

在任何情况下,加州大学都不承担因使用此软件及其文档而导致的对任何当事人的直接的, 间接的,特殊的,附加的或者相伴而生的损坏,包括利益损失的责任,即使加州大学已经建议了这些损失的可能性时也是如此。

(IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.)

加州大学明确放弃任何保证,包括但不局限于某一特定用途的商业和利益的隐含保证。 这里提供的这份软件是基于“当作是”的基础的,因而加州大学没有责任提供维护,支持,更新,增强或者修改的服务。

(THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.)

linux常用的文件重定向命令(转帖)

 默认  常用的文件重定向命令(转自:http://www.gd-linux.org/bbs/showthread.php?t=324)

command > filename      把标准输出重定向到一个新文件中

command >> filename      把标准输出重定向到一个文件中(追加)

command 1 > fielname      把标准输出重定向到一个文件中

command > filename 2>&1    把标准输出和标准错误一起重定向到一个文件中

command 2 > filename     把标准错误重定向到一个文件中

command 2 >> filename     把标准输出重定向到一个文件中(追加)

command >> filename 2>&1   把标准输出和标准错误一起重定向到一个文件中(追加)

command < filename >filename2   把command命令以filename文件作为标准输入,以filename2文件作为标准输出

command < filename    把command命令以filename文件作为标准输入

command << delimiter   把从标准输入中读入,直至遇到delimiter分界符

command <&m    把文件描述符m作为标准输入

command >&m    把标准输出重定向到文件描述符m中

command <&-    把关闭标准输入

数据库的导出与导入。

这里介绍的是数据库的导入与导出,

其实,单个数据表的导入与导出也是这些命令,

只是携带的”参数“不同而已。

具体的方法,可以在Shell中运行 “命令 --help” 来查看。

下面只是介绍常用的对数据库的导入与导出方法。

------------------------------

导出数据库。

命令:$pg_dump  testdb >  testdump.dmp

解释:将数据库testdb备份成文件testdump.dmp。包括表的建立与表中的数据。

------------------------------

导入数据库。

命令:

$create -E UTF8  testdb1

$psql  testdb1 < testdump.dmp

解释:

1、先创建一个数据库testdb1,为了将dump文件导入这个数据库,

-E选项是为了指定这个数据库的字符集。取决于导出数据库的字符集。

2、psql 命令使用重定向符”<“将dump文件导入指定的数据库。

3、导入数据库以前除了要指定数据库端的字符集,又是还要设置客户端的字符集,

由于psql是在shell下执行的命令,不能使用\encoding指令,

所以要使用pgclientencoding环境变量,

所以要在导入数据库以前要执行命令:

export pgclientencoding='UTF8'

设置客户端正确的字符集,这里设置的UTF8是一个例子而已。

对于windows用户,可能是需要执行:

SET pgclientencoding='UTF8'

我也没有试过,应该是这句。

添加和删除用户。

添加用户。

createuser 是 SQL 命令 CREATE USER的封装。

命令:createuser  [-a] [-A] [-d]  [-D] [-e] [-P] [-h 主机名] [-p  port]  用户名

说明:

[-a]:允许创建其他用户,相当于创建一个超级用户;

[-A]:不允许此用户创建其他用户;

[-d]:允许此用户创建数据库;

[-D]:不允许此用户创建数据库;

[-e]:将执行过程显示到Shell上;

[-P]:创建用户时,同时设置密码;

[-h 主机名]:为某个主机上的Postgres创建用户;

[-p  port]:与-h参数一同使用,指定主机的端口。

例子:

1、不带参数的创建用户。

$ createuser testuser

Shall the new user be allowed to create databases? (y/n) n

Shall the new user be allowed to create more new users? (y/n) n

CREATE USER

不带参数创建用户时,Postgres会询问此用户的权限。

2、为指定的主机和端口上创建用户。

$ createuser -h 172.28.18.51 -p 5000 -D -A -e testuser

CREATE USER joe NOCREATEDB NOCREATEUSER;

CREATE USER

这个命令为主机172.28.18.51的5000端口创建用户testuser,

此用户不可以创建数据库和其他用户。

3、创建超级用户。

$ createuser -P -d -a -e testuser

Enter password for new user: testuser

Enter it again: testuser

CREATE USER joe PASSWORD 'testuser' CREATEDB CREATEUSER;

CREATE USER

这个命令在本地创建一个超级用户(-a),可以创建数据库(-d),

同时要求设置密码。

由于带了创建数据库和创建用户的参数,

所以Postgres不会像例子1中那样再次询问。

--------------------------------

删除用户。

命令:dropuser [-i] [-h] [-p] [-e]  用户名

解释:

[ -i]:删除用户前,要求确认;

[-h 主机名]:删除某个主机上的Postgres用户;

[-p  port]:与-h参数一同使用,指定主机的端口;

[-e]:将执行过程显示到Shell上。

例子:

1、删除本地的Postgres用户。

$ dropuser testuser

DROP USER

2、删除远程Postgres服务器上的用户。

$ dropuser -p 5000 -h 172.28.18.51 -i -e testuser

User "testuser" and any owned databases will be permanently deleted.

Are you sure? (y/n) y

DROP USER "testuser"

DROP USER

此命令删除主机172.28.18.51(-h)的5000端口(-p)的用户testuser,

并且需要确认(-i)。

psql的常用命令。

^_^

终于可以切入正体了。

-------------------------------

连接Postgres服务器后,

可能第一件事,就是连接到一个数据库进行实际的操作了,

如果您没有在运行 psql 命令时指定连接的数据库,

那么现在可以发出指令来连接一个数据库,

当然,在运行 psql 命令时指定连接的数据库的话,

也可以使用下面这个指令来改变连接的数据库。

命令:\c  数据库名

例子:

testdb=>\c  tesdb1

这条命令将当前连接的testdb数据库改变成 testdb1 。

------------------------------

下面就来看看如何断开与Postgres服务器的连接,

命令:\q

这个命令很简单,执行这个指令后,

就回到了shell提示符下了。

------------------------------

------------------------------

将数据库 导出到 文件标识符

命令:\copy 表名 to 文件名|标准输出 [delimiter  as  '分隔符']  [null  as 'null表示的字符串' ]

        [csv  quote  as '引号的类型'] 

解释:

可以将表中的数据输出到 文件或标准输出。

delimiter as '分隔符'   :说明输出设备的文本中表的每个字段用什么字符分割,默认是tab;

null  as 'null表示的字符串':说明输出设备的文本中表的NULL值的表示方法,默认为“\N”;

csv quote as '引号类型' :说明导出的csv文件中的引号类型是什么,

对于Postgres7.4以前的版本,不支持csv的导入与导出,这时不要使用这个可选项。

例子:

testdb=>\copy  testtable to data.csv  delimiter as ',' csv quote as '"'

这条命令将testtable表中的内容作为SQL语句,导出data.csv文件中。

delimiter as ','   :说明data.txt文本中表的每个字段用“逗号”分割;

csv quote as '"' :说明csv中的引号类型是“双引号”。

像前面说的:这个例子不适用在Postgres7.4以前的版本。

------------------------------

从 文件标识符 导入数据到数据库

命令:\copy 表名 form 文件名|标准输入 [delimiter  as  '分隔符']  [null  as 'null表示的字符串' ]

        [csv  quote  as '引号的类型'] 

解释:

可以从 文件名|标准输入 两个文件设备导入到指定的表中

delimiter as '分隔符'   :说明输入设备的文本中表的每个字段用什么字符分割,

通常是tab,取决于copy出去的文件是什么参数;

null  as 'null表示的字符串':说明输入设备的文本中表的NULL值的表示方法,通常为“\N”;

csv quote as '引号类型' :说明导入的csv文件中的引号类型是什么,

取决于copy出去的文件是什么参数。

例子:

testdb=>\copy  testtable from data.csv  delimiter as ',' csv quote as '"'

这条命令将data.csv文件中的文本,作为sql语句导入到testtable表,

delimiter as ','   :说明data.txt文本中表的每个字段用“逗号”分割;

csv quote as '"' :说明csv中的引号类型是“双引号”。

------------------------------

显示和设置客户端字符集。

命令:\encoding [ encoding ]

解释:

在数据库领域,存在字符集的转换问题,

一般地,服务器端字符集是在建立数据库时指定的,

为了能够在不同的客户终端显示正确的数据,

需要认为的为客户终端设置客户端字符集。

如果服务器端的字符集是EUC_JP(日语字符集),

而客户终端的字符集是GBK,

捡索出来的汉字数据很可能就出现乱码,

所以要统一两边的字符集。

例子:

1、显示客户端字符集

testdb=>\encoding

这条命令没有带可选参数,

所以显示当前的客户终端字符集。

2、设置客户端字符集

testdb=>\encoding 'EUC_JP'

这条命令设置当前的客户终端字符集为“EUC_JP”,

如果服务器端的字符集也是“EUC_JP”,就可以正常显示数据了。

------------------------------

除了上面这些介绍,在这个客户终端可以使用所有标准SQL语句,

对数据库进行操作。

使用psql连接Postgres数据库。

前面已经介绍了Postgres的安装,

和远程连接Postgres服务器的方式,

这次就说一下如何使用Postgres。

命令:psql 【选项】 <数据库名称>

举例:

1、连接本地的Postgres服务器

psql

然后输入密码即可连接testdb。

注意:这种方式使用的很少,

因为没有带任何“选项”,

所以使用的都是默认值。

它将以当前操作系统的登陆名登陆,

并且请求连接Postgres服务器中以当前操作系统的登陆名同名的数据库。

2、连接本地的一个数据库testdb

psql testdb

然后输入密码即可连接testdb。

注意:此时连接Postgres的用户是操作系统的登陆用户。

3、指定一个用户testuser、连接本地的一个数据库testdb

psql -U testuser testdb

然后输入密码即可使用户testuser连接testdb。

注意:此时使用了“-U”选项指定一个Postgres已存在的用户。

至于如何向Postgres添加用户,后面再说。

4、指定一个用户testuser、连接远程的Postgres(172.28.18.51)的一个数据库testdb

psql -U testuser -h 172.28.18.51 testdb

然后输入密码即可使用户testuser连接到主机为172.28.18.51上的testdb。

注意:此时使用了“-h”选项指定一个远程Postgres主机的IP(或主机名)。

要想实现远程连接Postgres主机,请参看【远程连接PostgreSQL服务器。】

至此,就连接上了Postgres服务器,

提示符将变成:

数据库名=>

可以使用SQL语句进行数据库的操作了。