??xml version="1.0" encoding="utf-8" standalone="yes"?>黑人与亚洲人色ⅹvideos,韩日视频在线,婷婷夜色潮精品综合在线http://www.aygfsteel.com/pepsixp/archive/2007/03/12/openldap.html阿姆斯壮阿姆斯壮Mon, 12 Mar 2007 15:12:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2007/03/12/openldap.htmlhttp://www.aygfsteel.com/pepsixp/comments/101451.htmlhttp://www.aygfsteel.com/pepsixp/archive/2007/03/12/openldap.html#Feedback0http://www.aygfsteel.com/pepsixp/comments/commentRss/101451.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/101451.htmlW一ơ接触这个东西,有种很؜q感觉Q啃些文档,安装一个再?..

  1. 下蝲必需的YӞ(x)Berkeley DB ?OpenLDAP
  2. 安装Berkeley DB
    tar -zxvf db-4.5.20.tar.gz
    cd db-4.5.20/build_unix
    ../dist/configure --prefix=/usr/local/BerkeleyDB.4.5
    make
    make intall
  3. 安装OpneLDAP
    q个变量很重要,如果出现错误Q?u>Berkeley DB version mismatchQ就加上吧~
    export LD_LIBRARY_PATH=/data/install/db-4.5.20/build_unix/.libs()
    据说一定要?br />export CPPFLAGS="-I/usr/local/BerkeleyDB.4.5/include"
    export LDFLAGS="-L/usr/local/BerkeleyDB.4.5/lib"

    ./configure --prefix=/usr/local/openldap --enable-ldbm
    make depens
    make
    make test
    敲完回RQ然后去打个盹,醒来?br />make install
  4. 启动Q进入安装目录的libexec
    ./slapd -d 1

如果一切顺利,q行如下命o(h)?x)看到点什么的 ^_^Q?br />ldapsearch -x -s base (objectclass=*) namingContexts

一些可以做参考的OpenLDAP资料Q?/b>

官网Q?a >http://www.openldap.org/
For Win32Q?a >http://lucas.bergmans.us/hacks/openldap/
快速指南:(x)http://www.wzsky.net/html/System/Linux/71587.html
详细介绍Q?a >http://blog.csdn.net/porcupinefinal/archive/2006/04/03/649598.aspx
学习(fn)W记Q?a >http://man.lupaworld.com/content/manage/ringkee/openldap.htm



阿姆斯壮 2007-03-12 23:12 发表评论
]]>
Hibernate OneToOne 复合主键http://www.aygfsteel.com/pepsixp/archive/2007/02/01/97387.html阿姆斯壮阿姆斯壮Thu, 01 Feb 2007 15:55:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2007/02/01/97387.htmlhttp://www.aygfsteel.com/pepsixp/comments/97387.htmlhttp://www.aygfsteel.com/pepsixp/archive/2007/02/01/97387.html#Feedback0http://www.aygfsteel.com/pepsixp/comments/commentRss/97387.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/97387.html主表有两个字D|到副表Q可以取得唯一记录Q但q条记录不定存在Q这两个字段需要做条gqo(h)Q就q个状况?/p>

Hibernate Annotation 配置的注意点Q?/p>

HQL
select  s from ScopeProjection s  left   join fetch s.overridewhere s.hubsite=ands.companyabbr=?

CODE
@Entity
@SequenceGenerator(name
= " SEQ_GEN " , sequenceName = " SCOPEPROJECTIONSEQ " )
public   class  ScopeProjection  implements  Serializable {
    
private  Integer id;
    
private  String hubsite;
    
private  String companyabbr;
    
private  ScopeProjectionOverride override;

    @Id
    @Column(name 
=   " PROJECTIONID " )
    @GeneratedValue(strategy 
=  GenerationType.AUTO, generator  =   " SEQ_GEN " )
    
public  Integer getId() {
        
return  id;
    }

    
public   void  setId(Integer id) {
        
this .id  =  id;
    }

    @Column(name 
=   " HUBSITENAME " , nullable  =   false , insertable  =   false , updatable  =   false )
    
public  String getHubsite() {
        
return  hubsite;
    }

    
public   void  setHubsite(String hubsite) {
        
this .hubsite  =  hubsite;
    }

    @Column(name 
=   " COMPANYABBREVIATION " , nullable  =   false , insertable  =   false , updatable  =   false )
    
public  String getCompanyabbr() {
        
return  companyabbr;
    }

    
public   void  setCompanyabbr(String companyabbr) {
        
this .companyabbr  =  companyabbr;
    }
    
    @OneToOne(cascade 
=  CascadeType.PERSIST)
    @JoinColumns ({
        @JoinColumn(name 
=   " COMPANYABBREVIATION " , referencedColumnName  =   " COMPANYABBREVIATION " ),
        @JoinColumn(name 
=   " HUBSITENAME " , referencedColumnName  =   " HUBSITENAME " )
    })
    
public  ScopeProjectionOverride getOverride() {
        
return  override;
    }

    
public   void  setOverride(ScopeProjectionOverride override) {
        
this .override  =  override;
    }
}

@Entity
@SequenceGenerator(name
= " SEQ_GEN " , sequenceName = " SCOPEOVERRIDESEQ " )
public   class  ScopeProjectionOverride  implements  Serializable {
    
private  Integer id;
    
private  String companyabbr;
    
private  String hubsitename;

    @Id
    @Column(name 
=   " OVERRIDEID " )
    @GeneratedValue(strategy 
=  GenerationType.AUTO, generator  =   " SEQ_GEN " )
    
public  Integer getId() {
        
return  id;
    }

    
public   void  setId(Integer id) {
        
this .id  =  id;
    }

    @Column(name 
=   " COMPANYABBREVIATION " )
    
public  String getCompanyabbr() {
        
return  companyabbr;
    }

    
public   void  setCompanyabbr(String companyabbr) {
        
this .companyabbr  =  companyabbr;
    }

    
public  String getHubsitename() {
        
return  hubsitename;
    }

    
public   void  setHubsitename(String hubsitename) {
        
this .hubsitename  =  hubsitename;
    }
}


阿姆斯壮 2007-02-01 23:55 发表评论
]]>
J2EE中的分页(译)http://www.aygfsteel.com/pepsixp/archive/2005/02/22/1429.html阿姆斯壮阿姆斯壮Tue, 22 Feb 2005 14:33:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2005/02/22/1429.htmlhttp://www.aygfsteel.com/pepsixp/comments/1429.htmlhttp://www.aygfsteel.com/pepsixp/archive/2005/02/22/1429.html#Feedback3http://www.aygfsteel.com/pepsixp/comments/commentRss/1429.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/1429.html阅读全文

阿姆斯壮 2005-02-22 22:33 发表评论
]]>
Tom猫Q让我看清你的五脏六腑(三) http://www.aygfsteel.com/pepsixp/archive/2005/02/18/1305.html阿姆斯壮阿姆斯壮Fri, 18 Feb 2005 14:41:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2005/02/18/1305.htmlhttp://www.aygfsteel.com/pepsixp/comments/1305.htmlhttp://www.aygfsteel.com/pepsixp/archive/2005/02/18/1305.html#Feedback0http://www.aygfsteel.com/pepsixp/comments/commentRss/1305.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/1305.htmlServletqo(h)?/STRONG>
在Java Servlet2.3中定义,能够对Servlet容器的请求和响应对象q行查和修改。所有的qo(h)器类都必d现javax.servlet.Filter接口Q其?STRONG>有三个需要实现的Ҏ(gu)
Q?BR>init(FilterConfig)Q一个初始化Ҏ(gu)QServlet容器创徏qo(h)器类后将调用q个Ҏ(gu)Q在此方法中可以dweb.xml文g中的Servletqo(h)器的初始化参数?BR>doFilter(ServletRequest,ServletResponse,FilterChain)Q实际的qo(h)操作QFilterChain参数用于讉K后面的过滤器?BR>destroy()Q用来释放某些Servletqo(h)器占用的资源?/P>

下面是一个解决中文ؕ码问题很有用的一个过滤器Q?/P>

public class SetCharacterEncodingFilter implements Filter {
    
    
public void destroy() {}
  
    
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
       throws IOException, ServletException 
{

    request.setCharacterEncoding(
"GB2312");
    chain.doFilter(request, response);
    }


    
public void init(FilterConfig filterConfig) throws ServletException {}
}

发布Servletqo(h)?/STRONG>Q在web.xml在文件中加入<filter>元素?lt;filter-mapping>元素

下面的例子中Servletqo(h)器会(x)qo(h)所有的URLQ?/P>

<filter> 
<filter-name>Set Character Encoding</filter-name> 
<filter-class>SetCharacterEncodingFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern> 
</filter-mapping>

串连Servletqo(h)?/STRONG>
多个Servletqo(h)器可以协同工作,Servlet容器根据它们在web.xml中定义的先后序Q依ơ调用它们的doFilter()Ҏ(gu)?BR>工作程如下Q?BR> Code1; // 表示调用chain.doFilter()前面的代?BR> chain.doFilter();  // 表示调用下一个过滤器的doFilter()Ҏ(gu)
 Code2; // 表示调用chain.doFilter()后面的代?/P>

自定义JSP标签?BR>此技术在JSP 1.1版本中才出现Q用来重用某些复杂的逻辑q算和事务,或定义JSP王爷的输出内容和格式。制作一个完整的自定义标{序,包含3个步骤:(x)

1. 创徏标签的处理类
此类必须扩展javax.servlet.jsp.TagSupportcL者javax.servlet.jsp.BodyTagSupportcR?BR>以TagSupportcMؓ(f)例,先了解一下这个类的主要方法:(x)
doStartTag()QJSP容器遇到自定义标{起始标志时调用该Ҏ(gu)Q?BR>doEndTag()QJSP容器遇到自定义标{l束标志时调用该Ҏ(gu)Q?BR>setValue(String k,Object o)Q在标签处理cM讄key/value;
getValue(String k)Q在标签处理cMҎ(gu)keyq回匚w的value;
removeValue(String k)Q在标签处理cM删除key/value;
setPageContext(PageContext pc)Q设|PageContext对象Q该Ҏ(gu)在调用doStartTag()和doStartTag()前调用;
setParent(Tag t)Q设|嵌套当前标{上层标签的处理类Q该Ҏ(gu)在调用doStartTag()和doStartTag()前调用;
getParent()Q返回嵌套当前标{上层标签的处理类?BR>
首先调用setPageContext(PageContext pc)和setParent(Tag t)Q设|TagSupportcȝ两个重要属性倹{?BR>
如果遇到起始标志Q调用doStartTag()Q此Ҏ(gu)q回一个整数|它有两个可选|(x)Tag.SKIP_BODY(标签之间的内容被忽略)和Tag.EVAL_BODY_INCLUDE(标签之间的内Ҏ(gu)常执??BR>例如Q?lt;prefix:mytag>test</prefix:mytag>Q如果遇上Tag.SKIP_BODYQtest字符串不?x)显C在面上;如果遇上Tag.EVAL_BODY_INCLUDEQtest字符串将?x)显C在面上?BR>
如果遇到l束标志Q调用doEndTag()Q此Ҏ(gu)也返回一个整数|它有两个可选|(x)Tag.SKIP_PAGE(表示立刻停止执行JSP面Q网上未处理的静态内容和JSPE序均别忽略QQ何已有的输出内容立刻q回到客L(fng)Q?和Tag.EVAL_PAGE(表示按正常流El执行JSP面)?BR>
如果自定义标{֌含自定义的属性,例如Q?lt;prefix:mytag attribute1="value1">Q那么处理类中应该将q个属性做为成员变量,q提供一lget和setҎ(gu)Q?BR>private int attribute1;
public void setAttribute1(int value){
 this.attriubte1 = value;
}
public int getAttribute1(){
 return attribute1;
}

下面是一个用来验证用L(fng)陆的标签处理cM子:(x)

public class ValidateLoginTag extends TagSupport{
    
private String name;
    
private String password;
    
private Log log = LogFactory.getLog(ValidateLoginTag.class);

    
public int doEndTag() throws JspException{

       
if(name.equals("pepsixp"&& password.equals("888888")){
             
return(EVAL_PAGE);
          }

        
return (SKIP_PAGE);
    }


    
public String getName() {
        
return name;
    }


    
public void setName(String name) {
        
this.name = name;
    }


    
public String getPassword() {
        
return password;
    }


    
public void setPassword(String password) {
        
this.password = password;
    }

}

2.创徏TLDQTag Library Descriptor(标签库描q文?
TLD文g中元素可以分Zc:(x)<tablib>?lt;tag>?lt;attribute>
<tablib>Q设定标{ֺ的相关信息,包含的子元素有tlibversion、jspversion、shortname、uri、info、tag?BR><tag>Q用来定义一个标{,包含的子元素有name、tagcalss、bodycontent、info、attribute?BR>bodycontent的说明:(x)有三个可选值empty、JSP、tagdependentQempty表示标签中没有bodyQJSP表示body中可以加入JSPE序代码Qtagdependent表示body的内Ҏ(gu)标签q行处理?BR><attribute>Q用来定义标{属性,包含的子元素有name、required、rtexprvalue?BR>rtexprvalue的说明:(x)表示是否可以使用<%=...%>cd的表辑ּQ?BR>例如Q?lt;prefix:mytaglib attribute1="<%=name%>">
下面是一个简单的TLD文gQ?/P>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">

<taglib>
    
<tlibversion>1.2</tlibversion>
    
<jspversion>1.1</jspversion>
    
<shortname>MY Tag Library</shortname>
    
<uri>http://www.aygfsteel.com/pepsixp/</uri>
    
<info></info>
    
<tag>
        
<name>ifLogin</name>
        
<tagclass>com.akazam.struts.taglib.ValidateLoginTag</tagclass>
        
<bodycontent>empty</bodycontent>
        
<info></info>
        
<attribute>
            
<name>name</name>
            
<required>true</required>
            
<rtexprvalue>true</rtexprvalue>
        
</attribute>
        
<attribute>
            
<name>password</name>
            
<required>true</required>
            
<rtexprvalue>true</rtexprvalue>
        
</attribute>
    
</tag>
</taglib>

实际中的使用Q?BR><%@ taglib uri="/tags/test" prefix="test" %>
<test:ifLogin name="pepsixp" password="888888"/>

3.在web应用中用标{?/STRONG>
先要在web.xml文g加入声明引用标签所在的标签Q?BR>

<taglib>
        
<taglib-uri>/tags/test</taglib-uri>
        
<taglib-location>/WEB-INF/test.tld</taglib-location>
</taglib>


参考:(x)《Tomcat与JavaWeb开发技术详解?/FONT>



阿姆斯壮 2005-02-18 22:41 发表评论
]]>
Tom猫Q让我看清你的五脏六腑(二)http://www.aygfsteel.com/pepsixp/archive/2005/02/16/1261.html阿姆斯壮阿姆斯壮Wed, 16 Feb 2005 15:29:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2005/02/16/1261.htmlhttp://www.aygfsteel.com/pepsixp/comments/1261.htmlhttp://www.aygfsteel.com/pepsixp/archive/2005/02/16/1261.html#Feedback0http://www.aygfsteel.com/pepsixp/comments/commentRss/1261.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/1261.html

安全?/STRONG>
q是Tomcat服务器用来保护Web应用资源的一U机制。一个用户可以拥有一个或多个角色Q每个角色限定了可访问的Web资源Q这样就用户和W(xu)eb资源对应h了。在org.apache.catalina.Realm接口中声名了用户名、口令和角色相管理的Ҏ(gu)QTomcat5提供?个实现这一接口的类Q分别ؓ(f)QMemoryRealm(XML文gd)、JDBCRealm(JDBC驱动E序d)、DataSourceRealm(JNDI数据源读?、JNDIRealm(JNDI providerdLDAP的目录服务器信息)?/FONT>

Web资源的设|?BR>需要在web.xml文g中加?lt;security-constraint>?lt;login-config>?lt;security-role>元素?BR>例如在Tomcat的admin应用中的配置Q?/FONT>

<security-constraint>
    <display-name>Tomcat Server Configuration Security Constraint</display-name>
    <web-resource-collection>
    <web-resource>Protected Area</web-resource>
        <url-pattern>*.htm</url-pattern>
        <url-pattern>*.jsp</url-pattern>
        <url-pattern>*.do</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>

上面的代码表明:(x)只有admin角色才能讉Ka(chn)dmin应用中的*.jsp?.do?.html资源?BR>另一个例子是jsp-examples应用Q?BR>

<sercurity-constraint>
    <display-name>Tomcat Server Configuration Security Constraint</display-name>
    <web-resource-collection>
        <web-resource>Protected Area</web-resource>
        <url-pattern>/security/protected/*</url-pattern>
        <http-method>DELETE</http-method>
     
<http-method>GET</http-method>
     
<http-method>POST</http-method>
     
<http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>tomcat</role-name>
     
<role-name>role1</role-name>
    
</auth-constraint>
</security-constraint>

上面的代码表明:(x)只要tomcat和role1角色才可以以DELETE、GET、POST和GET方式讉Kjsp-exzmples应用URL?security/protected/下的资源?BR>在web.xml中加?lt;login-config>元素Q系l会(x)以对话框的方式进行登?BR>

<login-config>
    <auth-method>FORM</auth-method>
 
<realm-name>Tomcat Configuration Form-Baseed Authenticaton Area</realm-name>
 
<from-login-config>
       
<from-login-page>/login/login.jsp</from-login-page>
    
<from-error-page>/error.jsp</from-error-page>
 
<from-login-config>
</login-config>

<auth-method>有三个可选项QBASIC、DIGEST、FORM?BR>BASICQ基本验证:(x)讉K受保护资源时Q会(x)弹出一对话框。要求输入用户名和密码,如果q箋3ơ失败后Q会(x)昄一个错误页面。这个方法的~点是用户名和密码的数据传输采用的是Base64~码(可读文本)Q是非常不安全的?BR>DIGESTQ摘要验证:(x)数据采用MD5对用户名和密码进行加密,然后再传输,昄q种Ҏ(gu)很安全?BR>FORMQ表单验证:(x)可以使用自定义的登陆面Q但用户名对应的文本框名U必Lj_username,密码为j_passwordQ且表单actiongؓ(f)j_security_check?BR>在web.xml中加?lt;security-role>元素Q指明这个Web应用应用的所有角色的名字

<security-role>
    <description>The role that is required to lon in to the Administration Application.</description>
 
<role-name>admin</role-name>
 
<role-name>friend</role-name>
</security-role>

你可以调用HttpRequeset接口的getRemoteUser()Ҏ(gu)q回当前用户的名字:(x)<%=request.getRemoteUser()%>


内存?/STRONG>Q由org.apache.catalina.realm.MemoryRelamcd?BR>猫启动Ӟ自动d<%CATALINA_HOME%>/conf/tomcat-users.xml文gQ要在Web应用中用,可以在对应的<Context>元素内加入如下内容:(x)<Realm className="org.apache.catalina.realm.MemoryRelam"/>

JDBC?/STRONG>Q通过JDBC驱动从数据库中直接读取验证信息,通过验证后,信息?x)存储在session中?BR>在mysql中新Z张表Q?/P>

create table users{user_name varchar(15not null primary key,user_pass varchar(15not null };
create table usr_roles{usr_name varchar(15not null,role_name varchar(15not null,
  primary key(user_name,role_name)};

然后在server.xml中加入:(x)

<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="com.mysql.jdbc.Driver" 
             debug
="0" connectionURL="jdbc:mysql://localhost/tomcatusers" connectionName="roor" 
             connectonPassword
="" userTable="users" userNameCol="user_name" 
             userCredCol
="user_pass" userRoleTable="user_roles" roleNameCol="role_name">

DataSource?/STRONG>Q和JDBC域很cMQ只不过讉K数据库的方式不同Q这个是使用JNDI DataSource来访问数据库的?BR>先在web.xml中加入安全约束,在和JDBC域一hZ张表Q然后在server.xml文g?lt;GlobalNamingResources>元素下添加如下内容:(x)

<Resource name="jdbc/tomcatusers" auth="Container" type="javx.sql.DataSource"/>
<ResourceParams name="jdbc/tomcatusers">
    <parameter>
    
<name>factory</name>
    
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
 
</parameter>
 
<parameter>
     
<name>maxActiove</name>
    
<value>100</value>
 
</parameter>
 
<parameter>
    
<name>maxIdle</name>
    
<value>30</value>
 
</parameter>
 
<parameter>
     
<name>maxWait</name>
    
<value>10000</value>
 
</parameter>
 
<parameter>
     
<name>username</name>
     
<value>root</value>
 
</parameter>
 
<parameter>
     
<name>password</name>
    
<value></value>
 
</parameter>
 
<parameter>
     
<name>driverClassName</name>
    
<value>com.mysql.jdbc.Driver</value>
 
</parameter>
 
<parameter>
     
<name>url</name>
    
<value>jdbc:mysql://localhost/tomcatusers?autoReconnect=true</value>
  
</parameter>
</ResourceParams>

注意QTomcat的JNDI资源必须配置?lt;GlobalNamingResources>元素下,服务器才能找刎ͼ否则?x)出现NameNotFoundExceptionQ低于Tomcat5.0.12的版本,即正确配置了DataSourceRealmQ也?x)出现找不到JNDI DataSource的异常,q个猫的一个bugQ在web.xml中是不需要配|?lt;resource-ref>元素的,因ؓ(f)Web应用q不?x)访问这个DataSource?BR>当然server.xmlq需要添加和JDBC域几乎相同的代码Q?/P>

<Realm className="org.apache.catalina.realm.DataSourceRealm" 
             driverName
="com.mysql.jdbc.Driver" debug="0" 
             connectionURL
="jdbc:mysql://localhost/tomcatusers" connectionName="roor" 
             connectonPassword
="" userTable="users" userNameCol="user_name" 
             userCredCol
="user_pass" userRoleTable="user_roles" roleNameCol="role_name">

Tomcat阀
由org.apache.Catalina.Value接口定义Q能够对Catalina容器接收的HTTP Requestq行预处理,是小猫特有的功能Q可以加入到3U容器中(Engine、Host、Context)?BR>
客户讉K日志阀(Access Log Value)Q?能够可以的Request信息写入到日志中。可以记录页面访问的ơ数、用户Sessionzd和用户验证信息等?BR>例如Q?lt;Value className="org.apache.catalina.AccessLogValue" directory="logs" prifix="localhost_access_log" suffix=".txt" pattern="%h%l%u%t%s%r%s%b" resolveHost="true">
上面的pattern值可以用commonQ一个默认的倹{?BR>pattern属性规定日志的格式和内容:(x)%aQ远EIP地址Q?AQ本地IP地址Q?bQ发送的字节敎ͼ不包括HTTP HeaderQ?hQ远E主机名Q?HQ客戯求所用的协议Q?lQ?-";%mQ请求的Ҏ(gu)Q?pQ接受请求的本地服务器断开Q?qQ查询字W串Q?rQ用戯求的W一行内容;%sQ响应HTTP Request的状态码Q?SQ用户Session IDQ?tQ时_(d)%uQ验证的用户名;%UQ请求URL路径Q?vQ本地服务器名?BR>
q程地址qo(h)?/STRONG>(Remote Address Filter)Q根据IP地址军_是否接受客户的请求?BR>例如Q?lt;Value className="org.apache.catalina.RemoteAddrValue" allow="127.0.0.1" deny="127.111.*"/>

q程Lqo(h)?/STRONG>(Remot Host Filter)Q根据主机名军_是否接受h?BR><Value className="org.apache.catalina.RemoteHostValue" allow="localhost" deny="monster*"/>

客户h记录?/STRONG>(Request Dumper)Q把客户h的详l信息记录在日志文g中,q里的日志文件是?lt;Logger>元素?BR>假定在server.xml中localhost?lt;Host>元素下已l配|了<Logger>元素Q?BR>

<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhos_log." 
              suffix
=".txt" timestamp="true"/>

然后再添?lt;Value>元素Q?/P>

<Value className="org.apache.catalina.RequestDumperValue"/>


参考:(x)《Tomcat与JavaWeb开发技术详解?/FONT>



阿姆斯壮 2005-02-16 23:29 发表评论
]]>
Tom猫Q让我看清你的五脏六腑(一Q?/title><link>http://www.aygfsteel.com/pepsixp/archive/2005/02/15/1234.html</link><dc:creator>阿姆斯壮</dc:creator><author>阿姆斯壮</author><pubDate>Tue, 15 Feb 2005 13:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/pepsixp/archive/2005/02/15/1234.html</guid><wfw:comment>http://www.aygfsteel.com/pepsixp/comments/1234.html</wfw:comment><comments>http://www.aygfsteel.com/pepsixp/archive/2005/02/15/1234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pepsixp/comments/commentRss/1234.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pepsixp/services/trackbacks/1234.html</trackback:ping><description><![CDATA[<P>q只猫玩了它差不多也有一q多了,q没仔细瞅瞅长个什么样。当它耍性子的时候,常常弄的我手x措,因ؓ(f)不懂它说出的一大堆׃八糟的洋话。ؓ(f)了能让它说startstartQ说downdownQ下面要开始一D|训兽师的l历 ^_^?/P> <P><STRONG>宠物?BR></STRONG>Jakarta Tomcat服务器是一UServlet/JSP容器Q经历了3.x?.0.x?.1.x的变q,现在最新的版本?.0.xQ支持Servlet2.4和JSP2.0规范Q从apache|站上下载Tomcat 5Q在环境变量中配|一下JAVA_HOMEQ小猫就能生灉|现的跑v来了。若猫启动p|QDOSH口?x)自动关闭,若运行catalina run命o(h)DOSH口是不?x)自动关闭的?/P> <P>tomcat中有三个攄java库的地方Q分别是/server/lib?shared/lib?common/lib?BR>区别Q?server/lib Q?其中的jar文g只能被tomcat服务器访问?BR>/shared/lib Q?其中的jar文g可以被所有的Web应用讉KQ但不能被tomcat服务器访问到?BR>/common/lib Q?Web服务和tomcat服务器都可以讉K的到?/P> <P><STRONG>server.xml文g解析</STRONG> Q?文g位置?lt;%CATALINA_HOME%>/conf/server.xml</P> <P><STRONG>配置虚拟L<BR></STRONG>Host元素代表虚拟LQ在同一个Engine元素下可以配|多个虚拟主机。打开server.xml文g可以发现Engine元素下已l有一个名为localhost的Host元素了,可以在它后面加入下列代码Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">Host </SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="www.myname.com"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> appBase</SPAN><SPAN style="COLOR: #0000ff">="c:\myname"</SPAN><SPAN style="COLOR: #ff0000"> unpackWar</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #ff0000"> autoDeploy</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff">    <</SPAN><SPAN style="COLOR: #800000">alias</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">www.myname1.com</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">alias</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">alias</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">www.myname2.com</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">alias</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">Context </SPAN><SPAN style="COLOR: #ff0000">pathh</SPAN><SPAN style="COLOR: #0000ff">="/helloapp"</SPAN><SPAN style="COLOR: #ff0000"> docBase</SPAN><SPAN style="COLOR: #0000ff">="helloapp"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> reloadable</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">Host</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P><STRONG>Session的?/STRONG><BR>Session是一U用来跟t用L(fng)态的机制Q那它是怎么实现的呢QServlet容器通过在客L(fng)览器中保存一个Session ID来跟tSessionQ调用session.getID()可以看到你的Session ID是多。如果客L(fng)支持CookieQ就把Session ID作ؓ(f)Cookie保持在浏览器中,现在l大多数览器都?x)把Cookie功能打开Q但如果用户止了Cookie呢?Java Servlet API中提Z另外一U机ӞServlet容器可以重写客户requst的URLQ把Session IDd到URL信息中,HttpServletResponse接口提供了这L(fng)Ҏ(gu)Qpublic String encodeURL(String url)Q先判断如果没有启用SessionQ例如jsp?lt;%@ page session="false"%>或执行了session.invalideate()Q那么直接返回urlQ在判断客户端师父支持CookieQ如果不支持Q就在url中加入Session ID的信息,然后q回修改后的url?/P> <P><STRONG>Session的管?BR></STRONG>当一个sesson开始时QServlet容器?x)创Z个HttpSession对象Q在某些情况下把q些Httpsession对象从内存中转移到文件系l中或数据库中,需要访问的时候在把它们蝲入到内存中来。这样做的好处有两点Q节U了内存的消耗,当web服务器生故障时Q还可以从文件系l或数据库中恢复Session的数据?BR>对于Session的管理,猫提供了两个实现类Qorg.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager?BR><STRONG>StandardManager</STRONG> Q是默认的方法,当Tomcat服务器重启或重蝲的时候,?x)把Session对象保存?BR><%CATALINA_HOME%>/work/Catalina/honstname/applicatonname/SESSIONS.ser(默认?文g中,每个对象对应一个文Ӟ以Session ID为文件名Q例如:(x)</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">Context </SPAN><SPAN style="COLOR: #ff0000">path</SPAN><SPAN style="COLOR: #0000ff">="/helloapp"</SPAN><SPAN style="COLOR: #ff0000"> docBase</SPAN><SPAN style="COLOR: #0000ff">="helloapp"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> reloadable</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">Manager </SPAN><SPAN style="COLOR: #ff0000">className</SPAN><SPAN style="COLOR: #0000ff">="org.apache.catalina.session.StandardManager"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> <BR>      maxActiveSessions<FONT color=#0000ff>="-1"</FONT> checkInterval<FONT color=#0000ff>="60"</FONT></SPAN><SPAN style="COLOR: #ff0000"> <FONT color=#0000ff>/</FONT></SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">Context</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P>参数说明QcheckIntervalQ检查session是否q期的时间间隔,以秒为单位,~省值是60U;<BR>maxActiveSessionsQ可处于zd状态的session数?BR><BR><STRONG>PersistentManager</STRONG> Q提供了更加灉|的管理方式,h定w能力Q可以及(qing)时把Session备䆾到Session Store中,可以控制内存中Session的数量?BR>猫q提供了实现<STRONG>持久化Session Store</STRONG>的接口,org.apache.catalina.StoreQ目前提供了两个具体实现c:(x)org.apache.catalina.FileStore和org.apache.catalina.JDBCStore?BR>server.xml中的配置File Store Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">Context </SPAN><SPAN style="COLOR: #ff0000">path</SPAN><SPAN style="COLOR: #0000ff">="/helloapp"</SPAN><SPAN style="COLOR: #ff0000"> docBase</SPAN><SPAN style="COLOR: #0000ff">="helloapp"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> reloadable</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">Manager </SPAN><SPAN style="COLOR: #ff0000">className</SPAN><SPAN style="COLOR: #0000ff">="org.apache.catalina.session.PersistentManager"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="0"</SPAN><SPAN style="COLOR: #ff0000"> saveOnRestart</SPAN><SPAN style="COLOR: #0000ff">="true"</SPAN><SPAN style="COLOR: #ff0000"> <BR>          maxActiveSessions</SPAN><SPAN style="COLOR: #0000ff">="-1"</SPAN><SPAN style="COLOR: #ff0000"> minIdleSwap</SPAN><SPAN style="COLOR: #0000ff">="-1"</SPAN><SPAN style="COLOR: #ff0000"> maxIdleSwap</SPAN><SPAN style="COLOR: #0000ff">="-1"</SPAN><SPAN style="COLOR: #ff0000"> maxIdleBackup</SPAN><SPAN style="COLOR: #0000ff">="-1"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">Store </SPAN><SPAN style="COLOR: #ff0000">className</SPAN><SPAN style="COLOR: #0000ff">="org.apache.catalina.session.FileStore"</SPAN><SPAN style="COLOR: #ff0000"> directory</SPAN><SPAN style="COLOR: #0000ff">="mydir"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT></</SPAN><SPAN style="COLOR: #800000">Manager</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">Context</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P>参数说明QsaveOnRestartQ服务器关闭Ӟ是否所有的session保存到文件中Q?BR>maxActiveSessionsQ可处于zd状态的session敎ͼ<BR>minIdleSwap/maxIdleSwapQsession处于不活动状态最?长时?s)Qsesson对象转移到File Store中;<BR>maxIdleBackupQ超q这一旉Q将session备䆾?Q?表示没有限制)<BR><BR><STRONG>JDBCStore配置的区别:(x)</STRONG></P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">Store </SPAN><SPAN style="COLOR: #ff0000">calssName</SPAN><SPAN style="COLOR: #0000ff">="org.apache.catalina.JDBCStore"</SPAN><SPAN style="COLOR: #ff0000"> driverName</SPAN><SPAN style="COLOR: #0000ff">="com.mysql.jdbc.Driver"</SPAN><SPAN style="COLOR: #ff0000"> <BR>    connectionURL</SPAN><SPAN style="COLOR: #0000ff">="jdbc:mysql://localhost/tomsessionDB?user=root&password="</SPAN><SPAN style="COLOR: #ff0000"> <BR>    sessionTable</SPAN><SPAN style="COLOR: #0000ff">="tomcat_session"</SPAN><SPAN style="COLOR: #ff0000"> sessionIdCol</SPAN><SPAN style="COLOR: #0000ff">="session_id"</SPAN><SPAN style="COLOR: #ff0000"> sessionDataCol</SPAN><SPAN style="COLOR: #0000ff">="session_data"</SPAN><SPAN style="COLOR: #ff0000"> <BR>    sessionValidCol</SPAN><SPAN style="COLOR: #0000ff">="session_valid"</SPAN><SPAN style="COLOR: #ff0000"> sessionMaxInactiveCol</SPAN><SPAN style="COLOR: #0000ff">="max_inactive"</SPAN><SPAN style="COLOR: #ff0000"> <BR>    sessionLastAccessedCol</SPAN><SPAN style="COLOR: #0000ff">="last_access"</SPAN><SPAN style="COLOR: #ff0000"> sessionAppCol</SPAN><SPAN style="COLOR: #0000ff">="app_name"</SPAN><SPAN style="COLOR: #ff0000"> checkInterval</SPAN><SPAN style="COLOR: #0000ff">="60"</SPAN><SPAN style="COLOR: #ff0000"> debug</SPAN><SPAN style="COLOR: #0000ff">="99"</SPAN><SPAN style="COLOR: #ff0000"> </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><STRONG><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></STRONG></SPAN></DIV></DIV> <P><STRONG>Session失效旉的设?BR></STRONG>在web.xml文g?位于<servlet-mapping>?lt;welcome-file-list>元素之间加入如下代码Q单位ؓ(f)分钟Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">session-config</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">   <BR></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>    </FONT><</SPAN><SPAN style="COLOR: #800000">session-timeout</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">60</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">session-timeout</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">session-config</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P><STRONG>Tomcat的adminq_和managerq_</STRONG><BR>q是Tomcat中自带的两个Web应用Q位?lt;%CATALINA_HOME%>/server/webapps/admin(manager)Q访问地址是http://localhsot:8080/admin(manager)。要讉Kq两个Web应用Q需要在<BR><%CATALINA_HOME%>/conf/tomcat-users.xml中添加如下内容:(x)<BR><user username="admin" password="1234" role="admin"/>           //对应admin Web应用<BR><user username="manager" password="1234" role="manager"/>   //对应manager Web应用<BR><BR><STRONG>adminq_</STRONG>把所有可配置的信息分Zc:(x)Tomcat Server、Resources、User Definition?BR>Tomcat ServerQ相当于server.xml中的<Server>元素?qing)其子元素?lt;Service>?lt;Host>?lt;Context>?lt;Resources>?lt;Date Source>?BR>ResourcesQ相当于server.xml中的<GlobalNamingResources>Q共有四U资源:(x)Date Source(JNDI数据?、Mail Sessioin(JNDI Mail Session资源)、Environment Entry(环境变量)、User Database(安全域中的用h据库)?BR>User DefinitionQ与tomcat-users.xml相对应?BR><BR><STRONG>managerq_</STRONG>Q列出来所有Web应用和状态,q提供了Start、Stop、Reload?Undeploy命o(h)Q还可以发布<BR><%CATALINA_HOME%>/webapps目录下的Web应用或系l文件Q意位|的WAR文g?/P> <P><BR><FONT color=#808080>参考:(x)《Tomcat与JavaWeb开发技术详解?/FONT></P><img src ="http://www.aygfsteel.com/pepsixp/aggbug/1234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pepsixp/" target="_blank">阿姆斯壮</a> 2005-02-15 21:13 <a href="http://www.aygfsteel.com/pepsixp/archive/2005/02/15/1234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƽ</a>| <a href="http://" target="_blank">΢</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">üɽ</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank">ֶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank">ൺ</a>| <a href="http://" target="_blank">ڶ</a>| <a href="http://" target="_blank">Ļ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">կ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">޳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ݸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>